ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RoboMaster硬件设计实战:从电源架构到调试排错全流程

RoboMaster硬件设计实战:从电源架构到调试排错全流程 RoboMaster硬件基础讲义V0.2.1是我在备赛间隙重新整理的一份队内硬件培训材料。去年V0.1发下去之后新队员们的反馈特别真实画图软件的操作看懂了但一上焊台、一开示波器、一跑电机就懵原理图能画出来可拿到实车不知道从哪下手。所以这次我干脆把讲义的侧重点从“教你用立创EDA”换成了“教你搞懂一块RoboMaster板子从设计到调试的全过程”。这份讲义适合三类人刚进战队想干硬件的新人被电控同事追着改板子的嵌入式硬件工程师以及想系统梳理一遍自己知识体系的老队员。里面没有芯片手册的翻译腔都是我在步兵车、英雄车和能量机关触发板上实际拆过的板、炸过的管、抓过的波形。V0.2.1这个版本号也不是随便拍的后面我会详细说说这版到底改了哪些关键内容。1. V0.2.1更新了啥一次硬件讲义的自我迭代1.1 为什么不是V0.2而是V0.2.1版本号这个东西很多战队根本不在乎Git提交信息永远都是“update”。但硬件讲义跟软件一样必须有可追溯性。V0.1是赛季初写的第一版那时候主要任务是把新人快速带上手所以写了很多原理图工具操作、封装库怎么建、怎么导Gerber。等真打到中期备赛问题全暴露出来了新队员画的板子LDO烫得能煎鸡蛋ADC采样值跳得像心电图SPI读陀螺仪偶尔读到0xFF电调CAN总线稍微一长就丢包——这些V0.1里全没写。V0.2开始补充硬件架构、电源设计、接口匹配和调试排错但我一边写一边发现内容量太大了光电源树和超级电容就能写一章。V0.2.1是在V0.2结构定下来之后针对实际调试中出现的高频问题又做了一次增补修订顺便把“ADC硬件滤波”和“SPI硬件片选与软件片选”这两个坑单独拎出来写成了独立小节。版本号看起来只升了0.0.1但这几处恰恰是新手最容易踩的坑。1.2 这版重点修订了哪几处我把这次修订的内容整理成了一页更新日志方便队里其他人快速知道变了什么修订模块原V0.1状态V0.2.1状态电源架构只讲芯片选型增加整机功率预算和电源树设计超级电容提了一嘴补充双向Buck-Boost硬件计算主控外设只讲引脚分配增加ADC硬件滤波、SPI硬件片选/软件片选对比裁判系统接口串口接线图补充USB硬件ID、驱动签名问题能量机关触发板原理图示例增加可靠性设计、延迟实测方法调试流程无新增完整的上电、量测、波形抓取流程每个修订点都不是我坐在工位上拍脑袋想出来的全是比赛筹备期间被现场问题逼出来的。比如能量机关触发板第一版直接用光耦三极管驱动灯条结果视觉那边说触发时间不稳定一查是继电器延迟和灯条冲击电流的问题。这些内容必须写进讲义让下一届不用再趟一遍。2. 从24V电池到每个芯片硬件架构与电源设计2.1 RoboMaster战车的硬件“家谱”很多人拿到一块RoboMaster板子就急着看原理图结果被一堆芯片型号淹没。我的经验是先看整车的硬件架构知道每一块板子、每一个模块在系统里扮演什么角色再去看原理图就有方向了。一辆常规步兵车的硬件系统大概可以分成下面这几块子系统典型模块主要接口最容易出问题的地方动力系统M3508无刷电机、C620电调、云台电机CAN、PWM、电源CAN终端电阻、共地、大电流干扰控制系统主控板、IMU、遥控接收机SPI、I2C、UART、SBUS片选时序、陀螺仪数据毛刺传感器系统摄像头、TOF测距、激光雷达MIPI、UART、I2C信号电平不匹配、供电不足裁判系统裁判模块、灯条、测速模块UART、USB驱动识别、串口乱码能量机关触发板触发板、灯条、感应电阻光耦隔离、MOS开关延迟大、开关瞬间冲击这张表我让每个硬件新人抄一遍等他能不看表说清楚每个模块怎么供电、怎么通信再开始画原理图。硬件设计不是把芯片连起来而是先搞清楚信号流和功率流。2.2 电源树与压降计算RoboMaster官方电池是24V锂电池包满电约25.2V欠压保护后约22V左右。板上所有芯片、传感器、电机驱动的功率都来自这一路24V所以电源树设计是整个硬件设计的骨架。以步兵车为例我当时做的功率预算是这样的主控板3.3V供电大概0.5A舵机云台6V供电峰值2A视觉工控机12V供电约3A散热风扇12V约0.5A再加上裁判系统灯条5V供电约1A。折算到24V电池侧总功率大概在60W到70W。这个数字很重要它直接决定你要选多大功率的DCDC模块也决定线束和插头的载流能力。很多人喜欢用LDO低压差线性稳压器因为电路简单、纹波小。但24V降到3.3V压差超过20V如果用LDO即使只带0.5A负载功耗就是10W板子直接可以当暖手宝。所以RoboMaster板子上的电源转换必须用DCDC降压芯片比如TPS5450、MP2451、SY8303这类同步降压或异步降压芯片。我画电源树时的习惯是先把每路负载的最大电流列出来然后根据芯片的效率估功耗。比如TPS5450在24V转12V、负载3A时效率大概90%那么芯片自身发热约4W必须保证铺铜面积够大或加散热焊盘。很多板子烧芯片不是芯片选得不对而是热设计没做好铜皮不够宽芯片结温过高直接炸。2.3 双向Buck-Boost不只会算效率“双向Buck-Boost”这个热词很多玩硬件的朋友第一反应是充电宝或者电池管理。但在RoboMaster里它主要用在超级电容模块上。比赛规则对整机功率有限制而发射弹丸或快速加速时瞬时功率需求会超过限制超级电容就是缓冲池功率受限时充电需要爆发时放电。超级电容模块的硬件核心是一个半桥电路通过控制MOS管的开关方向既能让24V给超级电容充电Buck降压也能让超级电容升压回灌到24V总线Boost升压。这里最关键的硬件计算不是效率而是电感选型和纹波电流。电感纹波电流公式是ΔI (Vin - Vout) × D / (fs × L)其中D是占空比fs是开关频率。举个例子Buck模式下输入24V输出12V开关频率100kHz占空比50%如果我选了一个33uH的电感那么纹波电流大约为ΔI (24 - 12) × 0.5 / (100000 × 0.000033) ≈ 1.8A如果负载电流本身只有5A这个纹波占了36%电感和电容压力都很大。一般设计时会把纹波控制在额定电流的20%到30%以内所以要么把电感加大到66uH要么把开关频率提高到200kHz以上。这个计算必须在画原理图之前完成而不是等板子回来了才发现电感啸叫、MOS管发烫。双向Buck-Boost还有一个容易忽略的点上下管驱动电路。半桥的MOS管栅极驱动需要自举电容自举电容太小会导致上管驱动电压不足MOS管没完全导通损耗剧增。我在讲义里专门画了自举电容选型推荐表比如IR2104这类驱动芯片自举电容一般在100nF到220nF之间要根据开关频率微调。这些细节规格书上不会强调但炸管现场会教你做人。3. 主控最小系统和关键外设容易被忽略的硬件细节3.1 主控选型STM32F4还是GD32H7RoboMaster战队的主控芯片早年几乎全是STM32F407资料多、稳定、CubeMX支持好。但这几年GD32作为国产替代越来越常见尤其是GD32H7系列主频更高、内置ADC性能更强价格也更有优势。很多新队员以为引脚兼容就能直接替换这是硬件选型上最大的误区。STM32F407和GD32H7虽然某些型号引脚兼容但内核、时钟树、外设寄存器、ADC校准方式、Flash等待周期都存在差异。你按STM32画的原理图电控同学直接烧GD32的固件可能能跑但ADC采样率、USB枚举、SPI时序可能都会有问题。所以选型一定要让电控和硬件一起定确认好量产固件基于哪家SDK再决定画哪颗芯片。我这里不是劝大家别用GD32而是说用国产芯片必须对照官方参考手册重新核对外设特性。比如GD32H7的ADC支持硬件过采样如果你只是照搬F407的软件滤波思路反而浪费了硬件能力。这就是为什么我在V0.2.1里专门加了一节“GD32H7 ADC硬件滤波”。3.2 时钟、复位、下载电路与Boot配置主控最小系统是最基础也最容易画错的部分。首先是时钟电路常见的8MHz晶振需要配两个负载电容到地但电容大小不是随手选的要参考晶振规格书里的负载电容CL (C1 × C2) / (C1 C2) 寄生电容如果晶振要求12pF负载电容C1和C2各取22pF左右比较合适。选得太大会导致起振困难选得太小频率会偏高。我见过一块板子因为晶振电容配错串口波特率始终差一点通信偶尔乱码排查了三天最后发现是时钟不准。复位电路一般是10k上拉电阻加100nF电容到地NRST引脚低电平复位。有些设计会再加一颗按键方便调试。BOOT0一定要接下拉电阻到地否则上电后芯片可能进入ISP模式程序不跑新队员往往以为是供电问题其实只是Boot配置不对。SWD下载接口虽然只占四根线但硬件上最好加ESD保护器件信号线上串联33Ω电阻既能抑制振铃也能在插拔杜邦线时保护主控引脚。下载线走线要短不要穿过电机驱动或DCDC下方否则下载过程中容易受干扰。3.3 ADC硬件滤波先算带宽再选阻容ADC采样跳变是备赛期间被问过最多的问题之一。很多新人的第一反应是加大软件滤波比如多次取平均。但软硬分工要清楚ADC硬件滤波负责把高频干扰和混叠成分挡在ADC输入之前软件滤波负责去除有用信号里的周期性噪声。如果硬件上引脚直接拉一根长线到传感器软件怎么平均都救不回来。RC低通滤波器的截止频率公式是fc 1 / (2πRC)比如我要采集电池电压信号是缓慢变化的我希望把10kHz以上的开关噪声滤掉可以设截止频率2kHz左右。取R 1kΩ那么C 1 / (2π × 1000 × 2000) ≈ 79.6nF取标称值100nF。但这里有个坑R不能取太大否则ADC采样时采样电容从外部电容取电荷外部电容电压恢复不过来会导致采样值偏低。经验上R最好不超过10kΩC不小于1nF。GD32H7的ADC采样率很高但硬件RC滤波的截止频率要根据你实际想要的信号带宽来设不是随便放一颗104电容上去就完事。3.4 SPI硬件片选 vs 软件片选稳定性的分水岭SPI片选这个话题V0.1里只提了一句“用GPIO控制CS引脚”后来发现这是一个大坑。软件片选本质上是把CS当普通GPIO来操作优点是灵活任何引脚都可以做片选缺点是时序控制依赖软件一旦主控响应中断CS拉高拉低的时机就可能微调导致从设备采样到错误的字节。我调试IMU时遇到过这种情况用软件片选控制BMI088平时工作正常但一旦电机启动、中断变多陀螺仪ID就偶尔读到0xFF。用逻辑分析仪抓CS线发现CS低电平期间中间被中断耽误了一阵主控提前把CS拉高了。换成硬件片选之后CS由SPI外设自动控制时序由硬件保证再也没有出现过片选毛刺。所以我的建议是对于陀螺仪、Flash、ADC这类高速或对时序敏感的从设备优先用SPI硬件片选。只有非常低速、不敏感的器件才用软件片选。如果引脚确实不够软件片选时需要在代码里加临界区保护避免片选时序被中断打断。硬件上还可以在CS线上加一个小电容比如1nF对地滤掉线束引入的毛刺但这个电容不能太大否则会拉慢CS边沿反而影响高速通信。4. 电机驱动、裁判系统与能量机关接口可靠性的实战细节4.1 电机控制链路从CAN收发器到电调RoboMaster主流的动力方案是C620电调配M3508无刷电机主控通过CAN总线给电调发控制指令。CAN接口的硬件设计看起来不难但很多板子在这上面翻车。CAN收发器一般用TJA1050或SN65HVD230注意3.3V主控不能直接接5V的TJA1050需要选3.3V兼容的收发器或者做电平转换。CAN总线两端要加120Ω终端电阻吗这要看拓扑。短距离、节点少时不加也可能工作但比赛车上CAN总线往往要连电调、裁判系统等多个节点线束从车头拉到车尾建议在最远两端加120Ω电阻。如果拿着示波器测CAN_H和CAN_L发现信号边沿有明显振铃那就是终端电阻匹配得不好。我这里还有一个经验CAN收发器和主控之间要共地否则CAN收发器输入端的共模电压会漂移导致总线错误。电调信号线用双绞线最好没有双绞线也要把CAN_H和CAN_L两根线拧在一起减少差模干扰。电源线和信号线分开走不要绑成一束。4.2 裁判系统串口、USB硬件ID和驱动签名问题裁判系统是比赛里所有数据来源的基础硬件接口设计直接影响到电控和视觉的数据获取。老的裁判系统串口模块是3.3V TTL电平主控UART直连没问题但一定要共地。如果不共地串口接收端偶尔会收到乱码尤其是电机大电流工作的时候。新的裁判系统很多用USB接口输出这就会碰到硬件ID和驱动的问题。Windows识别USB设备靠VIDVendor ID和PIDProduct ID比如常见的USB转串口芯片CH340它的VID是0x1A86PID是0x7523。如果电脑提示“Windows无法验证此设备所需的驱动程序的数字签名”通常不是设备坏了而是你电脑上缺少对应驱动或者系统强制了驱动签名验证。处理办法有两个一是去芯片厂商官网下载新版驱动正规厂商的驱动都有微软数字签名装上就能识别二是在Windows高级启动选项里选择“禁用驱动程序强制签名”但这个是临时方案重启后又会恢复。对于自制USB设备硬件设计时就要想好使用哪颗USB芯片提前确认驱动兼容性不要在比赛前一晚临时换芯片。这里还要提醒一句驱动签名问题和硬件本身无关但新队员往往在设备管理器里看到黄色感叹号就以为是电路画错了最后绕了一大圈发现只是电脑缺驱动。所以讲义里我把“驱动安装”也列进了硬件调试流程。4.3 能量机关触发板从“点亮灯条”到“可靠触发”能量机关可以说是RoboMaster赛场上视觉和硬件结合最紧密的环节。触发板的作用不只是把灯条点亮而是要配合视觉识别、电控逻辑在精确的时间窗口内完成开关动作。这个模块看似简单却是硬件可靠性考验的重灾区。第一次做触发板时我们直接用三极管驱动灯条负载结果灯条上电瞬间冲击电流很大三极管基极驱动不够管子发热严重触发延迟也不稳定。后来改成MOS管开关光耦隔离控制信号还在负载两端并联了TVS管把感性负载关断瞬间产生的尖峰吸收掉。另一个容易忽略的是“软启动”。如果灯条回路有大电容上电瞬间相当于短路电源会被拉低主控板跟着复位。解决方法是加一个预充电电阻和MOS管延时导通让电容先通过电阻充电再全压导通。这个细节不写进讲义新人下一赛季还是会踩。最后硬件延迟必须实测。用示波器双通道一路接触发板的输入信号一路接负载输出电压测量从输入电平变化到输出开通之间的时间差。如果延迟超过10ms视觉和电控的联动节奏就会对不上。我把这个测试方法写成了标准操作步骤要求每块触发板出厂前都测一遍。5. 原理图到PCB打板前必须过的自查清单5.1 电源输入保护与防反接RoboMaster电池插头接反是每年都有人犯的低级错误。硬件设计必须在电源入口做防反接保护最常用的是P沟道MOS管方案正常供电时MOS管导通反接时体二极管截止电路不工作。选PMOS时注意导通阻抗RDS(on)要低比如5mΩ以内否则大电流下压降和发热都很明显。除了防反接还要加保险丝和TVS管。保险丝用自恢复保险丝防止短路后反复更换TVS管选型要看工作电压24V电池充满接近25.2V我一般选SMBJ26A或者SMBJ28A钳位电压要留够余量又不能太低导致正常供电时被击穿。TVS管的位置也很重要要尽量靠近电源入口放在防反接MOS管之后、DCDC输入之前才能最快吸收外部浪涌。如果你发现板子总是在插拔电池时损坏大概率是TVS放的位置离入口太远寄生电感削弱了保护效果。5.2 地平面、环路和回流PCB布局里最核心的一句话是“让大电流不要穿过小信号区域”。电机驱动、舵机这类大电流回路的走线如果经过主控晶振下方开关噪声会通过地平面耦合到时钟和复位引脚导致单片机莫名其妙重启。我的做法是功率地和信号地单点连接通常在主控板底部用0Ω电阻或磁珠连在一起。这样做的好处是大电流在地平面上形成的压降不会直接影响信号参考地。雷达、TOF、IMU这类敏感传感器供电走线还要加磁珠和去耦电容避免电源轨上的高频噪声串进去。采样电阻要用开尔文连接。比如电流采样电阻两端功率走线很粗如果你直接从功率走线上拉一根线到运放输入功率线上的压降会被采集进去精度很差。正确做法是从采样电阻焊盘上单独走一对细线到运放输入端采样线不流过功率电流。5.3 接插件选型与机械干涉很多硬件新人画板时只顾着原理图逻辑正确忽略接插件的机械空间。XH2.54适合小电流信号VH3.96适合10A以上大电流GH1.25适合紧凑空间。选插件前先跟结构队员对一下空间尺寸不然板子打回来装不进车体只能返工。线序标注是另一个细节。接插件旁边必须在丝印上标清1脚、2脚、电源和地尤其是JST-GH这种端子插反了很难发现一上电可能烧设备。V0.2.1讲义里我直接规定所有接插件必须画连线图标和正负极标记不然评审不通过。5.4 BOM管理、版本号和文件归档硬件的版本管理比想象中重要。每块板子丝印上一定要有版本号比如V0.2.1方便现场调试时快速判断是哪一代设计。BOM表里除了立创商城编号还要写清关键器件的替代料比如同一颗DCDC芯片有TI原装和国产替代替换原则是什么都要写明。原理图改版后导出PDF并重命名加上日期和修改人。Gerber文件打包时文件夹名带上版本号。很多战队打板回来发现焊盘和封装不对翻历史记录才发现看的是旧版Gerber。这些血泪教训我都写进了讲义的最后一章。6. 硬件调试实录上电顺序、仪器使用与排错路径6.1 上电前检查3分钟避免炸板新板子拿回来千万不要直接插满电电池。我的标准流程是这样的先目检重点看有没有焊桥、电容极性是否装反、二极管方向对不对、IC第一脚是否对得上封装。然后万用表蜂鸣档测电源正负极之间电阻如果接近0Ω说明有短路必须查清楚才能上电。确认没有短路后用可调电源给板子供电先把电流限制设到预期电流的五分之一电压从0V慢慢往上调同时盯着电流表。如果电流随电压线性增长说明后端有异常要立刻断电排查。等电压加到额定值电流也稳定后再用手摸一下主要芯片和电感的温度有没有异常发烫。这整个流程三分钟就能完成但能拦住至少一半的炸板事故。不要嫌麻烦直接上电池一旦烧毁检查成本高得多。6.2 烧录问题Keil Pack Install和驱动签名“Keil Pack Install 硬件错误”这个话题很多群里都有人问。其实这类报错大部分不是硬件坏了而是开发环境没配对。我第一次用GD32H7时Keil怎么也识别不到芯片装包也报错最后发现是Keil的Pack Installer必须联网下载器件支持包而调试现场的校园网可能屏蔽了Keil服务器。解决办法是去Keil官网手动下载对应芯片的DFP离线包双击安装后重启MDK问题就解决了。ST-Link或DAP-Link调试器如果连不上先查驱动是否安装好。Windows下如果提示“无法验证此设备所需的驱动程序的数字签名”参考前面裁判系统那节的方法处理。还有一种情况是SWD引脚被程序复用成普通GPIO导致第二次无法下载。解决办法是按住板子复位键点击下载的一瞬间松开复位让MCU在启动早期进入编程模式不行就拉高BOOT0用串口ISP擦除芯片。6.3 用示波器抓异常波形三个常见案例硬件调试离不开示波器但很多新队员只会看有没有波形不会看波形质量。我总结了三个赛季里最常遇到的抓波形场景。第一个是电机反转瞬间主控复位。用示波器测24V电源轨会发现电机制动时产生很大的负压尖峰虽然时间很短但足以让DCDC输出跌落主控欠压复位。解决方法是电源入口加TVS管电机驱动桥加吸收电路同时在主控电源输入端并一个大容量电解电容。第二个是ADC采样值跳动。万用表量引脚电压是稳定的但示波器一看引脚上叠着几十毫伏的高频噪声。这时候在前级加RC滤波问题立刻消失。这也是为什么我在外设章节强调ADC硬件滤波要先算带宽。第三个是SPI通信偶发错误。示波器单通道看波形可能看不出问题要同时抓CS和SCK看CS低电平期间SCK的时钟个数是否正确。我曾经抓到过软件片选期间SCK被一个中断拖延导致从设备少收了一个字节。换成硬件片选后波形整齐得像教科书。6.4 一套可复现的调试验收流程V0.2.1讲义的最后我给了一套调试验收流程要求每块板子交到电控手里之前必须按这个流程走完并填表。阶段使用工具通过标准目检与短路检查放大镜、万用表无焊桥、电源对地不短路裸板电源测试可调电源、电子负载各路电压正常纹波在允许范围最小系统启动示波器、调试器主控下载正常时钟稳定外设通信测试串口助手、逻辑分析仪UART/SPI/I2C数据正确带载测试电机、电调、传感器大电流情况下无复位、无丢包连续老化运行整车连续跑30分钟温度正常这套流程看起来很基础但能保证你交出去的板子不是“实验室能跑上赛场就挂”。调试过程中遇到的所有异常都要记录到笔记里附上波形截图这也是V0.2.1讲义后面持续更新的素材来源。现在整个战队都在用这套流程我也会在每次比赛后花两周时间整理新增的案例。硬件调试就是这样你提前踩掉一个坑比赛时就少一分风险。
返回列表