RoboMaster硬件讲义V0.2.1:从供电链路到CAN总线的机器人入门 1. 这份讲义写给谁V0.2.1的定位与阅读方式作为一个在实验室带过三届队员的过来人我越来越觉得硬件基础讲义这东西最难的不是写清楚某个模块怎么接而是让新人知道整个机器人是怎么转起来的。RoboMaster硬件基础讲义V0.2.1这个版本就是我们团队内部迭代到第二版大改、第三次小修之后沉淀下来的入门教材。它面向的不是已经能独立画板子的老队员而是刚进实验室、连万用表都不太会用的大一新生以及那些软件出身、想补硬件常识的算法组成员。1.1 从V0.1到V0.2.1讲义改了什么最早我们用的是V0.1结构是按照元器件讲今天讲稳压芯片明天讲电机驱动。结果新人听的时候觉得什么都懂了去车上一看依然不知道从哪下手。V0.2.1改成按照能量和信号流讲从电池出发先看电是怎么分到各个板的再看控制信号是怎么从主控发到电调的最后看车轮和云台怎么响应。这样一来新人手里的接线图不再是散点而是一条有方向感的链路。V0.2.1里还加了一个之前完全没写的章节调试工具的使用。道理很简单新人最容易卡住的不是接线而是接完线之后不知道板子有没有在正常工作。所以我们把万用表、示波器、电流钳、逻辑分析仪的使用场景直接写进讲义并且配了几个典型的测量案例。这一版出来之后新人上手装一辆底盘的时间从两周缩短到了四到五天效果非常明显。1.2 适合三周内完成硬件入门的内容组织如果你想用这份讲义带一批零基础队员我的建议是按三周来拆。第一周只读前三章也就是供电架构、主控最小系统、CAN总线基础目标是能说清电从哪来、信号走哪条路。第二周进入底盘和云台的电机部分配合实物拆装目标是能独立完成一套底盘的接线和通电测试。第三周开始接触发射机构和传感器重点是摩擦轮调速和陀螺仪数据读取。每章后面我们故意留了两个东西一个是常见故障速查表另一个是动手任务清单。新人做完任务清单里的项目才算过完这一章。比如供电那一章的任务是把电池接到分电板测出五路输出电压并记录做完这个他才算是真的认识了板子。2. 供电链路设计新手最容易翻车的第一关先说结论一个机器人的绝大多数硬件故障最后排查下来都是供电问题。要么是电压纹波太大导致控制板复位要么是瞬时电流过大触发保护要么干脆是接反了把板子烧了。RoboMaster这类移动机器人功耗动辄上百瓦电机启动瞬间的电流飙升非常吓人供电链路设计不合理后面一切免谈。2.1 从电池到各模块电是怎么分路的标准链路是这样的电池出线连接总开关和保险丝然后进分电板。分电板的作用不是分压它基本上是把电池电压并行引出给各个功率模块直接供电同时给稳压模块提供输入。大功率部分像底盘电机、云台电机、摩擦轮电机走的是电池电压通道中间只经过电调逻辑部分像主控、裁判系统、传感器走的是稳压模块降压后的通道通常是12V或者5V。这个设计里最容易犯的错误是新人喜欢把所有东西都接在一个稳压模块上。主控、IMU、灯条、测速模块全挂一路结果某一瞬间灯条闪了一下主控就复位了因为瞬时压降超过了复位阈值。正确做法是把模拟信号敏感的设备IMU、编码器和开关型负载灯条、风扇分开供电至少分两路稳压输出或者用隔离模块给IMU单独供电。2.2 保险丝选型和防反接的坑V0.2.1里特别标红的内容就是保险丝不能乱选。有的人图省事拿一个20A的保险丝保护全车结果电机堵转电流40A保险丝是没烧板子先烧了。选保险丝的思路是按支路的峰值电流来选而不是按电源总容量选。底盘电机那一支路如果单电机堵转能达到15A那保险丝就应该选额定8~10A的快断型让它在电机异常时先断而不是让电调硬扛。防反接更是一言难尽。现在的电池接头比如XT60本身有防反接结构但分电板上的输入接口如果用的是端子排插反的概率还是很高。我们在讲义里加了一个硬性要求所有电源输入端必须加防反接电路最简单的方式是串联一个低导通压降的MOS管或者至少用一颗大电流肖特基二极管兜底。别觉得多余我见过不止一次因为接反烧掉几百元模块的事故那一刻真的会怀疑人生。3. 底盘与云台电机机械和电气咬合的地方讲完供电下一层就是执行机构。机器人跑不跑得稳云台转得跟不跟手跟电机的选型、接线、以及机械装配的配合都有关系。V0.2.1在这里用了大量篇幅因为这是硬件和机械两个工种交界的区域也是扯皮最多的地方。3.1 底盘电机、云台电机分别用什么、为什么底盘电机我们用的是带减速箱的无刷电机比如M3508这种级别的配合C620电调来驱动。选它的原因很简单扭矩够大、响应够快、而且有闭环的FOC控制接口可以通过CAN总线直接读转速、设目标。云台电机则一般用直驱的中空式无刷电机比如GM6020这类特点是力矩波动小、控制带宽高能保证相机和枪管指向的稳定性。这两种电机不能混用。有人试过把底盘电机装到云台上结果低速时能听到明显的顿挫感因为减速箱的反向间隙在频繁换向时被放大了云台指向就会抖。反过来云台电机拿来带底盘扭矩不够爬个坡直接过热保护。选型的逻辑概括成一句话底盘要的是大力出奇迹云台要的是细腻如丝两个方向的技术侧重点完全不同。3.2 编码器接线与CAN ID配置的核心注意点接线层面的坑集中在编码器。无刷电机的编码器一般输出AB相脉冲要接在主控的定时器正交解码引脚上不能随便找个GPIO接。很多主控板的引脚不是所有口都支持正交解码新人如果不查原理图把编码器信号线接到普通IO口上读出来的数据就是乱的。V0.2.1里给了一张引脚对照表把每一路编码器应该接的定时器通道直接标出来省的翻几百页的芯片手册。另一个坑是CAN ID配置。底盘四台电机的ID必须在电调上拨码设置好而且要跟主控代码里的ID一致。我们团队曾经出现过一次云台乱转的故障查了半天发现是两台电机拨码拨反了导致主控给云台的指令发到了底盘电机上底盘电机一转整个机器人原地打转。从那以后我在讲义里加了要求给每台电机贴标签接线前先核对ID表通电前先用手转动电机确认方向。4. 发射机构的调速逻辑摩擦轮和拨盘的调参基础步兵机器人的发射机构是硬件和算法结合最紧密的地方。摩擦轮转速决定了初速度拨盘转速决定了射速两者配合不好弹道就是天女散花。V0.2.1这一章讲的是怎么从硬件层面把发射机构的底子打好。4.1 摩擦轮电机驱动方式的选择摩擦轮一般用无刷电机直接装橡胶轮两轮对转夹住弹丸。驱动方式有两种一种是电调速度闭环让电机恒速旋转另一种是主控直接输出PWM控制开环驱动。前者弹道稳定因为转速不随负载变化后者电路简单但弹丸被挤压的时候速度会掉弹道就飘了。我们采用的是电调闭环方案。具体调的时候有个技巧先用示波器或者电调读回来的转速数据确认两个摩擦轮在目标转速下差值不超过2%否则两轮线速度不一致弹丸出管后会偏航。再往上调初速的时候很多人以为是转速越高越好其实不然转速超过一定值以后弹丸在管内的运动会变得不稳定反而散布变大。我们实测某根枪管的最佳初速区在14m/s到16m/s之间超过17m/s弹着点就开始发散了。4.2 弹道稳定性相关的硬件因素弹道的事硬件占比远大于调参。首先是枪管的内径公差如果枪管是3D打印的注意内表面层纹是否均匀层纹粗糙会直接给弹丸随机扰动。其次是摩擦轮间距的调整间距太小弹丸被过度挤压转速损耗大间距太大摩擦力不够弹丸打滑。我们会在摩擦轮支架上设计可微调结构用塞尺来标定间距。拨盘和枪管的对齐也很关键。拨盘把弹丸一颗一颗送进枪管如果送弹位置偏了一点弹丸进管瞬间会蹭到管口边缘导致初速和方向都变化。V0.2.1里写了一个简单的验证方法空转拨盘不装弹用高速摄影拍弹丸进管的位置连续拍几十颗看散布是否在可接受范围内。这个测试不用什么专业设备现在的手机慢动作模式就够用了。5. 主控通信架构串口、CAN、PWM各干各的活一个机器人身上同时跑着好几路控制信号V0.2.1的核心任务之一就是让新人分清这些信号各自走什么总线以及为什么这么分。5.1 我习惯用的总线布局方案整个通信架构我习惯这样搭主控和电调之间用CAN总线底盘四台电机一条CAN线云台两台电机一条CAN线发射机构两台摩擦轮电机一条CAN线主控和传感器之间多用串口——陀螺仪用串口发姿态数据激光雷达数据量更大会用更高波特率或者USB虚拟串口剩下的开关量、PWM信号比如灯条控制、风扇启停、蜂鸣器提示直接用主控的PWM或者GPIO引脚驱动。这是目前比较成熟也比较好排查故障的方案。CAN总线用双绞线对信号做差分传输抗干扰能力强而且一条线上可以挂很多节点只需要给每个节点配ID就行省得占用大量主控IO口。串口的优点是调试方便插个USB转TTL就能看到数据缺点是点对点通信设备多了线也多了。5.2 布线顺序与地线处理的细节经验V0.2.1在地线问题上花了不少篇幅这里值得展开。很多新人容易忽略的是信号地必须共地。主控的GND和电调的GND如果不连CAN高和CAN低之间的电位差会随意漂移轻则通信偶尔失败重则烧毁收发器。正确做法是CAN的屏蔽层或地线在单点接地不要形成地环路。另外布线顺序也会影响稳定性。功率线给电机供电的粗线和信号线CAN、串口线不能绑在一起走否则电机电流突变时会在信号线上感应出噪声。我们的做法是走线槽分区机箱左边走功率线右边走信号线交叉的地方尽量垂直通过减少耦合面积。这听起来像玄学但用示波器对比过走线整改前后的CAN波形毛刺确实明显少了。6. 调试工具与故障排查硬件工程师的日常讲义的最后一章写的是怎么把电路救活。硬件这东西不怕做不出来就怕出了问题不知道从哪里查起。V0.2.1把排查的思路总结成一套方法论配合工具来用效率能提升不少。6.1 调试设备怎么配比较够用刚开始我们只给新人配万用表后来发现不够又加了示波器和电流钳。这三样东西其实就覆盖了90%的故障场景。万用表查通断、查电压是否到位示波器看通信波形CAN的显性隐性电平、PWM的频率和占空比、看电源纹波电流钳则用来判断电机是否堵转、电池是否过放。如果条件允许再加一个直流稳压电源调试时有很大的安全感。给板子供电之前先把稳压电源的电流限制调小比如先限到1A如果上电瞬间电流飙升说明板子有短路直接断电检查而不是插着电池眼睁睁看它冒烟。我一直说调硬件的时候电流限制就是你的保险比什么保护电路都管用。6.2 常见故障的现象、原因与处理对照V0.2.1里有一页三栏表格被很多队员拍下来当手机壁纸。这里摘录几个最高频的故障供参考现象可能原因处理建议上电后主控反复重启供电电压跌落或纹波过大检查稳压模块输入输出、是否有设备短路、换更大容量电容电机嗡嗡响但不转编码器信号异常或电调未解锁检查编码器线序、确认电调接收到的使能信号正常CAN通信间歇性失败终端电阻缺失、地环路干扰在CAN总线两端加120Ω终端电阻检查接地方式云台朝一个方向缓慢漂移IMU未校准或安装松动重新校准陀螺仪零偏检查减震结构是否牢固这些故障有一个共性都是看起来像软件问题实际是硬件问题。新人在遇到这种情况时我的建议永远是把示波器探头夹上去看波形先确认硬件层面有没有给出正确的信号再让代码背锅。绝大多数时候查完硬件之后代码什么也不用改问题就消失了。这份讲义V0.2.1里还有个小技巧我单独记一下所有接线端子处最好顺手打一个应力缓解环也就是让线在端子和固定点之间绕一小圈。这样拉扯线束的时候受力点在线材上而不是焊盘上能有效防止线芯在根部折断。这个细节是某次比赛前一晚我们排查了一整晚云台偶发失灵之后得出的惨痛教训。换了一批打环的线之后故障就再也没出现过。硬件这行的经验往往都是这么攒下来的。