ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

RoboMaster硬件实战:电源树、Buck电路与CAN总线调试指南

RoboMaster硬件实战:电源树、Buck电路与CAN总线调试指南 这份讲义在战队共享文档里躺了快一年V0.2.1是省赛结束之后我花了一个通宵整理的修订版。RoboMaster的硬件学习曲线比绝大多数校园项目都要陡你需要在底盘、云台、发射机构同时运转的比赛机器上搞定电源、通信、传感器和驱动电路而且留给你的调试窗口往往只有两三天。很多新人拿到一块主控板或者驱动板第一反应是问这玩意儿怎么通电第二反应通常是为什么电机一转单片机就复位。这份讲义就是想把这层窗户纸捅破讲清楚一块比赛机器人主板上到底发生了什么以及你该怎么从零把它调通。这篇内容主要写给三类人刚进RM战队、被分到硬件组的大一新生做电控但经常被硬件问题卡住、想反向搞懂电路的软件同学还有那些已经能抄参考设计、但还不太会自己算参数和排故障的进阶选手。我不会只贴原理图也不会只讲理论更多是把我这两年画板、打板、debug翻车、赛前救火的真实经验写下来。V0.2.1这个版本号里藏了不少踩坑之后才补进去的结论。1. 为什么RoboMaster要有一套独立硬件讲义1.1 硬件组在RM战队里到底负责什么很多新人以为硬件工程师就是画个板子、焊个板子直到第一次参加战队例会被问电源树画好了吗才意识到事情没这么简单。在一支正经的RM战队里硬件组要交付的东西大致可以分成四块动力电源系统、主控与传感器电路、通信物理层、还有各种驱动与保护电路。动力电源系统负责把官方电池组的24V电压变成机器人身上每一路设备需要的工作电压这个直接决定底盘和云台能不能稳定输出功率。主控与传感器电路包括最小系统板、IMU、电流采样、编码器接口这些属于机器人的神经末梢。通信物理层指的是CAN总线、串口、SPI这些总线在板级上的实现。驱动与保护电路则是电机驱动器、舵机电源、保险丝、TVS管这些肌肉和护甲。这些工作有一个共同特点一旦交付给电控组你基本没有机会在现场改硬件。所以我跟新人反复强调硬件工程师在RM里的核心职责不是把板子画出来而是把板子的可靠性提前设计进去。软件可以OTA硬件只能飞线——飞线多了车就离报废不远了。1.2 从V0.2到V0.2.1这次修订补了哪些洞V0.2.1这个版本号看起来只是小版本更新实际上改的东西不算少。V0.2发布之后队伍经历了整个省赛赛季期间暴露的几个硬件问题都被我一条条记下来最后集中补进了这版讲义里。第一个修正点是Buck电路的电感计算。V0.2里我直接推荐了一个固定感值后来发现不同负载条件下纹波表现差很多这次补上了完整的计算公式和选型边界。第二个补充是CAN总线的终端电阻实测数据。之前只在原理图上标注了两端并联120Ω但没有解释为什么有时候只用一端也正常、什么时候必须两端都用这次加了实测波形对比。第三个新增内容是GD32H7的ADC硬件滤波使用心得这是赛季中换主控之后总结出来的。之所以坚持用小版本号而不是重新发一份文档是因为我觉得硬件知识本来就应该是迭代式的。V0.2.1不代表V0.2是错的而是在告诉你V0.2里的哪些结论在什么条件下需要修订。这个思路做技术文档非常实用比每次推倒重来要高效得多。1.3 读这份讲义之前最好先有什么基础这份讲义不是零基础科普但门槛也不算高。我最希望读者先具备的能力是看得懂原理图上的元器件符号知道电阻、电容、电感、MOS管的基本工作原理。如果你还不会建议先花一晚上把降压电路为什么需要电感这个概念弄清楚再回来读第3章否则那些公式会显得很劝退。焊接方面至少要在洞洞板上焊过排针、焊过直插元件。RM硬件很大一部分工作在调试阶段烙铁用得不顺会非常痛苦。但反过来你不需要会画复杂的高速PCB也不需要学过信号完整性这些在V0.2.1里我都尽量用比赛场景能用到的方式来讲不会上来就扔一堆电磁场理论。2. 机器人硬件的三层骨架主控、电源与通信2.1 主控选型从STM32F427到GD32H7的实际体验RM圈子里最经典的主控方案就是官方开发板A型使用的STM32F427Cortex-M4F内核168MHz主频片上外设丰富社区例程和开源代码一大堆。对第一年参赛的队伍来说我真心建议直接沿用这个方案别折腾新型号因为电控组的代码、调试习惯、甚至报错信息都跟这个平台绑定硬件组在这个节骨眼上换主控风险极大。但如果你已经在用STM32F427打了一年想试试性能更强的方案GD32H7系列目前是不少强队的选择。它的Cortex-M7F内核能跑到480MHz内存和Flash也大不少关键是ADC模块带了硬件滤波功能这在高频电流采样场景里非常香能省掉很多CPU开销。不过GD32H7的寄存器映射和外设库跟ST不是百分之百兼容移植的时候要花时间核对尤其是时钟树配置和ADC触发方式别想当然地直接替换。选主控时硬件工程师不能只看算力还要看引脚分配和封装。我见过有人选了一颗144脚的大封装结果板子Layout空间不够被迫改方案重画。建议新人先把需要的功能列出来——几路CAN、几路串口、几路带采样的PWM、外部中断数量——再去对着数据手册的引脚功能表做分配这样能少走很多弯路。2.2 电源树设计别让电机把单片机关机了电源树是我每次培训最先讲的内容因为90%的车一跑就死机都是电源问题不是代码问题。RM机器人的电源起点是官方电池组的24V一路要送给云台电机和风扇通常降到12V用一路要送给逻辑电路和裁判系统降到5V5V再经过LDO降到3.3V给MCU。整套电源树看起来简单设计细节都在纹波和瞬态响应上。电机是机器人里最大的干扰源。大电流电机启动瞬间会把母线电压拉低很多如果5V是从24V直接Buck降下来的Buck的响应速度又不够快3.3V就会被拖垮MCU当场复位。我的建议是给MCU供电的3.3V不要直接从动力Buck后面接而是先降到5V再用LDO降压到3.3V让LDO把残余纹波和电压跌落隔离开。另外模拟电路比如运放、ADC参考电压最好单独用一路低噪声LDO并且用磁珠或0Ω电阻把模拟地跟数字地单点连起来。电源树设计时还要考虑功率预算。每个模块的峰值电流、平均电流都要估算然后留出至少30%的裕量。别只看标称电流要看启动电流和堵转电流这些东西在电机数据手册里都有找不到就实测。选电感时要算饱和电流很多新板子一上电就发热严重就是因为电感饱和导致效率骤降。2.3 通信总线的硬件分工CAN、UART、SPIRM机器人身上跑的数据流大致分三类电机控制指令、传感器数据、裁判系统信息。它们各自的实时性要求不一样物理层也就分成了三条线路。CAN总线是RM的绝对主力官方电机M3508、M2006、GM6020全部走CAN裁判系统也主要走CAN。CAN是差分信号抗干扰能力强通信距离远1Mbps的波特率下做1kHz控制周期很充裕。硬件上最容易翻车的是终端电阻——CAN总线两端必须各接一个120Ω电阻否则信号反射会让通讯丢帧。而且要注意CAN收发器的地线必须跟总线节点共地差分信号不是无线电报不共地一样会出怪问题。UART主要给裁判系统串口、部分传感器模块用RM里的裁判系统串口是TTL电平直接连MCU就行。如果遇到USB转串口注意CH340这类芯片在Windows下可能遇到驱动签名问题特别是Win10/Win11系统系统提示无法验证此设备所需的驱动程序的数字签名时需要进入高级启动选项禁用驱动签名强制或者换用已签名的驱动版本否则调试工具完全没法用。SPI则是高速传感器的主场IMU比如MPU6500、ICM20602在SPI模式下能跑到1MHz以上比I2C快一个数量级。这里有一个很容易忽略的细节SPI片选分硬件NSS和软件GPIO片选。硬件NSS由外设自动控制适合连续高速读取软件片选虽然灵活但在读取大数据块时如果中断打断GPIO拉低时机就可能产生错帧。我的习惯是IMU这类需要低延迟连续读取的传感器用硬件NSS其他低速外设随意。从硬件分工的角度看这三条总线各有明确的用途千万别图省事把高速传感器挂到UART上或者让CAN去传大块日志数据。数据走错路后面的每个环节都会跟着难受。3. 关键电路计算从抄参考设计到真正读懂原理3.1 一个完整的Buck降压电路计算实例很多新人画电源电路就是照着数据手册抄典型应用电路电感电容全用推荐值。这样确实能把板子点亮但一旦负载变化大纹波和稳定性问题就会冒出来。我这里用一个24V转5V、最大负载1A的Buck电路完整走一遍计算过程。第一步确定占空比。忽略开关管压降占空比约等于输出电压除以输入电压D5/24≈0.208。第二步算电感。取决于纹波电流的允许值一般取最大负载电流的30%那纹波电流就是0.3A。假设开关频率500kHz电感量大概是L(24-5)×0.208/(500000×0.3)≈26.3μH。这个计算式的物理意义是电感太大则体积大、响应慢电感太小则纹波电流大、输出纹波电压高。实际选型我会取33μH留一点余量。第二步算输出电容。输出纹波电压主要靠电容吸收电感纹波电流。目标是50mV以内的纹波电容值约等于0.3/(8×500000×0.05)1.5μF但实际还要考虑电容ESR带来的额外纹波通常我会并联两颗22μF的陶瓷电容加一颗100μF的电解电容低ESR和高容值互补。反馈电阻、补偿网络这些部分不同芯片不一样但电感和电容的选型逻辑是通用的。这里想特别提醒新人数据手册里的典型应用电路是在特定条件下测出来的抄过来不代表在你的板子上也能稳定工作。你要算清楚自己的负载电流、输入电压范围、允许纹波大小再把计算值跟典型值做对比。3.2 ADC采样链路从采样电阻到滤波算法RM机器人里ADC采样的场景非常多电流采样、电压采样、电位器角度、热敏电阻温度每一项都直接关系到控制效果。当前战队普遍用的电流采样方案是采样电阻差分运放或者集成电流传感器。采样电阻方案的成本低、带宽高但必须用开尔文接法四线制把采样电阻的焊盘独立引到运放输入端避免大电流路径上的压降污染小信号。你可以用INA240这类差分运放把毫欧级电阻上的电压放大几十倍再进ADC。放大倍数怎么定假设采样电阻是0.5mΩ最大电机电流30A那采样电阻上的最大压降是15mV。如果ADC参考电压是3.3V运放最大输出3.0V那最大增益就是3.0/0.015200倍。实际我会留20%裕量选增益150倍左右的方案。ADC前端的RC滤波也很关键。R和C组成一个低通滤波器截止频率取1/(2πRC)。比如R1kΩ、C100nF截止频率约1.6kHz对1kHz的控制环来说够用又能滤掉高频开关噪声。如果你的主控是GD32H7它自带ADC硬件均值滤波功能可以配置采样结果自动取平均效果比软件滑动平均好还不占CPU。但要注意窗口长度不能太大否则会把真实电流变化拉平导致过流保护响应变慢。我实测下来窗口长度4到8最合适。3.3 保护电路反接、过流、尖峰一个都不能少比赛现场最容易发生的事情一个是电源接反一个是过流烧板还有一个是电机反向电动势把芯片打坏。这三种情况都可以通过硬件电路兜住。反接保护最简单的做法是P沟道MOSFET串在电源正极体二极管方向背对正常电流方向。接反时MOS管不导通电路自然断开。注意选型时看Vgs耐压和导通电阻导通电阻越小发热越少。过流保护可以用自恢复保险丝配合比较器电路采样电阻上的电压送到比较器超过阈值就关断驱动信号或拉掉电源比只靠保险丝响应快得多。TVS管是防尖峰的神器并接在电源轨上正常工作时它不导通一旦出现超过钳位电压的尖峰它瞬间把能量泄放掉。电机驱动桥附近和电源入口处各放一颗能省掉很多莫名其妙的复位问题。另外别忘了电感啸叫。有些板子上电后会有吱吱声通常是Buck电路的环路不稳定或者PWM频率落在音频范围内。这不是硬件坏了但长期啸叫会让电感发热可以在电感底下垫一层绝缘胶带再从控制环路上找找补偿参数。4. 硬件调试全流程空板到跑通的实际操作4.1 上电前的静态检查清单很多新人拿到新打样的板子就急着插电这其实是大忌。我调试新板的习惯是先在静态状态下把板子摸一遍流程固定下来每次都不跳过。用万用表蜂鸣档测各个电源轨的对地阻抗是最基本的一步24V、5V、3.3V对地应该呈电容充电特性如果直接短路会响得特别干脆。然后目检焊点重点看引脚密集的芯片有没有连锡、虚焊。把常用检查项列成一个表格贴在工位上非常实用检查项目 | 方法 | 合格标准 电源对地阻抗 | 万用表蜂鸣档 | 不报警呈电容充放电 电源正负极方向 | 对照原理图 | 与设计一致 关键芯片方向 | 目检丝印 | 与原理图一致 晶振负载电容 | 目检/表测 | 容值、位置正确 CAN终端电阻 | 万用表电阻档 | 总线两端各120Ω左右 连接器焊点 | 轻微拉扯 | 无松动、无虚焊还有一条很容易漏掉的检查确认板子上有没有遗留的锡珠或金属屑。曾经有一块板子怎么查都找不到短路点最后用放大镜在MOS管散热焊盘旁边找到一颗比芝麻还小的锡珠。这种问题如果不提前排除上电瞬间就可能烧一片。4.2 上电与最小系统调通静态检查过了也先别急着全压上电。用可调电源限流100mA给3.3V先通电看电流是否正常。如果电流明显偏大摸摸哪个芯片在发热用热成像仪一照就清楚。这一步能提前发现焊接错误和反接的芯片。确认3.3V正常之后再给整板供电但限流要从小到大慢慢加。电压用万用表确认纹波用示波器看。测3.3V纹波时一定要用示波器探头上的接地弹簧而不是夹一根长地线否则探头环路会像天线一样把环境噪声采进来测出来的纹波大得吓人其实是测量方法的问题。最小系统调通的核心目标只有一个让LED按预期闪烁同时确保下载器能稳定连上芯片。如果下载器连不上优先检查SWD引脚有没有被复用、复位电路是否正常、3.3V是否真的稳定。还有一点经常被忽略VDDA和VREF引脚必须滤波干净否则ADC乱跳、芯片偶尔死机但用万用表量电压又是正常的非常隐蔽。4.3 外围模块的逐项验证与常见问题最小系统通了之后逐个模块验证顺序按照先电源、再通信、后驱动来。每一个模块都单独验证通过再进下一步不要图快一次性全上出问题的时候连排查范围都没有。电源模块验证时用电子负载或大功率电阻加负载看电压跌落和纹波是否在标称范围内。通信模块验证CAN总线先别急着接任何电机用示波器看CAN_H和CAN_L的静态电平隐性时两者都在2.5V附近显性时CAN_H约3.5V、CAN_L约1.5V差分约2V。高低电平正常再测终端电阻最后才接设备测通信。SPI模块验证时用示波器抓SCK、MOSI、MISO、NSS四条线的时序重点确认时钟极性和相位跟设备数据手册一致。驱动模块验证最危险一定要先低压限流。把母线电压从24V降到12V甚至更低做功能测试确认PWM信号和电流反馈都正确再升压。有新人上来就满压测试结果MOS管驱动波形不对上管下管直通当场冒烟。直通这个问题硬件设计时上下管驱动要加死区逻辑软件上也要做输出互锁。4.4 调硬件时顺手能用的几个工具技巧示波器的触发模式是个非常好用的排障手段。抓复位问题时把触发源设到3.3V电源轨上触发类型选下降沿再让电机转起来示波器一旦捕捉到电压跌落你就能直观看到复位的瞬间如果复位没有伴随电压跌落那问题就转向外部复位引脚或者看门狗了。热成像仪也是硬件调试的神器哪怕分辨率低的手持版都行。正常工作的板子发热分布应该均匀如果某个MOS管或者LDO局部发烫八成是Layout散热不足、选型余量不够或者驱动没正常工作。省赛前我还用热成像仪抓到过一个电机驱动芯片的PWM频率设置错误——示波器看波形完全正常但芯片就是异常发热最后发现是高电平占空比周期分配不均。逻辑分析仪在调试I2C、UART这类协议时序时非常有用几十块钱的8通道版本就够用。很多人不舍得买但一个赛季下来它帮你省下的排查时间绝对值回票价。至于USB转串口在Windows下的驱动问题前面说过提前把数字签名处理好别到比赛现场才装驱动。5. 比赛场景倒逼的硬件设计能量机关与功率控制5.1 能量机关的硬件配合稳定图像与同步触发能量机关是RM赛场上最考验综合硬件能力的一个场景。机器人需要识别旋转风车上的目标装甲板在窗口期精准击打整个过程对视觉、云台控制和弹道都有很高要求。从硬件角度看能量机关场景真正考验的是两个点相机供电的纯净度和云台控制的同步性。视觉相机对电源纹波非常敏感如果相机跟云台电机共用一个Buck输出电机加减速时图像会出现横纹甚至丢帧识别率直线下降。正确做法是单独给相机用一路低噪声LDO并且远离电机驱动电路布局。相机与云台运动的同步也很关键如果相机曝光时刻和云台实际指向之间有固定延迟高速旋转的能量机关基本打不中。硬件上可以通过PWM或GPIO外触发方式让相机在云台编码器到达特定角度时抓拍这跟激光雷达和IMU做硬件同步的思路是相通的——先把时间基准对好再谈软件融合。另外能量机关是高频动态场景视觉芯片或工控机的供电、散热和抗振都得提前考虑。别让云台急停时的机械冲击把接口震松必要时用螺丝胶固定连接器。5.2 功率限制下的电源设计取舍RM规则里裁判系统会对机器人输出功率做实时限制超功率会惩罚甚至直接断电。这个规则逼着你不能再简单地电池多少瓦就供多少瓦而是在硬件的储能和释放上做文章。超级电容模块就是为了这个场景存在的它利用双向BuckBoost电路先以较小功率从电池吸收能量存起来需要爆发时瞬间释放给底盘电机让机器人能在不触犯功率限制的情况下获得更高的瞬时加速度。双向BuckBoost的硬件计算重点在功率器件选型。你要知道电容侧电压范围、母线侧电压、最大充放电电流和开关频率。Boost升压放电时电流应力集中在开关管和电感上电感的饱和电流必须按最大放电电流算不能按平均电流算否则MOS管还没发热电感就先饱和了不但没起到缓冲作用还会烧板子。功率板上还要注意驱动芯片的隔离和散热大电流路径的铺铜面积、过孔数量都比普通控制板严格得多。我在V0.2.1里补了这一节的初衷就是希望新人别只盯着怎么让板子跑起来还要想怎么让整套能量系统按规则优雅地工作。三电平逆变器这类拓扑在RM里比较少见一般出现在更高压、更大功率的电力电子场景。如果只是做24V级别的超级电容模块两电平BuckBoost就足够了。硬件方案的选择永远服务于比赛需求别为了炫技增加风险。6. 给新人的进阶建议少走我摔过的弯路6.1 学硬件先学会读数据手册我问过很多新人拿到一个新芯片第一时间干什么大部分回答是搜中文教程或者看别人发的例程。不是说这些不行但数据手册里的绝对最大额定值、热阻参数、引脚说明、时序图、Layout指南这些都是教程不会系统讲的内容。尤其是绝对最大额定值这一页几乎能避免80%的烧片问题。比如MCU某个引脚标着最大5V你直接拿24V分压没分对就可能把它击穿再比如LDO的热阻参数算一下功耗就知道需要多大面积散热铜皮。读数据手册是有方法论的第一遍扫目录只看和自己设计相关的章节第二遍精读典型应用电路和推荐参数第三遍对着自己的设计逐个核对引脚的绝对最大额定值。一套流程下来你对电路的理解会比看十篇教程都深。6.2 用调试笔记沉淀赛季经验RM赛季长达大半年赛季初焊的板子到赛季末可能才暴露问题。如果不做记录你不会知道某次莫名死机其实是3个月之前某次飞线留下的隐患。从入队第一天起我就要求自己每天花十分钟记调试笔记内容包括现象、排查过程、根因、修复方案。这个习惯帮我省了无数重复排查的时间。比如V0.2.1里我记录过CAN终端电阻的实测数据空载时单端120Ω跟双端120Ω差别不大但一旦总线挂上5个节点以上单端终端就开始出现偶发丢帧。这个现象如果不记下来下次换一个拓扑的总线又得从头排查一遍。硬件调试的很多经验都是现象→根因的映射笔记就是帮你积累映射关系的数据库。6.3 软硬协同才是RM硬件的终极形态在RM战队里硬件工程师如果完全不懂软件很多问题排查起来会非常低效。比如PID调参发现电流反馈有1ms的滞后如果硬件人不了解采样触发点和PWM更新点的关系就想不到去查ADC触发配置。反过来电控如果了解硬件拓扑就能理解为什么功率环的带宽不能无限拉高。所以我的建议是硬件组的人至少要把官方开发板的例程跑一遍知道I2C、SPI、CAN在MCU里是怎么初始化的电控组的人也要学会看原理图至少知道哪几个引脚跟电源、地、复位有关。软硬协同不是说一个人全干而是双方在交叉地带都有基本概念沟通起来才不会有那么多我这边正常啊但是车就是跑的怪问题。整个V0.2.1写下来最想传递给新人的一件事是硬件设计没有一次成功这回事所谓高手只是测试流程更严格、踩坑记录更完整、选型时想得更远。我之前带过一个大一新人第一次画电源板上电瞬间把稳压芯片烧了人都懵了。后来我让他把烧掉的芯片剖开看内部结构再对照数据手册理解失效机理第二次画板他就知道该怎么铺铜、怎么选电容。从那以后我就明白讲义可以给出所有公式和清单但真正让一个硬件工程师成长的永远是动手之后那段炸板→反思→再炸→再反思的循环。V0.3我大概率会把故障复盘方法论单独拎出来写一章——毕竟炸过的板子多了才会对电路有敬畏心。
返回列表