智能车竞赛电路开源全解:从电源纹波到PCB布局的实战记录

发布时间:2026/10/13 6:30:33
智能车竞赛电路开源全解:从电源纹波到PCB布局的实战记录
每年智能车竞赛结束后总有一波开源热潮。21届国赛完赛的那个夏天Soberup战队的开源目录在车友圈里被转了不少次尤其是“疯狂电路组”这个标签让很多人在群里问电路组到底开源了什么为什么值得专门整理一份目录我作为当时参与电路设计和后期调车的人把这份目录从第一版原理图开始一路整理到最终归档前后跨了大半年。这篇文章就把目录里最有价值的电路设计思路、调试记录、踩坑细节全部拆开讲清楚想让准备参赛的兄弟以及自己折腾智能车硬件的朋友能快速知道哪些东西可以直接拿来用哪些东西必须根据自己车架重新算。智能车是机械、算法、电路三足鼎立的系统工程硬件如果三天两头出问题上层算法再漂亮也白搭。我们当时给自己取名“疯狂电路组”其实就是想在电路这个环节做到极限主控能跑的算力不浪费电源纹波压到仪器量程尽头驱动级宁可多留余量也不在赛道上冒烟。这份开源目录不是简单的扔几个工程文件而是把设计目标、参数计算、调试过程和故障复盘全放了进去。1. 项目缘起与开源的初衷1.1 为什么电路组需要专门开源很多战队开源的时候算法代码和机械图纸往往比硬件更受关注但真正跑过比赛的人心里都清楚一个不稳定的电源可以把整个队伍逼疯。我们有一句内部玩笑话赛场上没有玄学只有还没被示波器抓到的纹波。电路组开源的意义不是告诉别人“我们的板子能跑”而是把“这板子为什么能跑、怎么调出来、哪个电容换过之后才稳定”这些隐性知识共享出来。我当时参与整理这份目录的时候最大动力来自刚入队时翻学长资料翻到崩溃的经历。年代久远的工程文件打开就缺库原理图和PCB对不上BOM表里有一半料号已经停产更别提那些“改一下就好”的口头经验等自己上手才发现根本不是那么回事。所以电路组开源本质上是在用工程化的方式对抗遗忘让后来者不用再从零开始碰运气。另外智能车竞赛的节奏非常快。从拿到新车模到正式比赛通常只有几个月电路组如果从空白画板子开始大概率会把时间耗在试错上而把开源目录作为“参考起点”能直接跳过很多初级坑。但我也知道直接抄板子是抄不出一等奖的所以我们特意在目录里写了设计决策文档解释每个关键器件为什么这么选让使用这份目录的人能真正理解而不是简单复制。1.2 这份开源目录里到底有什么整个开源目录按我们的工作习惯分成几大块这里先给一个总体清单后面再逐一展开。硬件工程文件含原理图源文件、PCB源文件、导出Gerber文件以及每次改版的对比记录。设计说明文档电源树、驱动级参数计算、传感器信号链设计说明这些是纯文字和公式方便不同基础的人阅读理解。调试记录按日期整理的调车日志包含现象描述、测量数据、修改动作和结果像实验记录本一样。软件接口说明底层驱动库的API说明以及主控引脚分配表方便软件队友快速对接。元器件BOM表标注了物料编码、推荐封装、参考单价和替代料这部分我们花了不少工夫整理。测试工具脚本当时用来做自动化测试的上位机脚本、数据采集示例可以直接配合串口或逻辑分析仪使用。文件结构上用中文命名所有文档和工程一一对应。这样做不是为了迎合谁单纯是因为队里队员水平参差中文命名能减少沟通成本。实际效果也很好新队员拿到目录后不需要老队员带照着调试记录就能自己复现大部分问题。2. 疯狂电路组的核心设计拆解2.1 电源系统架构与纹波控制智能车整车的电源系统可以算是电路的“心脏”我们车上用的是一块7.2V的动力锂电池但板上各个模块需要的电压完全不同主控和数字逻辑需要3.3V部分传感器和舵机需要5V到6V电机驱动用的是电池直供的7.2V功率母线。如何规划这棵电源树直接决定了系统稳定性。我们第一版设计在用LDO还是DC-DC之间犹豫了很久。经验不足的时候总觉得LDO简单干净一脚下去就是稳定电压但算过账之后就明白了电池电压7.2V要降到5V压差2.2V如果负载电流有1ALDO上白白消耗2.2W热量板上空间那么小散热根本扛不住。所以大电流路径必须用DC-DC尤其是给舵机和传感器供电的5V/6V一路。DC-DC本身是开关电源天然有开关纹波。我们实测过如果不加任何后级滤波一个普通的降压芯片输出纹波能到50毫伏以上这个数值在给模拟信号调理电路供电时完全不能接受。解决办法是在DC-DC输出后面加一级LC滤波然后对高精度模拟部分再用一颗低压差线性稳压做二次稳压。整个电源链路变成电池 → DC-DC粗调 → LC滤波 → LDO精调 → 模拟负载。这样实测下来模拟电源纹波能压到10毫伏以内在示波器上看基本是一条直线。电源树设计还有个容易忽略的点上电时序。主控、传感器、驱动芯片如果同时上电瞬间冲击电流可能把保险丝直接熔断甚至导致主控复位。我们通过 datasheet 查到每路负载的启动特性把使能脚按顺序控制先让主控起来再打开传感器电源最后使能功率级。这套时序逻辑很简单但对整车的稳定性帮助非常大。2.2 功率驱动级从半桥到全桥的取舍电机驱动是另一个绕不开的核心模块。我们最初尝试用分立MOS管搭H桥想着这样成本低、自由度大结果调试周期被无限拉长。分立方案需要考虑栅极驱动电压、死区时间、米勒效应还要自己解决电平转换问题任何一个细节没照顾到管子就会冒烟。后来我们换成了集成电机驱动芯片内置电荷泵和死区控制外围只要接几个电容电阻就能工作可靠性明显提升也能把更多精力放在控制算法上。驱动级有几个参数我们重点关注。首先是MOS管的导通内阻内阻越小大电流下的发热越低其次是电流检测我们在下管串了采样电阻把电流信号通过运放放大后送给主控ADC这样可以实时监测电机电流做堵转保护。还有一点是续流能力电机是感性负载关断瞬间会产生很高的反电动势如果驱动芯片内部的续流MOS不够好就必须外加快速恢复二极管或者TVS管来吸收尖峰。实际调试中我们吃过一次亏。当时发现某一路驱动在急加速的时候会偶发过流保护查了很久才发现是母线电容容量偏小电流瞬态变化时母线电压被拉低导致驱动芯片欠压复位。后来在功率输入端并联了多个低ESR的电解电容和一组陶瓷电容大电流工况下的电压跌落被明显抑制问题才彻底解决。2.3 传感器信号调理链让数据“干净”地进主控智能车的传感器信号有两类一类是电磁传感器的工字电感输出本质上是高频谐振信号的幅度另一类是编码器、摄像头等数字或模拟接口。这些信号如果不做调理直接送进主控ADC读出来的数据会飘得没法用。电磁信号这一路我们用了经典的“谐振电容 检波电路 运放放大”结构。工字电感与并联电容形成谐振选频网络比赛赛道的电磁信号会让电感两端产生一个与位置有关的感应电压。这个高频小信号经过二极管检波变成直流分量再用运放做增益放大最后送进主控ADC。检波级看起来简单但二极管的导通压降在信号很弱的时候会造成非线性所以我们选了低导通压降的肖特基二极管并在运放级做了零点补偿。运放选择上我们用的是轨到轨输出、低输入偏置电流的型号电源电压不高的情况下也能把动态范围用满。为了保护主控ADC不被过压打坏每路ADC输入端口都加了一个二极管钳位电路和一个RC低通滤波器既滤掉了高频噪声又在异常高压时把电压钳在安全范围内。编码器信号相对简单但因为电机换向会产生强烈的电磁干扰编码器线如果不做处理很容易把毛刺耦合进来。我们在编码器输出端加了RC滤波同时用双绞线传输并且信号线全程贴着地线走这样处理之后主控读到的脉冲数在急加速和急减速工况下都非常稳定再也没有出现过丢脉冲导致的测速跳变。3. 从原理图到PCB的实操记录3.1 关键元器件选型的底层逻辑元器件选型这件事直接决定了板子的性能和可采购性。我整理开源目录时BOM表是最费工夫的因为每个料号都希望给出合理的替代方案防止使用的人卡在采购上。主控芯片我们选的是一款Cortex-M4内核的国产单片机主频、ADC位数、DMA通道数量、定时器资源都够用而且库函数生态比较成熟网上资料也多。选型时特意算过ADC采样率的需求四路电磁信号加两路电流反馈加上必要的过采样总共大概几十K的采样率这颗芯片完全能满足甚至还有余量做数字滤波。电机驱动芯片我们选择的标准有几个硬指标峰值电流大于电机的堵转电流、导通内阻尽量小、自带死区控制。当时对比了好几款最后选了一颗内部集成栅极驱动和电流采样放大的型号外围元器件数量非常少这对提高焊接成功率很有帮助。电容电阻的选择看起来不起眼但影响很大。电源滤波电容我们优先选低ESR的X7R或X5R陶瓷电容而不是高容量的Y5V因为Y5V的容量会随电压和温度大幅下降。采样电阻用的是低温度系数的合金电阻这样电流检测在长时间工作后也不会因为温漂而产生明显误差。3.2 布局布线的经验教训PCB布局布线是整个硬件设计里最考验经验的部分。我们画板子第一版的时候就犯了几个典型错误后来反复改版才稳定下来。最核心的一条原则功率回路和信号回路必须分开。驱动电机的大电流路径要短而粗我们功率走线至少加宽到2毫米以上并且尽量走直线避免直角。功率地、电机地、信号地、模拟地严格分区最后在单点汇合也就是说整个板子的地不是一整块直接铺满而是分区块再通过过孔或窄铜皮连接。这样做的好处是大电流在地平面上造成的压差不会直接影响模拟信号基准。关于大面积铺铜我们的原则是数字区域可以铺铜但模拟区域和功率区域要有明确的隔离带。晶振下面不要铺地以免形成寄生电容影响起振晶振本体要尽量靠近主控引脚走线短且对称。DCDC的电感是主要的电磁干扰源电感底下能不开窗就不开窗并且电感远离信号调理区域。3.3 散热、安全间距与测试点功率器件发热不是玄学是热阻和功耗算得出来的。MOS管或驱动芯片的焊盘底下我们特意做了大块开窗并且画了过孔阵把热量导到背面铜皮上实测温度能降十几度。如果板上空间允许还可以预留一个小的散热片位置虽然竞赛车上未必用得上但调试阶段长时间满载跑的时候多一分散热余量就多一分安心。安全间距上动力电池的正负极之间以及功率区与其他区域之间我们都遵守了常规的高压间距规则尽量拉开距离并且把所有走线都做了丝印标注。另外很重要的一点是在板上预留了足够的测试点每个电源轨的电压测试点、关键信号测试点、地测试点。示波器探头夹子不是总能找到合适位置测试点设计到位调试效率能提升一大截。焊接和调试的时候我们还经历过一次低级教训第一版板子的板边邮票孔位置画错了导致无线模块的天线区域被地铜皮盖住信号强度下降。这个在原理图上看不出来必须实际测试才能发现。那之后我们每次布局都会把所有天线、接口、螺丝孔的位置在三维视图里过一遍避免再有机械干涉或者电磁遮蔽问题。4. 开源目录的内容组织与使用指南4.1 如何快速上手这套电路开源目录再全使用的人也得有正确的打开方式。我建议拿到这套电路资料后按下面顺序操作效率最高。第一步不要急着下工程文件先把设计说明文档和调试记录通读一遍。这两份文件里写了大量的“为什么这么做”和“之前怎么做失败了”比直接看原理图有效得多。第二步按BOM表采购元器件不要随意替换关键料号如果确实缺料优先参考BOM表里给出的替代型号。第三步打板时建议直接使用我们导出的Gerber文件参数可以参考两层板、1.6毫米板厚、绿油铜厚尽量选1盎司以上功率路径更稳妥。第四步焊接顺序有讲究先焊电源部分用万用表确认各电压轨没有短路再焊主控最小系统烧录一个点灯程序验证芯片能跑最后再焊驱动和传感器接口。这样分级上电出问题能快速定位。作为参考起点这套电路可以直接跑常规电磁循迹的车模。但我要提醒一句任何开源硬件都不可能适配所有机械结构和电机参数驱动级电流采样增益、LDO输出电压微调、滤波电容容值这些都可能需要根据自己的车架重新计算。4.2 文件结构详解与关键文档说明我们的开源目录采用清晰分层的文件夹结构习惯用过Git的人都很好上手。核心目录大致是这样/Doc设计说明、调试记录、问题汇总表/Hardware/Principle原理图源文件按模块拆分/Hardware/PCBPCB工程和Gerber输出/Software/Drivers底层驱动代码和API说明/Software/Tools调试上位机脚本、数据分析脚本/BOM基础物料清单含备选料/Archive旧版本工程方便追溯历史关键文档中我最推荐新队员先看“调试记录”。这份记录不是一个流水账而是按时间顺序记录了每一次改动前后的测试数据。比如某次发现电磁信号突然跳变排查过程记录了电源纹波测试结果、信号线屏蔽处理前后的波形对比、软件滤波参数调整记录。这些内容能帮助使用的人学会“碰到问题从哪里入手”。还有一个容易被忽视的文件是“引脚分配表”。智能车项目里软件和硬件联调时最怕引脚定义混乱。我们把所有引脚功能、复用的定时器通道、ADC通道编号全部列进一张表里软件人员拿到这张表就能开始写驱动不需要再对着原理图数引脚号。5. 调车过程中的常见问题与排查实录5.1 主控上电复位的元凶电源纹波我们有过一段时间被主控随机复位折磨得够呛跑车过程中偶尔会出现屏幕画面突然重置有时候是过弯的时候有时候是原地打方向的时候。一开始以为是软件跑飞后来用示波器挂在主控电源引脚上观察才发现复位瞬间的电源电压出现了一个很深的跌落尖峰。原因是电机急加速瞬间从母线上抽取了大电流母线电压瞬间跌落DC-DC还没来得及响应主控已经欠压复位了。排查到这里解决办法就清楚了。在DC-DC输出端加大容量电容并且换用低ESR的类型同时把主控供电从DC-DC后级单独加了一路LC滤波。这里要特别注意陶瓷电容和电解电容要混合使用电解电容扛大电流冲击陶瓷电容负责高频去耦。处理后即使电机堵转瞬间主控电源电压波动也控制在0.2V以内。5.2 驱动芯片发烫与死区设置驱动芯片发热的问题我们在夏天调试时特别明显一开始以为是环境温度高后来用热成像一看某一路MOS的温度明显比其他路高一截。仔细查之后发现问题出在死区时间上。如果驱动芯片上下桥臂切换时死区时间太短会出现短暂的直通这个直通电流不一定会立刻烧管子但会让管子温度持续偏高长时间工作后开关损耗变得非常大。我们把驱动芯片换成了死区时间可以独立配置的型号把死区调到一个合适值发热明显下降。这里给个参考经验死区时间不是越大越好太大会影响PWM调制精度导致电机在低速时不平滑太小又会有直通风险。要结合驱动芯片的传输延迟和MOS管的关断延迟综合设置调试时用示波器同时看上下桥的栅极波形就能找到最合适的区间。5.3 电磁信号跳变的干扰源排查还有一次电磁传感器的数值在静止状态下也会偶尔跳变。我们最初怀疑是检波二极管性能不好换了好几个型号都没用。后来发现真正的干扰来自舵机PWM信号线。舵机控制线的PWM信号频率不高但边沿很陡这条线刚好从电磁调理电路附近穿过容性耦合把跳变带进了信号链路。处理方法有两步硬件上把PWM线改成双绞的屏蔽线屏蔽层单端接地并且与传感器的信号线拉开距离软件上在ADC采集之间加入一个极短的延时避开数字信号边沿变化的时间点。两种措施叠加之后电磁数值的跳变彻底消失。这件事给我很深印象很多“看起来像软件问题”的现象根源其实在布局布线。5.4 常见问题速查表我把我们在调试阶段遇到的典型问题整理成了一张速查表开源目录里也放了这里摘录核心部分供参考现象可能原因排查方向解决措施主控偶发复位电源跌落或干扰示波器测主控电源纹波加大电容增加LC滤波电机堵转或电流过大采样电阻阻值不合理测采样电压算实际电流重新计算采样电阻与放大倍数驱动芯片过热死区不足或散热不够热成像检查各MOS温度调整死区改善散热焊盘电磁信号跳变信号线被干扰断开疑似干扰源测试屏蔽线、滤波、物理隔离编码器丢脉冲信号毛刺或地电位差逻辑分析仪抓波形RC滤波优化接地电压转换芯片啸叫环路补偿参数不合适看开关节点波形调整补偿网络或更换电感电容这张表的价值在于它记录了问题现象和排查方向的一一对应关系新手碰到类似问题可以直接按图索骥不用再拿示波器乱戳。6. 写给下一届如何站在开源肩膀上做自己的车开源目录的本意是帮大家省时间但省下来的时间不应该用来躺平而应该用来思考更深的问题。我们见过不少人直接拿着别人的原理图打板烧录别人的驱动结果车子一跑就出奇怪问题根本不知道从哪下手。原因很简单没有理解设计逻辑就没有办法做出正确修改。举个例子驱动板的电流采样电阻如果只想着“开源里这么设计我也这么做”换了一个功率更大的电机之后采样电压可能直接超出ADC参考电压电流保护完全失效。这时候需要回过头来自己算一遍电机的最大电流是多少希望达到的采样满量程电压是多少然后反推采样电阻和运放增益。这种计算并不复杂但能帮你真正掌控设计。我也不建议所有人全盘照搬我们这套电路。每个队的车架结构、轮胎特性、赛道预判都不一样适合自己的才是最好的。可以把开源目录当做一个功能完整的参考平台在此基础上删减不需要的模块增加自己需要的接口或者换用更合适的驱动芯片。重要的是形成自己的硬件设计闭环。最后再说两句整理这份开源目录的整个过程对我个人而言最大的收获不是获奖本身而是学会了把经验变成可复现的东西。现在回看第一版那堆飞线和临时替换的电容依然能想起当时调不出来在实验室待到凌晨的焦躁。但正是那些烧掉的MOS管、乱跳的时序、难缠的纹波让我真正理解了电路设计里“原理”和“实际”之间的差距。如果你准备开始自己的智能车电路设计我的建议是先照着这套目录完整搭建一遍再试着根据你的理解做第一处修改。等你亲手改过的模块出了新问题又能自己修好那时候这份开源目录就真正成为你的东西了。希望大家玩车愉快烧板子的时候记得拍张照那也是难得的学习资料。