简介:围绕电子竞赛备赛整理的这份文档,面向初次参赛的高校学生与指导教师,梳理控制类、仪器仪表类题目中反复出现的硬件模块与软件程序,帮助读者在有限时间内搭起可复用的模块库,减少临场选型与调试的盲目。全文由一份 doc 文档承载,压缩包 38KB、共 1 个文件,按「常用模块—常用程序—常用知识」三条主线组织:模块部分逐项说明电源(12V/9V/5V/3.3V 与 LM337 负压)、最小系统、键盘与液晶、AD/DA、温湿度压力角度声光传感器、集成运放、可编程逻辑、电机与继电器等器件的选型用法;程序部分覆盖 LCD 显示、键盘输入、SPI 传输、AD 采集滤波、PWM 调速与细分、延时计时及寻迹避障测速测距算法;末尾还提示模电数电基础与单片机、ARM、FPGA 的学习方向。已有 3077 人学习,可当作赛前清单对照自查,也适合作为模块采购与程序移植的速查手册。
1. 模块箱里最该先装的不是传感器:电赛备赛的取舍顺序
我见过最典型的一幕是:赛前整理模块箱,传感器塞了满满一盒,光耦、霍尔、超声波、光电开关样样齐全,真正卡住调试的却是三件事——3.3V 那一路带不动无线模块、光耦出来的波形是一段歪歪扭扭的模拟量、比较器压根没带。电赛这种四天三夜的活,决定作品能不能跑起来的,往往不是最贵的那颗传感器,而是电源、最小系统、信号调理这些没人愿意多看一眼的地基件。
这篇按我自己备模块、打控制类题目的顺序拆开讲:先按电压等级把供电算清楚,再按“感知—调理—执行”配硬件,然后把显示、键盘、AD 采集、PWM 这些程序做成赛前就能直接抄的资产,中间夹一章赛后复盘出来的翻车记录。新手可以照着清单买,熟手能对上自己当年踩坑的地方。
2. 供电与最小系统:12V/9V/5V/3.3V 和 I/O 余量一次算清
供电这块最容易被当成“买几个降压模块就完事”,实际上它是整台作品里唯一一个出错就全盘停摆的部分。我的习惯是先画一张电流预算表,把每一路的负载、峰值电流、允许压降写出来,再决定用几块模块、怎么接地。没有这张表,后面的传感器选型再漂亮也只是纸面功夫。
2.1 四种电压怎么排优先级
12V 主要喂功率器件:直流电机、步进电机、继电器、电磁阀;9V 现在用得少了,多数是给某些老式运放板或独立供电的蜂鸣器;5V 是数字主力,最小系统、液晶、数码管、编码器都在这;3.3V 给低功耗主控和一部分传感器、无线模块。排优先级的原则很直接:先保 5V 和 3.3V 干净稳定,再谈 12V 有多大的功率余量。
| 电压 | 主要负载 | 常见来源 | 建议备件 | 容易忽略的点 |
|---|---|---|---|---|
| 12V | 直流电机、步进电机、继电器 | 适配器或电池组 | 独立 12V 模块 + 保险丝 | 电机启动瞬间把整条母线拉低 |
| 9V | 部分运放板、老式模块 | 降压或独立电池 | 一块可调降压 | 9V 层叠电池带不动任何电机 |
| 5V | 最小系统、LCD、数码管、编码器 | 降压模块 | 至少两块,留一块备用 | 数码管动态扫描电流被严重低估 |
| 3.3V | 低功耗主控、部分传感器、无线模块 | LDO 或 DC-DC | LDO 与 DC-DC 各一块 | 无线发射瞬时电流导致主控复位 |
电流余量我一般按实测峰值再留 50%,不是按铭牌标称值留。数码管四位动态扫描,看上去每段只有几毫安,四位数一起亮、占空比 25% 的时候,5V 那一路的瞬时电流能翻好几倍,降压模块选小了就会看到亮度随显示内容跳动。接地也别图省事,功率地和信号地最后汇到一个点,电机回路和 ADC 参考地用同一段粗线,是血泪经验里最便宜也最有效的一条。
2.2 电池方案与升压模块的账
用电池就意味着要算续航,而不是“装上去能亮就行”。单节锂电 3.7V 升到 5V,效率按 85% 估,续航大致等于电池容量(Ah)乘标称电压再乘效率,除以整机平均功率。举个能落地的例子:2000mAh 的单节电池、5V 输出、整机平均 1.2W,理论续航约 5 小时出头,实际打七折,因为电机启动和无线发射都是脉冲负载。
升压模块真正麻烦的地方在瞬态。电池内阻加上线阻,电机一启动母线电压凹下去一大截,主控欠压复位,现象就是“一动就重启”。我的做法是在升压输出端并 470μF 到 1000μF 的电解电容,电机那一路单独再并一个小容值瓷片,同时在软件里加电池电压监测,掉到阈值以下就降速或报警,别等到算法失灵才发现是电压问题。
2.3 负压需求:LM337 什么时候必须焊
需要负压的场景其实很集中:运放要处理正负双向摆动的小信号,比如电桥、振动、音频这类传感器输出;或者某颗必须双电源供电的芯片。判断标准很简单——传感器的输出会不会跑到零以下。如果只会从 0 摆到某个正电压,单电源加虚地就够了,没必要动负压。
真要上负压,LM337 和 LM317 配成对称的正负稳压是最省事的组合。注意几个坑:LM337 的输入必须是负压,管脚顺序和 317 不一样,照着 317 的板子改会直接冒烟;输入端的滤波电容极性要反;散热片如果和外壳共地,得加绝缘垫片。我一般会把负压做成一块独立小板,用排针和主板连接,万一烧了直接换板,不用整机拆线。
2.4 最小系统与 I/O 余量
最小系统板至少备两套,一套在车上,一套在桌上调程序。板子上的每一根 I/O 都引到排针,旁边用丝印标好端口号,调试时不用翻原理图。测试点也要留:电源、地、复位、每个通信口各一个,示波器探头一夹就能看波形。
I/O 不够是控制类题目的常事。我的经验是先做一张 I/O 预算表,把每个外设的占用列清楚,再决定要不要上扩展。
| 外设 | 典型占用 I/O | 压缩办法 |
|---|---|---|
| LCD1602 并口 | 6~11 根 | 加 I2C 转接板压到 2 根 |
| 4×4 矩阵键盘 | 8 根 | 改 AD 键盘,1 根搞定 |
| 四位动态数码管 | 4 段选 + 8 位选 | 加 595 移位寄存器压到 3 根 |
| 步进电机 | 4 根 | 加 L297 后只要脉冲 + 方向 2 根 |
| 超声波 | 1~2 根 | 用定时器输入捕获,1 根触发 1 根回响 |
真要扩,CPLD 或者小规模 FPGA 是干净的办法,但前提是题目允许,且队里有人能写 Verilog。不然的话,宁可换一颗 I/O 更多的封装,也别在赛场现学。
3. 感知与执行:从一颗 RPR220 光耦到一台能跑的小车
控制类题目的硬件骨架基本就是“感知—调理—执行”三段。中间那段调理最没存在感,却决定了传感器到底能不能用。很多队伍买了传感器直接接单片机,读数乱跳就怪器件质量,其实八成是缺了比较器或者上拉电阻。
3.1 寻迹光耦和霍尔:先分清数字量和模拟量
RPR220 是反射式光耦,里面一颗红外发射、一颗接收。它的输出是模拟量,反射率越高电压越高,黑线和白底的差别体现在电压差上,不是现成的开关信号。有效距离大概 1 到 15 毫米,太近了光斑太小,太远了信号弱,我一般在 3 到 8 毫米之间调。环境光干扰是它的天敌,加一圈黑色热缩管做遮光罩,比换器件管用。
A04E 是开关型霍尔,磁钢靠近就翻转,输出是数字量。它适合测速、限位、计数,缺点是检测距离短,磁钢得贴得足够近,而且要注意极性,单极性和全极性器件对磁钢方向的要求不一样。光电槽配合码盘做测速很稳,缺点是怕灰尘,赛场上桌面有碎屑就会丢脉冲。
| 器件 | 输出类型 | 有效距离 | 典型用途 | 调理方式 |
|---|---|---|---|---|
| RPR220 反射光耦 | 模拟,随反射率变化 | 1~15mm | 循迹、黑白线判别 | 比较器或 AD |
| A04E 开关霍尔 | 数字,靠磁钢翻转 | 数毫米到 2cm | 测速、限位、计数 | 上拉电阻 |
| 对射光电槽 | 数字,遮挡即翻转 | 槽宽范围内 | 码盘测速、位置检测 | 上拉加施密特 |
| 光敏电阻或光敏二极管 | 模拟 | — | 趋光、亮度判断 | 分压后接比较器 |
| 接近开关 | 数字 | 2~10mm | 金属探测 | 直接读或光耦隔离 |
| 超声波 | 数字脉宽 | 2cm~4m | 避障、测距 | 定时器输入捕获 |
| 角度传感器 | 模拟 | — | 倾角测量 | AD 采集 |
角度传感器确实贵,我的态度是能不买就不买,用加速度计模块替代,虽然要多写点姿态解算,但成本差一个数量级。接近开关和超声波这类器件属于“备着玩”的性质,用不上就当熟悉器件,用上了就是意外之喜。
3.2 光耦出来的不是开关量:比较器怎么配阈值
这是控制类里最高频的一个坑。RPR220 输出的电压在黑白线之间可能只差零点几伏,直接接单片机的数字口,读数会随温度、光照、电池电压一起飘。正确做法是接比较器,把模拟量切成干净的数字量。
LM339 是四路比较器,LM393 是双路,两者都是开漏输出,必须外接上拉电阻。上拉到 3.3V 就能直接进 3.3V 主控的 I/O,上拉到 5V 就得确认主控的 I/O 是否耐 5V,这一步烧过板子的人都不会再忘。
阈值电压按分压算:Vth = Vcc × R2 / (R1 + R2)。实操时我不会一次算准,而是把上分压电阻换成 10k 电位器,让车在白底和黑线上各跑一遍,示波器看着输出波形拧到刚好翻转,再把电位器换成固定电阻焊死。这样做的原因是光耦的离散性很大,同一批器件的最佳阈值能差 20%。
阈值定好之后还有抖动问题。光线临界、纸面有污渍,输出会在阈值附近来回跳,软件读到一串假的边沿。解决办法是加正反馈做迟滞:从输出端拉一个大电阻(比如 1M)回同相输入端,翻转之后阈值自动偏移一点,抖动就被吃掉了。迟滞窗口我一般取 50 到 100 毫伏,太小没效果,太大又会漏掉细线。
3.3 运放 TL082/TL084:单电源下最容易翻车
TL082 是双运放,TL084 是四运放,JFET 输入,输入阻抗高,做小信号放大和滤波都够用。它们的问题在于不是轨到轨器件,输出摆幅到不了电源轨,单电源供电时靠近 0V 和 Vcc 的那一段是死区。
单电源用法的关键一步是抬基准。用两个等值电阻分压出 Vcc/2 做虚地,信号围绕这个虚地摆动,输出才不会削顶。分压电阻别用太大,10k 量级配一个 10μF 电容到地,虚地才稳。如果要处理正负双向信号,那就老老实实上正负电源,LM337 那块板子就是为这个准备的。
放大倍数按反相或同相公式算,但实际装配时我会把反馈电阻做成“固定电阻 + 微调电位器”的组合,先按理论值焊,再用示波器看实际增益往上调。滤波也一样,一阶 RC 的低通截止频率 f = 1/(2πRC),我通常把截止频率设在信号带宽的三到五倍,既压掉高频噪声,又不至于把有用边沿磨平。
3.4 电机与驱动:L298 到 L297 的选型账
L298 是双 H 桥,每桥标称 2A,实际用起来要打折。它内部是双极型晶体管,导通压降接近 2V,12V 供电到电机端只剩 10V 左右,剩下那 2V 全变成热。所以散热片必须装,别指望靠空气对流。PWM 调速频率我一般取 15 到 20kHz,避开人耳听觉范围,电机不会发出尖叫;频率再往上,开关损耗和驱动能力就跟不上了。
步进电机如果用 L298 直接驱动,只能做整步或半步,细分做不了。要细分就上 L297 加 L298 的组合:L297 负责脉冲分配和斩波恒流,外部只给脉冲和方向两根线,单片机负担立刻降下来,I/O 也从 4 根压到 2 根。L297 的斩波频率由 RC 决定,我一般设在 20 到 30kHz,太低会有可闻噪声。
驱动继电器和小功率负载,ULN2803 或者 2003 这类达林顿阵列比三极管省事,内置续流二极管,八路一路搞定。要注意它是灌电流输出,负载接在电源和输出之间,共地。
机械件这块最容易被忽略,也最影响成绩。联轴器必须备,电机轴和轮轴不同心,跑起来抖得传感器全在跳。轮径量准确,测速和测距全靠它。底盘刚性不够,小车一走就扭,循迹参数怎么调都不对。这些东西加起来不值多少钱,缺一个就得现场想办法,那才是真正的后悔药。
3.5 显示与反馈:LCD、数码管、LED、蜂鸣器一个都不能少
显示的本质是给人反馈,不是给机器。调试阶段,数码管实时显示一个变量,比串口打印快得多,因为你不用切窗口。LCD 适合显示多个参数和菜单。LED 做状态位,一眼看出程序跑到哪一步。蜂鸣器则是最便宜的结果反馈——平衡点稳住了叫一声,参数越界了叫一声,人在旁边不用盯屏幕。
我习惯在车尾做一块小的调试面板:两位数码管显示当前误差,一颗三色 LED 表示状态机阶段,一个按键切换显示内容。这块面板在赛场上的价值远超它那点成本,因为四天三夜里,你能不能快速判断“是传感器飘了还是控制参数错了”,全看它。
4. 软件资产:显示、键盘、AD 滤波、PWM 四类程序怎么写成能抄的模板
硬件备齐只是及格线,真正拉开差距的是软件能不能复用。我的做法是赛前把常用程序写成“参数可配、接口固定”的模块,赛场上只改参数不改结构。这样即使换主控,也只需要重写底层读写,上层逻辑原样搬。
4.1 显示和键盘先搭骨架再填内容
按键扫描绝对不能用死循环加延时。一旦程序卡在延时里,显示会闪、采样会丢、控制环会崩。标准做法是定时器每 5 到 10 毫秒扫一次键,做消抖和状态机,主循环只读状态。
/* 非阻塞按键扫描:10ms 调用一次,主循环只查事件标志 */ #define KEY_NUM 4 #define DEBOUNCE_CNT 2 /* 连续 2 次同状态才算稳定,即 20ms */ typedef struct { uint8_t raw; /* 本次采样电平 */ uint8_t stable; /* 消抖后的稳定电平 */ uint8_t cnt; /* 状态计数 */ uint8_t pressed; /* 按下事件,读后清零 */ } key_t; static key_t keys[KEY_NUM]; void key_scan_10ms(void) { for (uint8_t i = 0; i < KEY_NUM; i++) { uint8_t now = KEY_READ(i); /* 读实际 I/O,低电平有效则取反 */ if (now != keys[i].raw) { /* 电平变化,重新计数 */ keys[i].raw = now; keys[i].cnt = 0; continue; } if (keys[i].cnt < DEBOUNCE_CNT) { keys[i].cnt++; } else if (keys[i].stable != now) { keys[i].stable = now; if (now) keys[i].pressed = 1; /* 只在上升沿产生一次事件 */ } } }这里的关键是“事件”和“电平”分开:主循环读 pressed 标志做一次性动作,读 stable 做长按判断。DEBOUNCE_CNT 按调用周期算,10ms 调一次、设 2 就是 20ms 消抖,机械按键够用;如果是薄膜键盘或者导电橡胶,可以加到 3。显示部分同理,用定时器驱动的刷新函数,主循环只管往显存里写内容,不要在业务代码里直接调 LCD 写命令。
4.2 AD 采集与滤波:中值和平均各管一段
AD 采集最怕两种噪声:一种是偶发的尖峰,比如电机换向、继电器吸合造成的单点野值;另一种是持续的高斯噪声。前者用中值滤波,后者用滑动平均,两个串起来效果最好,顺序不能反——先中值把野值剔掉,再平均压随机噪声,否则一个尖峰会被平均摊到后面好几个采样点上。
/* AD 两级滤波:9 点中值去毛刺 + 8 点滑动平均压随机噪声 */ #define MED_N 9 /* 中值窗口,必须奇数;越大越抗尖峰,跟随越慢 */ #define AVG_N 8 /* 平均窗口,取 2 的幂,可用移位代替除法 */ static uint16_t med_buf[MED_N]; static uint16_t avg_buf[AVG_N]; static uint32_t avg_sum; static uint8_t med_idx, avg_idx, med_ready; static uint16_t median9(const uint16_t *src) { uint16_t t[MED_N]; uint8_t i, j; for (i = 0; i < MED_N; i++) t[i] = src[i]; /* 9 个数的插入排序,开销可控,别在这个位置上去调快排 */ for (i = 1; i < MED_N; i++) { uint16_t key = t[i]; j = i; while (j > 0 && t[j - 1] > key) { t[j] = t[j - 1]; j--; } t[j] = key; } return t[MED_N / 2]; } uint16_t ad_filter(uint16_t raw) { uint16_t med; med_buf[med_idx] = raw; med_idx = (med_idx + 1) % MED_N; if (med_idx == 0) med_ready = 1; /* 攒满一窗才输出,避免前 8 次是脏数据 */ med = med_ready ? median9(med_buf) : raw; avg_sum -= avg_buf[avg_idx]; /* 滑出最旧值 */ avg_buf[avg_idx] = med; avg_sum += med; avg_idx = (avg_idx + 1) % AVG_N; return (uint16_t)(avg_sum >> 3); /* 除以 8,必须和 AVG_N 一致 */ }参数量级要心里有数:采样率 1kHz 时,这个组合的群延迟大约是 (MED_N + AVG_N) / 2 个采样周期,也就是 8 到 9 毫秒。放在循迹环里问题不大,放在需要快速响应的电流环里就得把窗口砍到 3 点中值加 4 点平均。另外 avg_sum 是 32 位累加,8 个 12 位采样最大不到 33 万,不会溢出,但如果把 AVG_N 加到 64 就要重新核算。
还有一个常见失误:AD 参考电压取自 Vcc。电池一掉压,所有采样值一起漂,循迹阈值全部失效。要么用内部基准,要么在软件里同步采一路基准电压做归一化。
4.3 PWM 与步进细分:频率和占空比的参数账
PWM 的频率和分辨率是一对矛盾。定时器时钟固定,自动重装值越大频率越低,可调的占空比档位越多。20kHz 的电机驱动频率下,如果定时器只有 1MHz 计数,重装值是 49,占空比只有 50 档,低速时脉动明显;1kHz 时重装值 999,1000 档,调起来很细,但电机有可闻噪声。
| 应用 | 建议频率 | 分辨率要求 | 说明 |
|---|---|---|---|
| 直流电机调速 | 15~20kHz | 200 档以上 | 避开听觉,减少电流脉动 |
| 步进电机斩波 | 20~30kHz | 由 L297 硬件决定 | 软件只给脉冲和方向 |
| 舵机 | 50Hz | 1000 档左右 | 脉宽 0.5~2.5ms 对应角度 |
| LED 调光 | 1kHz 以上 | 100 档够用 | 低了会看到闪烁 |
| 蜂鸣器 | 2~4kHz | 固定占空比 50% | 只调频率不调占空比 |
/* 定时器 PWM 初始化:以 72MHz 主频、向上计数模式为例 */ void pwm_init(uint32_t freq_hz, uint8_t duty_pct) { uint32_t timer_clk = 72000000UL; uint32_t psc = 71; /* 预分频后计数频率 1MHz */ uint32_t arr = timer_clk / (psc + 1) / freq_hz - 1; /* 重装值决定频率 */ uint32_t ccr = (arr + 1) * duty_pct / 100; /* 比较值决定占空比 */ /* arr 越小频率越高,ccr 的可调档位也越少,这是硬约束 */ PWM_SET_PSC(psc); PWM_SET_ARR(arr); PWM_SET_CCR(ccr); PWM_ENABLE(); }上面这段里的 psc 和 arr 需要按实际主频改。如果主频是 72MHz、要 20kHz,算出来 arr 约等于 49,此时占空比每档约 2%,做闭环调速会看到明显的台阶,解决办法是把主频提上去,或者换成更高分辨率的定时器。步进电机的细分则是硬件层面的事,L297 通过两个输入脚选择整步、半步和斩波模式,软件侧只需要发脉冲,脉冲频率决定转速,脉冲总数决定位移,加减速曲线要自己写,不能一上电就全速发脉冲,那样必丢步。
4.4 软件延时和定时器计时不是一回事
软件延时只能用在微秒级、对精度要求不高的地方,比如单总线器件的时序、上电初始化的等待。它的实际时长依赖主频、编译优化等级、甚至中断是否开着,换台机器、换个优化选项就得重新标定。
/* 软件延时:只用于初始化、单总线时序这类微秒级场合 */ void delay_us(uint32_t us) { while (us--) { NOP(); NOP(); NOP(); NOP(); /* 每轮约 1us,换主频必须重新标定 */ } }秒表、测速、测距全部要用硬件定时器。测速的基本式子是:转速(rpm)= 60 × 单位时间脉冲数 / (码盘线数 × 采样时间秒)。用输入捕获测两个脉冲之间的间隔,比固定周期数脉冲精度高,尤其在低速时。测距用超声波的话,回响脉宽除以声速再除以二,温度对声速有影响,要求高的场合得补一个温度传感器做修正。
4.5 寻迹、避障、测速这些算法落到函数上
循迹我一般用加权平均而不是简单的开关量判断:几路光耦各给一个权重,算出的偏差是连续值,PID 才有得调。避障用状态机而不是一堆 if 嵌套,状态分为“直行、减速、转向、后退重试”,每个状态有明确的退出条件,赛场上出问题能一眼看出卡在哪一步。
测距和测速的输出要做限幅和死区,传感器偶尔跳一个野值不至于让控制器发疯。这些细节不写进模板,赛场上现补一定来不及。
5. 避坑与排查:五条赛后复盘出来的翻车记录
下面五条都是我自己或者旁边队伍真实撞过的,现象、原因、解决按顺序写,照着对号入座能省不少时间。
5.1 电机一转主控就复位
现象:小车静止时程序跑得好好的,一给电机 PWM,主控立刻重启,串口输出从头开始。
原因:电机启动电流把 5V 母线拉低到复位阈值以下,或者大电流走线和信号地共用一段,地弹把复位脚拉低。
解决:电机电源和逻辑电源彻底分开,只在一点共地;升压或降压输出端并 470μF 以上电解;复位脚加 100nF 到地;PWM 加软启动,占空比从 0 逐步升上去,别一步到位。做完这几条还复位的,查一下电机两端有没有加续流二极管。
5.2 光耦读数乱跳,静止时也在变
现象:车停着不动,循迹光耦的数字口读数一秒跳好几次。
原因:把模拟输出直接接了数字口,阈值由 I/O 的输入门限决定,而这个门限随温度和电源电压漂。
解决:加比较器,用 LM339 或 LM393,配电位器现场调阈值,再加正反馈做迟滞。调完之后再测一遍,静止状态下读数应该完全不动。
5.3 数码管一亮,LCD 就花屏
现象:单独显示都正常,两个一起工作,LCD 出现乱码或者对比度变差。
原因:数码管动态扫描的瞬时电流把 5V 拉出纹波,LCD 的对比度电压跟着抖;或者扫描在中断里跑,打断了 LCD 的写时序。
解决:数码管段选串限流电阻,别靠软件调占空比硬压亮度;LCD 写操作加忙标志判断,不要在中断里写 LCD;5V 那一路给 LCD 单独加 100μF 加 100nF 的去耦组合。
5.4 步进电机丢步,位置越走越偏
现象:空载时正常,装上负载走几十步就开始偏,走一圈回来对不上原点。
原因:脉冲频率上得太快没有加减速;L297 的斩波电流设定偏小,带不动负载;机械上有回程间隙。
解决:写梯形或 S 形加减速曲线,启动频率从几百赫兹开始;调 L297 的参考电压把相电流设到电机额定值的 80% 左右;联轴器和齿轮的间隙用单向回零的方式规避,别指望机械精度。
5.5 电池用到后半程,所有阈值都失效
现象:满电时循迹很正常,跑一小时后开始乱拐,换了新电池又好。
原因:AD 参考电压取自 Vcc,电池掉压导致所有采样值同比缩小,之前调好的阈值全部偏移。
解决:改用内部基准,或者在软件里同步采一路已知基准做归一化;加电池电压监测,低于阈值就在显示上报警,让人知道是电压问题而不是算法问题。
6. 赛前一周的落地动作:六项检查和一块调试面板
清单写得再全,不做一遍通电检查都是纸上谈兵。我现在的习惯是赛前一周把模块全部摊在桌上,按下面的顺序过一遍,每项都实测,不留“应该没问题”。
| 检查项 | 具体动作 | 通过标准 |
|---|---|---|
| 电源 | 每路空载和满载各量一次电压 | 满载压降不超过 5% |
| 电流预算 | 用万用表串进每一路测峰值 | 不超过模块额定的 60% |
| 传感器 | 每个器件单独接上,看示波器波形 | 黑白或有无磁钢时边沿干净 |
| 信号调理 | 比较器阈值扫一遍 | 全工作电压范围内不误翻 |
| 电机 | 空载、带载各跑十分钟 | 不丢步、不烫手、不复位 |
| 软件 | 每个模板单独编译下载 | 换主控后半天内能跑起来 |
具体到那个最省钱的动作:把所有模块做成可插拔的小板,每块板上印好电压、信号名、输入输出方向,接插件统一用同一种间距的排针。听上去是强迫症,实际收益是赛场上换一个坏掉的光耦只要三秒,而不是拿烙铁在车底下拆线。线材也要贴标签,至少把电源正负、编码器 A/B、PWM 这几根标出来,半夜三点的时候,人眼分不清红黑线。
从那以后我每次备赛都强制走一遍这套流程:先算电流,再配调理,最后才碰传感器。传感器买贵了顶多是浪费钱,电源和调理没做好,是四天三夜全搭进去。希望帮到你。
本文还有配套的精品资源,点击获取