我带过不少轮新人,发现每个人拿到RoboMaster硬件基础讲义之后的表情都不一样。有人翻两页就扔到一边直接找学长要原理图,有人对着目录发呆不知道该从哪一章开始看。V0.2.1这个版本就是冲着这个尴尬劲改的:它不追求把每一个电容的原理都讲透,而是解决一个很实际的问题——一个新队员从领到套件到让机器人动起来,这中间需要知道哪些硬件知识,以及踩坑之后怎么定位问题。
这份讲义适合三类人:刚进实验室还没碰过烙铁的大一同学,自己买散件DIY竞赛机器人但总线总是烧的偏科选手,以及想给队伍带新人但发现自己讲不清楚"先说电再说控制"的老队员。它不是原理教科书,更像一张带注释的硬件施工图。
1. V0.2.1这本讲义到底改了什么
先说版本号的事。V0.2.1不是大改版,但它把之前几个特别容易被忽略的问题正式写进了正文,而不是塞在附录里等新人自己去翻。
主要的改动是三条。第一,电源保护从附录挪到了第三章,因为实测过程中因为电源问题烧掉的驱动板和主控,比其它所有原因加起来都多。第二,新增了"上电顺序"小节,这个在V0.2.0里其实就一句话带过,但我们在两场比赛调试里发现,九成莫名其妙的主控重启、电机抖动都和上电时序有关。第三,删掉了一大段关于老型号主控的选型对比,因为那些内容对新手来说只是增加焦虑——他们手里的板子是固定的,选型知识留到第二次换板子时再学也不迟。
V0.2.1的核心思路没变:整个讲义只关心一件事——电能如何安全地从电池流到主控,再从主控流到电机,变成旋转。算法、视觉、机械结构统统不碰。这个边界很重要,因为机器人硬件这个坑特别容易越学越深:你今天想搞懂为什么MOS管要加续流二极管,明天就会去看电机驱动芯片的内部框图,后天就回不来了。新人需要的是先让车能动起来,得到一个正反馈,细节可以后补。
讲义第一章放了一张全车硬件拓扑图,很多人第一次看会觉得乱。其实拆开就是三条主干:电源链路给全车供电,信号链路把遥控和主控的指令送到电调,调试链路让电脑能烧录和跟踪程序。V0.2.1在每一条主干上都加了"常见故障表现"的批注,这也是实测经验逼出来的——新人拿着图纸来问"为什么我电机不转"的时候,他往往说不清楚是没通电、没指令还是没调试信号。
2. 一台比赛机器人开机前要过的硬件关口
很多人第一次拿到步兵车套件,会有个错觉:硬件就是插插线。等真的自己组装时才发现,光是搞清楚电池正极出来之后分了几路,每路什么时候上电、什么时候断合,就能折腾一下午。
从硬件角度,一台比赛机器人的电学系统大致可以分成这么几块:
- 电源模块:电池、总开关、保险丝、防反接电路、稳压模块
- 主控最小系统:核心板外设引出、晶振、复位、启动配置、调试接口
- 驱动模块:电调、无刷电机、舵机、云台电机
- 传感与通信:遥控接收机、计分系统、视觉模块、CAN总线、串口线
V0.2.1在第二章主要讲的是它们之间的关系,不只是位置关系,还有"先有谁后有谁"的上电关系。
2.1 电源树:所有硬件问题的根源
电源树这个概念是我在V0.2.1里特意加重的一页。它本质上就是一张“谁从谁那里取电”的结构图。全车从一块电池取电,电池出来之后先经过总保险,然后分两条路:一条走大电流,直接供给电调和电机;另一条走小电流,经过稳压模块给主控、接收机、视觉模块供电。
这里有个容易被新手搞混的点:主控和电机虽然在同一辆车上,但它们的地线往往是不同的回流路径,而且电调的大电流会在地线上产生电压波动。如果信号线共地没处理好,就会出现“电机一转,主控就重启”的奇怪现象。V0.2.1里特别画了接地图,标明哪些线需要单点接地、哪些信号线要跟功率地分开走。
2.2 信号链路:指令的传递不能靠运气
信号链路在大多数新人眼里就是一堆杜邦线和排针。但真正出问题的时候,往往不是线没插,而是信号质量不行。
比赛机器人最常用的主控和电调之间通信方式是CAN总线,差分信号抗干扰能力强,但前提是终端电阻配置正确。一根CAN线在总线上要维持在120欧姆左右的特性阻抗,如果两端终端电阻缺失,信号反射会导致偶发性的通信丢包。这种故障非常难排查,因为不是"完全不通",而是"时好时坏"。
V0.2.1给出的排查顺序是这样的:先量CAN_H和CAN_L之间的电阻,正常应该在60欧姆左右;再检查是不是有一块板子多焊了终端电阻;最后才怀疑软件配置。这个排查路径我至少见过五个人跳过第一步直接去改代码,浪费了一个下午。
2.3 调试链路:不用试电笔的现场
调试链路指的是烧录器和主控板调试接口之间的连接。V0.2.1专门用表格列出了SWD接口几根线的作用,以及常见接错后果:GND没接会导致烧录时校验失败,SWDIO和SWCLK接反会出现"找到芯片但烧不进去"的报错,NRST悬空在某些环境下会触发频繁复位。
很多人觉得这些都是小事,但实际带新人的过程中,调试口接错是前三名的高频问题。讲义里那句"调试接口不是插上就能用,先量GND是否连通"被不少队员当成了口头禅。
3. 主控最小系统:从一颗芯片到一块能跑程序的板子
第一次把主控板从防静电袋里拿出来的人,大概率会盯着那颗芯片发愣:这么大一块板子,真正核心的东西也就指甲盖大小,周围全是电容电阻。V0.2.1在第三章会告诉你,这块板子上你不需要认识每一个元件,但有几样东西必须会找。
3.1 最小系统七件套
一块单片机要跑起来,严格来说需要的东西并不多:电源、晶振、复位电路、启动配置、去耦电容、调试接口、地平面。这就是常说的最小系统七件套。
- 电源:主控板上的核心电压通常是3.3V,由板载稳压模块从电池电压或者外接5V转换而来。判断主控有没有供电,第一件事就是用万用表量3.3V对地电压,而不是去看灯亮没亮,因为有的板子LED接在别的引脚上,程序没跑也会有灯亮的情况。
- 晶振:给芯片提供时钟基准。一般主控板有高速晶振和低速晶振两颗,高速晶振出问题表现为程序能烧进去但运行速度紊乱,或者干脆不跑。
- 复位电路:上电瞬间需要把芯片复位到已知状态。常见的是复位引脚通过一个10K欧姆电阻上拉到3.3V,再接一个电容到地。这个RC时间常数决定了上电复位的可靠度。
- 启动配置:芯片有BOOT引脚,决定程序从哪里启动。比赛板子一般固定在从用户闪存启动,但是如果有人改过拨码开关,就会出现"烧录成功但程序不运行"的诡异情况。
- 去耦电容:芯片供电引脚旁边的一堆小电容。它们的作用是就近储能、滤掉高频噪声。V0.2.1里有一句批注:如果某颗芯片的供电引脚旁边看不到任何小电容,这个设计基本不要用,会无缘无故死机。
- 调试接口:SWD四线,接烧录器用的。
- 地平面:完整的底层铜箔,保证所有信号有短的回流路径。这属于PCB设计范畴,但新人需要知道一点:不要在主控板上乱飞线,尤其不要飞在芯片正下方。
3.2 拿到一块陌生板子的第一步
V0.2.1第三章花了不小的篇幅讲这个:拿到一块新板子或者一张旧车拆下来的板子,不要急着上电。
我见过最典型的翻车现场是这样的:A同学把队友拆下来的主控板装到自己车上,一上电,板子冒烟了。后来检查发现板上有一颗电容已经击穿短路,而上一任队员把这板子拆下来就是因为这颗电容导致整机无法开机。硬件问题会在拆装过程中被带得到处跑。
正确的顺序是:先目检有没有烧焦、胀包、焊锡搭连,再用万用表量电源输入端的对地阻抗,确认没有短路后才能上电。上电时也建议从限流电源开始,把电流限制先调到几百毫安,发现电流异常立刻断电。
量对地阻抗这一步看起来保守,实际能救下很多板子。我在实验室反复说过一句话:硬件上最贵的工具不是示波器,是把电通上之前的那次测量。
3.3 为什么调试接口永远最先被验证
V0.2.1里给新人的第一个实操任务是:不写任何应用代码,先把开发环境连上板子,用烧录器读取芯片信息。这一步能同时验证供电、晶振、调试接口三样东西。
如果读取芯片信息失败,优先查调试接口的接线,其次是供电,最后才是芯片本身。很多人一上来就怀疑芯片坏了,但绝大多数情况只是SWDIO和SWCLK两根线接反了,或者烧录器供电脚对着了却忘了共地。
这个"先最小化验证"的思路会贯穿后面所有的硬件排错,值得背下来。
4. 驱动链路拆解:无刷电机、电调与第一次PID调参
驱动链路是很多新人最兴奋也最受挫的部分。兴奋是因为电机一转就很像"机器人活了",受挫是因为它涉及的概念比想象中多:反电动势、换相、PWM占空比、PID……V0.2.1的第四章把这些东西压缩成了三问:电机为什么要靠电调驱动?电调对电机做了什么?程序又是怎么告诉电调"我想让它转多快"的?
4.1 无刷电机不是"接上电就转"
先讲无刷电机和有刷电机的区别,这个对后面的调试理解很关键。
有刷电机内部有换向器和电刷,通电后线圈在磁场里受力转动,换向靠机械接触自动完成,所以两根线一接就能转。无刷电机把线圈放到了定子上,转子上是永磁体,没有电刷来做换向,那就必须靠外部电路实时改变线圈的通电顺序,让磁场推着转子往前走。这个"改变通电顺序"的动作叫换相,做换相这件事的,就是电调。
打个比方:有刷电机像手动挡汽车,换挡机构在机器内部;无刷电机像一台没有驾驶员的电动车,需要外部控制器不断根据转子的位置来决定哪组线圈通电。电调就是那个驾驶员,而且它换相的频率非常高,靠人工是不可能完成的,必须用硬件逻辑或者高速处理器来控制。
4.2 电调实际上管着三层环
理解电调之后,下一个问题是:程序给电调发了一个"转速设定值",电调内部是怎么把它变成电机转动的?
V0.2.1给出了一个简化的三层环模型:
- 电流环:电调检测实际流过线圈的电流,快速调节MOS管的通断,维持期望扭矩对应的电流值。这是最内层、最快的一环,通常由硬件比较器或专用驱动芯片完成。
- 速度环:电调根据电机反电动势或者霍尔传感器推算当前转速,和设定值做差值,输出一个电流期望值给电流环。这一层用的就是PID里的PI算法。
- 位置环/角度环:在云台和底盘跟随场景里会用到,通常不在电调内部,而在主控程序里实现,通过编码器读角度并输出速度期望。
很多新人第一次听到"电调里已经有PID了"会愣一下,然后问:那我是不是不用写PID了?答案是:电调内环的速度环确实已经帮你做了,但在云台上你要写角度环,在底盘上你要写速度和角速度环,外环还是落在主控里。
4.3 新手的第一个调参闭环
V0.2.1给了这样一条调试路径,适合第一次上手:先把电调接上电机,用遥控或者调试工具给一个固定的速度指令,确认电机能稳定转动;然后接上编码器或者陀螺仪,写一个最简单的角度环;最后才考虑加速度优化和防抖。
这条路径之所以这样设计,是因为每加入一个反馈环节都可能引入新的问题。我见过有人直接按照网上抄的云台PID参数,一上电云台就像抽筋一样乱抖。问题往往不在参数本身,而在于他跳过了最基础的"单独验证速度环响应"这一步,结果把传感器装反和参数不合适两个问题混在一起,根本定位不到根因。
调PID的顺序优先级比调参数更值得背下来:先确认反馈数据方向正确,再确认输出极限不会让电机堵转,然后从P开始加,先让系统稳定不再发散,再加一点D来抑制超调,最后才考虑I消静差。
5. 装机、上电与排错:最容易翻车的几个硬件环节
如果说前四章解决的是"知道每个模块是什么",第五章解决的就是"把模块装到一起之后怎么不出事"。这一章是V0.2.1里改动感受最明显的一章,因为几乎每一段都来自真实的翻车案例复盘。
5.1 上电检查清单
V0.2.1列了一个非常具体、必须逐项打钩的清单,这里摘录如下:
- 电池电压是否在额定范围内,有没有过放
- 电池正负极是否和板子标注一致,防反接电路是否导通
- 所有功率线端子有没有压紧,用手拔一下会不会松脱
- 板子和金属车架之间有没有裸焊点或裸露的线芯,防短路
- 电调信号线和CAN线有没有和功率线绑在一起走线
- 上电前量过电源端对地阻抗,确认无短路
最后一条被列为"强制项",因为在比赛现场那种紧张状态下,人最容易跳过例行检查直接插电池。结果就是接线端子背面刮破线皮的小问题在上电瞬间变成短路打火,烧掉一块主控。
5.2 一个真实的电机抖动排查过程
我在V0.2.1里记录了一个典型的排查过程,用来演示硬件排错的思路。步骤是这样展开的:
现象是某队员的步兵车左电机加速到一半突然抖动,送小油门就正常,大油门就抽风。第一个想到的是电调坏了,换一个新电调,现象不变。那就怀疑电机霍尔传感器的问题,拆下来重新插线,现象还是不变。
到这个节点,如果继续怀疑器件就浪费时间了。我用万用表量了电调的电源输入电压,发现加速瞬间电压从7.4V跌到了6.2V,掉压幅度非常大。问题其实出在电池到电调之间的那截XT60转接线上——看起来线很粗,但里面铜芯断了只剩几根细线连着,大电流一拉电压就崩,电调欠压保护,电机才抖动。
这个案例放在第五章开头的用意很明确:硬件排错不要一上来就换昂贵的大件,先用万用表量电压和电阻,把"能量供给"和"信号控制"分成两条线来排查。很多所谓的"电调损坏"最后都只是线材接触不良或电源线断芯。
5.3 三类常见故障的快速定位表
V0.2.1第五章末尾附了一张故障速查表,这里挑三个最常见的写出来:
| 故障现象 | 优先检查 | 常见根因 |
|---|---|---|
| 电机完全不动 | 电调电源电压、信号线是否通 | 端子和线芯虚接 |
| 主控反复重启 | 电源稳压模块输出电压 | 电压跌落导致欠压复位 |
| CAN通讯时好时坏 | 总线端到端电阻、终端电阻 | 终端电阻缺失或接线松动 |
这张表的逻辑和整个讲义一致:故障永远是先量电压,再看信号,最后才怀疑芯片。这个顺序反了,时间就白花了。
6. 从V0.2.0到V0.2.1的修订备注:一些经验沉淀
最后一个章节没有新知识,但它是整本讲义里我个人最看重的部分,因为它记录了为什么V0.2.1长成这样。
V0.2.0发布的时候,我本来以为把原理图里每个模块的功能写清楚就够了。后来的反馈是:新人看完会点头,但还是不敢动手。原因是讲义只回答了"每个东西是什么",没回答"我该按什么顺序操作"。
于是V0.2.1做了三件事。第一,把所有实操检查项单独提炼成清单,放进对应章节末尾。第二,把"上电顺序"这种过程性知识从原本的备注段落提升为独立小节。硬件基础知识有一个特点,就是过程性知识容易被当成常识,不讲出来,新人就要自己摸黑踩一遍。第三,删掉了一部分型号推荐内容,因为赛事用的主控和电调相对固定,讲一堆替代型号只会让新人困惑。
还有一个很反直觉的修订:在第五章里,我特意没有给出所有故障的标准答案。比如遇到电机抖动,我不直接写"换电源线",而是把那整段排查过程原样写出来。目的就是让新人看到,定位问题是靠测量和排除,不是靠猜和换件。这个思路比任何单一知识点都重要。
V0.2.1也留了不少遗憾,比如关于示波器的使用方式只有一个入门章节,还没有细讲波形怎么分析;关于热成像仪检查板卡过热的场景也只在备注里提了一句。这些预计放到V0.3.0,但我希望届时不是由我一个人写,而是让用这本讲义带出新人的队员们来补充他们自己的实战记录。
我在实验室带新人的这些年有一个体会:硬件知识不像写代码,写完可以立刻看结果,硬件问题常常是隐性的,一瞬间冒烟了就全白费。所以这本讲义始终强调慢是对的,量了再焊,测了再上电,看着慢,其实是最快的方式。希望V0.2.1能给正在摸黑前进的新队员少一次打火,多一次顺利上电。