ARTICLE DETAIL

资讯详情

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

智能车竞赛开源硬件解析:电源、驱动、传感信号链与抗干扰设计全攻略

智能车竞赛开源硬件解析:电源、驱动、传感信号链与抗干扰设计全攻略 当你真正跑完一场智能车竞赛再回头看那些在GitHub上公开的开源仓库感受是完全不一样的。21届比赛结束后soberup战队放出了一份以电路设计为核心的开源目录队里专门负责硬件的几个同学自称“疯狂电路组”从电源、驱动、传感器调理到整车的抗干扰细节全都摊开晒了出来。对于正在备赛的新队伍来说这份目录比很多教程都值钱因为它不是单点讲某个模块而是一整套经过赛场验证的电路方案怎么供电、怎么驱动电机、怎么采集摄像头信号、怎么把PID控制需要的角速度数据稳定地送进单片机。这篇文章我就以过来人的角度把这套开源目录拆开揉碎讲清楚每一块电路为什么这么做、实际调车会遇到什么问题以及哪些地方最容易翻车。1. 先读懂这份开源目录它到底开源了哪些东西1.1 竞赛背景与团队定位第二十一届全国大学生智能车竞赛赛制已经卷到相当程度。摄像头组要看环岛、十字、坡道电磁组要处理复杂的磁场环境节能组还要算能量回收每一组都离不开可靠的电路支撑。很多队伍把精力集中在算法和机械结构上电路只是“能用就行”结果到了现场才发现电源纹波一大摄像头图像就抖动电机瞬间拉载单片机直接复位陀螺仪信号被驱动电路干扰角速度数据噪声大到没法用。这些坑绝大多数都出在电路设计不够扎实上。soberup战队的做法完全不同。他们把电路当成和算法同等重要的核心方向来投入队内甚至专门有一个“疯狂电路组”成员分工明确有人管电源树有人管电机驱动有人管传感器信号链还有一个人专门负责抗干扰和可靠性设计。这种组织方式在一般学生车队里不多见但实际效果非常明显整车的电气系统故障率被压得很低赛场上大部分时间都在调算法而不是在修板子。1.2 开源目录里到底有什么打开这份开源目录第一感受就是“全”。它不是单一工程文件扔出来就算完而是按硬件、固件、调试工具、经验文档分层组织典型的目录结构长这样hardware核心板的原理图和PCB包括电源模块、电机驱动、传感器接口、通信接口四大块每个模块都有单独的文件夹和说明文档。firmware单片机工程底层驱动和外设初始化写得比较规整关键寄存器配置都有注释。docs这一部分才是真正的精华里面记录了供电计算、信号调理推导、PID参数整定日志甚至还有比赛现场的故障处理清单。tools调参上位机、串口波形工具、摄像头图像调试工具都是比赛过程中自己写的很实用。对于刚接触智能车的同学我的建议是先看docs再看硬件不要一上来就下PCB工程。因为硬件文件只能告诉你“是什么”文档才能告诉你“为什么”。比如电源部分为什么选用某颗Buck芯片、电感感值是怎么算出来的、采样电阻后级为什么要接差分放大电路这些设计逻辑都在文档里有体现。先看懂逻辑再打开PCB对照着看吸收效率会高很多。2. 疯狂电路组的供电与电机驱动方案解析2.1 从电池到每一路电源Buck/Boost/DCDC的设计逻辑智能车常用的电池是7.2V镍镉电池组或者2S锂电满电8.4V放电末期会跌到6V出头而单片机、运放、摄像头、舵机这些负载需要的电压各不相同。如果全部用线性稳压器扛能量全部变成热损耗大电流场景下根本压不住。所以整车必须做一张电源树先用一级或者多级DCDC把电池电压降到合适的中间电压再按需分路。在开源目录里最常见的配置是双路Buck一路把电池电压降到5V给舵机、摄像头、运放供电另一路降到3.3V给单片机、存储、逻辑电路供电。Buck电路的核心原理就是高频开关电感储能开关管导通时电感储能断开时电感续流给负载供电通过调节占空比稳定输出电压。这里有几个参数非常关键开关频率通常选500kHz到1MHz之间频率越高电感体积越小但开关损耗越大而且对PCB布局要求更高噪声也更容易辐射出去。电感纹波电流一般取最大负载电流的20%到30%。假设负载电流是2A纹波电流取0.4A开关频率500kHz输入8V、输出5V电感感值可以按下面的式子粗略估计占空比D ≈ 5/8 0.625电感两端电压在开关导通时约为3V导通时间约1.25μsL V × Δt / ΔI 3 × 1.25 / 0.4 ≈ 9.4μH。所以选10μH是合理的。感值太小纹波电流加大输出电容压力大感值太大动态响应变慢突然踩油门时电压跌落更明显。输出电容我们通常并联一颗100μF电解电容和两颗22μF陶瓷电容电解电容扛纹波陶瓷电容滤高频。Buck芯片的反馈电阻分压精度直接决定输出电压准不准一般用1%精度的电阻。Boost电路在车上的用途相对少但也有场景会用到。比如某些摄像头需要12V供电或者电机驱动电路需要把栅极驱动电压抬高到10V以上这时候就要用Boost把电池电压升上去。Boost的基本结构是开关管对地、电感在输入端开关导通时电感储能断开时电感反电动势叠加输入电压给输出供电。Boost对PCB布局更敏感因为输入电流是连续的而输出电流是断续的环路面积没控制好纹波会非常难看。2.2 IR2110半桥和MOS驱动推挽、图腾柱到底在推什么电机驱动是整车功率最大的部分也是出问题最多的部分。soberup战队用的是IR2110半桥驱动NMOS全桥的方案这在学生竞赛里非常经典。很多新手第一次接触IR2110会困惑为什么 datasheet 里推荐加自举电容为什么逻辑输入电平还要分高低端这里的关键在于NMOS的栅极驱动要求。全桥电路里两个上管源极电位的电压是浮动的会随着电机换相上下跳动如果直接用单片机IO口驱动栅极电压根本没法保证比源极高10V管子就打不开。IR2110内部集成了自举电路用一颗电容把高端驱动器的电源“浮”起来每次下管导通时自举电容通过二极管充电上管需要导通时电容里存着的电荷再“垫”高高端驱动电压让上管栅极超过源极完成开通。所以自举电容的容量不能太小一般取0.1μF到1μF而且要靠近芯片引脚放置否则高端根本驱动不起来。“推挽电路”和“图腾柱电路”这两个词经常和MOS驱动一起出现其实说的是同一类事用两个三极管或MOS管组成互补输出级一个负责拉高电流一个负责灌低电流提高驱动能力。单片机IO口直接驱动MOS管栅极有两个问题一是驱动电流不够栅极电容充电慢开关边沿拖沓二是拉低能力弱栅极电荷泄放慢管子可能会在关断时导通。推挽驱动电路就是解决这个问题的两个三极管交替导通像两个人接力把栅极电迅速充满再迅速放掉。目录里还有一个小细节让我印象很深无源蜂鸣器驱动也用图腾柱。很多新手直接拿IO口推蜂鸣器结果单片机的IO口被蜂鸣器线圈的反电动势打坏或者声音发闷。蜂鸣器本质上是电感负载开关瞬间会产生高压尖峰必须用NPN三极管或图腾柱结构来驱动同时并在蜂鸣器两端加一个续流二极管和一个小电容吸收尖峰。这种“小电路大坑”的地方恰恰是疯狂电路组最在意的地方。2.3 看门狗、复位和蜂鸣器这些“小电路”最容易翻车看门狗电路在智能车上的重要性很多队伍是吃过亏才明白的。比赛现场电磁环境复杂单片机程序一旦跑飞整个车就会失控冲出赛道。soberup战队在硬件上做了两层保障一层是单片机内部的独立看门狗另一层是外部的硬件看门狗芯片。独立看门狗的好处是复位逻辑在芯片内部即使主程序死循环只要没在规定窗口内喂狗就会强制复位。但内部看门狗在某些极端场景下并不完全可靠外部硬件看门狗用独立的RC振荡器计时不依赖单片机时钟真正做到了“就算单片机自己挂了也能拉回来”。复位电路看着简单实际也讲究。纯阻容RC复位的问题是上电时间不确定而且单片机运行时电压跌落复位引脚的电压会跟着波动可能引起反复复位。目录里的做法是加专用复位芯片比如MAX809或STM32自带的复位控制器确保电源电压低于阈值时强制复位电压恢复到正常后再延迟一段时间释放复位信号。这个延迟很关键因为电源刚建立时晶体振荡器需要时间稳定过早释放复位信号会导致单片机在时钟不稳的状态下启动。蜂鸣器电路前面提到了再补充一个实际调车场景比赛前试车蜂鸣器一直在响查了半天发现是IO口初始化时电平不对导致蜂鸣器误触发。后来在蜂鸣器驱动管的基极加了RC延迟上电初始化时默认拉低一段时间彻底解决开机“嘀”一声的问题。这类细节如果不看开源文档自己摸索会很浪费时间。3. 传感器信号链从摄像头到运放的抗干扰设计3.1 摄像头接口和图像信号完整性摄像头组是21届智能车的主流方向之一疯狂电路组在摄像头信号处理上的设计思路很值得学习。数字摄像头输出的信号包括像素时钟PCLK、行同步HSYNC、场同步VSYNC和数据线D0-D7全是高速数字信号。在电机大电流工作的环境下这些信号线稍微处理不好图像就会出现毛刺、横纹甚至撕裂。他们在电路上做了三件事电源去耦摄像头供电单独从电源树拉一路用LC滤波器隔离防止电机驱动回流的噪声从电源线串进来。LC滤波器的截止频率要选对太低了影响供电动态太高了滤不掉噪声一般选100kHz左右的截止点用10μH电感加10μF电容组合。信号线串联电阻每一路信号在靠近单片机引脚处串33Ω到47Ω电阻匹配信号源阻抗抑制振铃。摄像头数据线频率并不算特别高但长排线在电机噪声下容易形成天线效应串阻可以明显改善波形边沿。地线完整性摄像头排线里专门安排一根较粗的地线并在单片机端用多点过孔连接到主地平面避免信号回流路径绕大圈。图像采集的稳定性还和摄像头支架的机械结构有关这就是防抖电路和机械防抖要结合的原因。硬件上陀螺仪或者加速度计的供电和信号线要远离电机驱动线机械上摄像头支架不能刚性锁死在车模上需要加减震球或泡棉。电抖和机械抖混在一起的时候先处理机械抖动再看电路噪声否则很容易做无用功。3.2 差分放大电路电流采样和运放经典电路的实战电机电流采样是电源管理和故障保护里很重要的一环。soberup战队的方案是采样电阻差分放大电路这是运算放大器经典应用里最实用的一种。电机相线电流大采样电阻只能选毫欧级的锰铜电阻或合金电阻比如10mΩ。假设电机堵转电流30A采样电阻上的压降是300mV这个信号单片机内部ADC没法直接测量因为信号太小直接接ADC分辨率不够采样电阻在电机桥臂的低端对地电压并不为零存在较大的共模电压。差分放大电路的原理就是让两个输入端分别接采样电阻两端运放只放大两端的差值共模电压被抵消掉。以同相并联结构的差分放大为例增益由外部电阻比值决定。假设目标增益20倍输入300mV输出6V已经能覆盖ADC的0到3.3V参考电压还需要按比例再衰减或选合适增益。增益电阻的选取必须用1%精度的低温漂电阻因为电阻比值一旦偏差共模抑制比就会恶化采样值就不准了。运算放大器11种经典电路里除了差分放大实际用得最多的是反相放大、同相放大、电压跟随器。电压跟随器看起来啥也没干但它输入阻抗极高、输出阻抗极低用来隔离前后级非常合适。陀螺仪输出的角速度信号先经过电压跟随器缓冲再送给ADCADC的采样电容不会反向影响传感器输出这也是信号链里容易被忽略的一环。3.3 防抖与滤波机械抖和电抖要分开治“防抖电路”在不同语境下指的东西不一样。在按键、拨码开关的输入电路里按键消抖指的是RC低通滤波加施密特触发器整形在编码器信号处理里防抖指的是对AB相脉冲进行滤波防止电机产生的EMI在信号线上制造毛刺导致正交解码丢失脉冲。编码器信号是智能车测速的核心soberup战队用的是硬件正交解码而不是单片机IO中断软件解码。STM32的定时器正交解码模式可以直接处理编码器AB相信号而且自带数字滤波内部会连续采样几次确认电平稳定才判定有效。硬件的正交解码在软件上就是读取定时器计数值不占CPU资源速度环和转向环的控制频率也更容易保证。如果编码器信号线太长或者离电机驱动线太近外部需要加一阶RC低通滤波消除高频毛刺RC时间常数建议在0.1μs到1μs之间既要滤掉噪声又不能影响正常脉冲的边沿。再往后接施密特触发器让边沿变干净。这套“RC施密特”的组合就是数字信号防抖电路的基础形态。4. 从调参到完赛控制链路与赛场实战4.1 PID输出与角速度闭环电路怎么配合算法21届智能车赛场上“智能车PID输出角速度”是被讨论最多的关键词之一。这个说法本质上描述的是转向控制的一种实现方式车模的转向执行机构是舵机但舵机的目标位置不是随随便便给的它需要根据赛道偏差算出来。在弯道中车体本身有横摆角速度如果能用陀螺仪测出角速度把它引入PID控制的反馈量通常是微分项转向就会顺滑很多入弯不会猛打、出弯不会回摆。这套控制逻辑能不能跑起来说到底取决于陀螺仪信号的质量。陀螺仪输出的角速度模拟电压或数字量先经过电压跟随器缓冲再进行低通滤波去掉高频振动分量。滤波参数跟控制周期是匹配的控制周期1ms到2ms滤波截至频率就选在100Hz左右太低了会把真实角速度信息滤掉太高了噪声进PID微分项会放大抖动。开源目录里记录了完整的调参日志很多队伍到了现场还在疯调P、I、D三个系数而soberup战队因为电路信号干净算法组的同学只花半天就完成了参数收敛这就是电路为算法服务的典型例子。速度反馈用的编码器电路前面已经说了硬件正交解码保证脉冲不丢软件才能精确计算速度。另外电机电流差分放大的采样值也会用来做电流环或者过流保护比如突然堵转时快速切断驱动输出防止MOS管烧毁。这个保护逻辑在比赛现场非常关键因为赛道边缘的护栏很容易卡住车轮没有过流保护的话驱动板可能一波就直接报废。4.2 485通信与调试接口现场调车离不开的“最后一根线”很多新手不理解智能车上为什么要用RS485通信直接用串口不就行了吗实际比赛现场调试工具、图传模块、赛道信息交互设备之间经常要走几米长的线普通串口是单端信号抗干扰能力差地电位不一致时通信很容易出错。RS485是差分信号两条线互为参考抗共模干扰能力强传输距离远支路拓扑也灵活。开源目录里485这一块的电路设计比较标准MAX3485芯片 120Ω终端电阻 TVS保护管。MAX3485是3.3V供电的485收发器方向控制引脚由单片机GPIO切换发送时拉高DE接收时拉低RE。120Ω终端电阻用在总线两端做阻抗匹配防止信号反射TVS管并在线间用于吸收静电和浪涌。有一点要特别注意如果总线上只接一个设备终端电阻必须接否则通信波形会有振铃数据时常出错。目录里专门记录过一次调车时数据丢包的排查过程最后原因就是漏焊终端电阻。调试接口方面板载SWD下载口、串口打印口、状态指示灯、复位按键、拨码开关一个都不少而且都引到了板边方便插拔。真正到了比赛场地你才会体会到这些预留接口有多重要。预赛间隙只有几分钟插上线就能改参数、烧固件、看波形比拿着电烙铁在车上飞线强多了。4.3 21届赛道元素环岛、十字、坡道背后的电路配合21届赛道的难点集中在环岛、十字、坡道这些元素上。环岛对摄像头组来说考验的是图像算法能不能稳定识别出环岛入口和出口对电磁组来说环岛附近的磁场分布非常微妙电感信号的基准会发生偏移。但不管算法怎么做硬件上都必须预留足够的信号接口。比如环岛识别需要同时使用摄像头和电磁电感或者需要切换多个摄像头画面这就需要在电路板上预留模拟开关或信号切换电路。soberup战队的方案是预留了一颗模拟开关芯片的位置通过GPIO选择不同传感器信号送入单片机的ADC硬件上先保证算法有足够的选择余地。坡道检测会用陀螺仪的俯仰角数据这个信号处理和角速度是同一路共用一个电压跟随器再分两路进ADC节约电路面积。十字交叉的误判同样和电路有关。摄像头在十字区域很容易丢失边缘信息很多队伍会额外加装了一个“十字检测电感”或者用陀螺仪横摆角速度辅助判断。横摆角速度来自陀螺仪如果陀螺仪电路抗干扰做不好在电机大油门加速时就会出现漂移十字判断就会出错。这也是为什么疯狂电路组花大力气做传感器电源去耦和差分信号调理的原因——算法再强喂给它的数据不干净照样白搭。5. 开源目录之外我的实操心得与避坑记录5.1 电路调试顺序与检查清单拿到开源PCB打样回来的板子千万别直接上电池。我整理的检查顺序是先目检焊点、确认正负极不短路再用万用表蜂鸣档测电源端对地阻抗正常应该能看到电容充放电过程而不是直接短路。然后先不插单片机只上电测量三路电源电压是否正确再看Buck电路输出纹波示波器上纹波峰峰值应控制在50mV以内如果超过100mV就要检查输出电容、电感方向和反馈电阻分压点。电源没问题后再插单片机用SWD连上调试器先跑一个LED闪灯程序确认最小系统正常。接着逐个测试外设PWM输出波形、编码器读数、摄像头图像、陀螺仪数据。最后才是接电机驱动让小功率先转起来再加大PWM占空比。很多人一上来就全功率跑一旦某根线虚焊或者驱动逻辑写错几秒之内就会烧掉MOS管甚至单片机。在实际调试过程中示波器和逻辑分析仪的作用非常关键。我观察过soberup战队开源文档里的一句话“没有示波器调电路全靠猜有示波器问题才能被看见。”比如电机启动瞬间电池电压的跌落幅度、PWM驱动波形有没有尖峰、摄像头PCLK边沿干不干净这些都是判断电路健康度的重要信号。5.2 几次翻车现场的复盘再多开源资料也代替不了踩坑经验的沉淀。这里记录三个我在实际调车中碰到、并且在开源目录复盘文档里看到类似案例的典型故障给新队伍提个醒。第一例是电源接反烧板。很多人觉得车模电池接口有防反插就不会错但比赛现场换电池动作很快偶尔会有人把电池反着怼进插头。目录里的方案是在电源入口加一颗大电流肖特基二极管做防反保护压降小、反应快。虽然二极管在重载下会发热但比一上电就烧主板传感器强太多。更严谨的做法是加防反接MOS电路压降几乎为零不过电路复杂度更高。第二例是电机堵转导致单片机复位。现象是车卡在护栏上电机还在使劲转电池电压被瞬间拉到很低电压监测复位电路立刻把单片机复位掉。如果是跑到一半突然复位车就会失去控制。解决思路有两个方向一是加过流检测电流超过阈值时立刻降低PWM占空比不让电机长时间堵转二是给单片机电源加一个小的备用储能电容万一电压瞬间跌落能给单片机撑过那几十毫秒至少让它把PWM置安全值。第三例是摄像头图像被电机干扰。现象是电机转速提高后图像下半部分出现横纹。排查下来发现摄像头排线沿着电机电调线走了同一段路径电磁耦合直接把开关噪声带进了信号线。解决方法是把信号线重新走线远离功率线并在摄像头电源输入端加LC滤波。这个案例很有代表性因为PCB布线时单看原理图完全没问题实际电磁环境复杂得多布局布线的经验只能靠实测积累。写在最后这些电路经验比单纯的代码更有长期价值整理soberup战队的开源目录时我最大的感受是智能车竞赛从来不只是一个写算法的比赛它是对一个学生从模电、数电、嵌入式到控制系统全部知识的大考。疯狂电路组之所以能在赛场上少翻车不是因为哪一颗芯片选得多高端而是因为他们把每一路电源的去耦、每一个信号的参考地、每一根线的回流路径都认真对待了。这些基本功放在今后的项目开发里一样管用。如果你正在准备下一届比赛我的建议很简单先把供电做好再把信号链理顺最后才谈得上PID参数神奇不神奇。开源目录可以帮你少走很多弯路但最终你的车还是要靠自己一点一点调出来。遇到电路问题不要烦躁用示波器去测用逻辑去想用文档去记下一场你会感谢现在这份踏实。
返回列表