智能车竞赛圈里一直有个说法:在一辆车的四大块里,机械决定了上限,算法决定了下限,而电路板是整个系统的心脏。参加第二十一届、第二十二届全国大学生智能车竞赛这几年,我们“疯狂电路组”在Altium Designer上踩过不少坑,也积累了一套从原理图设计到赛道计分的完整打法。这篇文章想把我们从元器件选型、AD工程搭建、赛道识别小车电路设计到针对竞赛规则的计分策略全部掰开揉碎讲一遍,适合今年准备参赛的新队伍,也适合已经被板子卡到凌晨三点的老玩家参考。
先说清楚这套体系的定位:我们所有主控板和驱动板都用Altium Designer完成,版本从AD20一路用到AD22;赛道元素我们主攻电磁和摄像头两条识别路线;计分策略上,不是单纯追求“跑得快”,而是把电路可靠性、容错率和规则加分项摆在同等权重。这篇文章不聊虚的,直接按工程化的思路走。
1. 内容整体设计与思路拆解:从赛道需求反推电路方案
1.1 竞赛到底考的是“画板子”还是“做系统”
很多第一次参赛的队伍以为智能车竞赛是纯算法比赛,真正上手之后才会意识到,赛道识别小车电路识别设计的质量直接决定了算法能不能跑起来、跑得稳不稳。第二十一届智能车竞赛的规则大家都能查到,但规则里很多隐性要求,比如车模尺寸限制、传感器数量限制、供电电压区间,这些全部要靠电路设计去兼容。我们队伍的做法一句话概括:先锁赛道,再定传感器,最后才开Altium Designer画图。
赛道设计的核心是“识别链路”的确认。比如电磁组用的工字电感加运放调理电路,前置放大器的增益、滤波器的截止频率都要根据赛道上的导线电流频率来定。摄像头组的核心则是图像传感器与主控之间的数据传输带宽和接口电平匹配。我们这一届大部分组别用的是缩微光电和电磁混合方案,成本低、可复制性强,完整方案在开源社区能找到,但直接拿别人工程文件去打板的人基本都吃了亏——元器件封装修正、供电噪声、排针定义不匹配,这些坑只有自己重新在AD里整理一遍才能避开。
这个阶段我建议队伍里至少要有一个人对整车的功率预算有数。驱动电机瞬时电流可以达到好几安培,舵机在打角瞬间也会有尖峰电流,如果电源网络在原理图阶段没有做扇出规划,PCB打样回来后就会发现一块板子上几十个电容全在乱飞,纹波压不住,最后连单片机都复位。所以在AD里编辑原理图时,就要把电源树画出来:主电源进来之后分几路、每一路负荷电流大概多少、在哪个位置放储能电容。
1.2 为什么选Altium Designer而不是其他EDA工具
这个问题的答案其实很现实:队友中大概率有新手,AD的学习曲线相对平缓,网上的元器件库、教学视频、竞赛开源工程绝大多数都是AD格式,降低了沟通成本。AD的交互式布线、规则检查、3D视图在评估板级电磁兼容问题时非常好用,尤其是一块板同时包含模拟小信号和数字控制电路的时候,可以直观地在3D界面里看布局,提前发现传感器插头被外壳挡住这种低级问题。
另外,Altium Designer在最新版本里加入了一些AI辅助功能,比如根据自然语言生成原理图和PCB框架。我们队伍实测下来,AI生成的原理图对于标准电源模块、最小系统这类成熟节点是有参考价值的,但涉及运放参数、传感器接口适配时,建议还是按自己计算出来的值手工搭。AI可以给你一个起点,不能给你一个能直接跑赛道的板子。
还有一点,是版本管理的习惯。我们用AD22做工程,但给队友交付源文件时会另存一份兼容版本,避免有人装了AD20打不开工程。工程内的命名规范也提前统一:原理图按模块划分Sheet,PCB按功能区域分组,元器件位号以模块缩写开头。这些小习惯在后期Debug时能省出大量时间。
2. 核心细节解析与实操要点:AD工程准备与元器件库建设
2.1 安装与初期设置:别让环境问题拖慢进度
每年赛前都有队伍卡在Altium Designer安装上,尤其是第一次接触的同学,容易在License激活、插件下载、缓存路径这几个环节出问题。安装AD20或AD22时,如果碰到“Stream write error”这类报错,基本是安装包存放路径权限不足或者杀毒软件拦截了缓存写入,解决办法是右键以管理员身份运行安装程序,并把安装目录和缓存目录设置到空间充足的本地磁盘。
装好之后第一件事不是画原理图,而是把系统的缓存策略改掉。AD工程越做越大,尤其是PCB文件保存时会自动生成一堆临时历史文件,工程打开变慢、软件卡顿、自动保存卡死,多数和缓存目录膨胀有关。Altium Designer如何清理缓存这个问题其实很简单:在Preferences里找到Data Management,把备份文件保存位置切到独立文件夹,并设定清理周期,或者定期手动删除临时目录里超过一个月的Backup文件。实测下来,工程打开速度能提升一半以上。
还要提醒一点,引脚编号和封装映射问题。网上找的元器件库经常出现原理图符号引脚与PCB封装焊盘编号不一致的情况,比如三极管的引脚,在原理图里是B、C、E,而封装里是1、2、3,映射做错,打样回来直接冒烟。检查方法很简单:在AD中执行“Tools - Footprint Manager”,批量核对每个元件的引脚映射,这一步30分钟做完,能避免烧掉一块几百块的主控板。
2.2 元器件库建设:开源库可以抄,但一定要改
智能车竞赛涉及的器件类型非常多:MCU最小系统、电源芯片、驱动芯片、运放、编码器接插件、摄像头排针、无线模块、按键LED等等。初期我们直接用了AD自带的库和自己下载的开源库,发现最大的问题是封装风格统一不了,有的器件的焊盘偏大,有的丝印信息缺失,拼到同一块板上后,贴片机不适用无所谓,但手工焊接时容易焊歪。
后来我们定了一个规矩:所有关键器件(主控、电机驱动、DC-DC、运放)必须自己重新建库,数据手册上的封装尺寸逐项核对。比如我们用的电机驱动芯片,官方数据手册里散热焊盘的尺寸和引脚间距在AD默认库里是不带散热孔的,必须手动修改铺铜区域和过孔阵列,否则大电流连续跑几分钟后片子就过热保护。封装库建设的前期投入时间很可观,但一次投入,后续主力板卡复用率很高。
元器件库建设还有一个容易忽略的点:元件供应商和PCB生产工艺决定了封装能不能落地。我们打板基本选2层或4层、最小线宽6mil、最小过孔0.3mm的常规工艺,所以封装设计里不会出现5mil线宽、0.2mm过孔的极端值。在AD规则设置里把最小间距设成6mil,布局布线时就会自动避坑,而不是等出Gerber后才发现工艺达不到。
2.3 工程模板与设计规则:把经验固化成文件
比赛周的改板速度往往能决定成绩。我们积累下来的重要经验是:一定要花时间建立一个队伍专用的AD工程模板。模板里包括了图纸大小、标题栏、常用规则(线宽优先级、间距、过孔规格)、板框尺寸、丝印字高、阻焊颜色等所有反复要用到的设置。新队员拿到模板后,只改电路拓扑和个别参数,就不用每次从头设置一遍,减少低级错误出现的概率。
设计规则方面,我特别强调电源和地线网络的规则等级。在PCB Rules and Constraints Editor里,把电源网络和地网络单独建一个线宽规则,要求比信号线粗2-3倍。信号线一般走6-8mil,电源线至少走20mil,地线能铺铜就铺铜。智能车赛道识别电路的模拟部分对噪声很敏感,如果地线处理不好,运放输出端会叠加毛刺,导致电感采集的赛道信号抖动,程序怎么滤波都救不回来。
3. 实操过程与核心环节实现:从原理图到可跑赛道的板卡
3.1 赛道识别小车电路识别设计的整体模块划分
以我们上一届电磁+摄像头融合方案的主控板为例,整块板子按功能分成五个区域:核心最小系统、电源管理、赛道感知、电机驱动、调试接口。在Altium Designer里用Room功能把每个区域框出来,布局时按区域摆放器件,走线时信号自然就短,避免出现“飞线横跨全板”的局面。
核心最小系统区域放MCU主控、晶振、复位电路、SWD调试插座。赛道感知区域集中布置电磁调理电路(电感接口、谐振电容、运放、比较器)和摄像头接口排针。电源管理区域是整块板子的命脉,我们用的方案是5V输入后先经过一级低功耗LDO给MCU供电,再经过DC-DC降压(比如3.3V)给传感器和编码器供电,最后单独预留电机电源接口。这样数字电源和模拟电源在物理上分开,能显著减少信号干扰。
在原理图设计阶段,有一个细节非常推荐大家做:在每个功能模块的电源入口都放上一颗10uF电容加一颗100nF电容并联,模拟电源部分再加一个LC滤波。这在AD里操作很简单,但收益非常明显——赛道现场干扰源多,稍有不慎摄像头画面就会出现条纹。
3.2 参数计算实例:电磁赛道识别的运放电路设计
电磁组赛道识别的基本原理是工字电感感应赛道下方导线产生的交变磁场,但这个信号的幅度非常小,必须经过放大和整形后才能送进MCU的ADC。我们的电路是这样的:电感与谐振电容并联在20kHz左右的频点上,输出到一级同相放大运放,放大倍数按需要调整。
具体参数计算过程是这样的:工字电感的值是10mH,要和电容谐振在20kHz,根据公式 f = 1 / (2π√(LC)),算出谐振电容约为6.3nF,实际取值6.8nF,中心频率会稍稍偏移,但可接受。运放选用宽带宽低噪声运放,供电电压3.3V,放大倍数我们采用10倍左右,输出范围刚好映射到ADC的量程0-3.3V,既能覆盖实际信号变化,又不会发生削波。这个计算过程全部记录在AD工程的Notes里,方便新队员接手时理解。
还有一个实操要点:谐振电容的精度尽量选温漂小的材质,比如C0G或NP0。我们第一版用的是X7R电容,开赛后试车发现随着赛道温度升高,信号幅度有明显漂移,后来统一换成C0G电容,信号稳定很多。
3.3 PCB布局布线实战:混合信号板的处理细节
PCB布局阶段,我们的顺序是:先固定所有接插件(排针、电源插座、调试口)到板边,再摆主控和电源芯片,再摆传感器前端。接插件的位置会直接决定整车的走线路径。比如,摄像头接口放在板子一侧,摄像头排线就可以直接引出,不用绕个大圈,可以减少信号在长线缆中的损耗和噪声引入。
布线时遵守一个原则:不同模块的地先分开走,在电源入口处单点汇合。模拟地、数字地、功率地分开,避免大电流回路影响模拟小信号。MCU的晶振走线要短而粗,尽量靠近引脚,周围不要走高频信号线。电机驱动部分的大电流路径上,走线不够粗就会发热严重,我们为了让线路更粗,直接在AD里用铺铜填充大电流路径,再打一排过孔连接到另一层地/电源,进一步降低回路阻抗。
关于AD的AI功能,我们第二版主控板尝试过让AI辅助生成一个电源模块的PCB布局。AI给出的布局基本合理,但散热焊盘的过孔数量不足,而且反馈电阻离电源芯片引脚的环路偏大,会增大输出电压纹波。所以AI生成的PCB我只会作为初稿参考,最终还是要人工检查关键网络。
3.4 加工与贴装:打样回来之后的第一件事
首版PCB打样回来,不要急着焊接,第一步是在AD里打开Gerber文件,和实物板子逐项核对,确认孔位、板框、丝印一致。特别是板子开孔的位置,如果和车模底盘上的支柱对不上,那就白花钱了。
焊接顺序上,先焊电源模块并上电测试,确认各路电压正常后再焊核心板和传感器。我们吃过一次亏,全套板子一次性焊好再上电,结果电源短路,排查了一下午才发现是贴片电容被焊反方向导致击穿。后来改成模块化焊接,每一步都能验证,排查容易多了。
调试期间,把SWD调试口、串口打印、LED指示灯全部引出来,这在硬件调试阶段几乎等于救命工具。程序跑飞时,通过串口打印看传感器原始值,很快就能定位是电路问题还是程序问题。
4. 常见问题与排查技巧实录
4.1 AD软件与工程文件问题速查
这里把我们在Altium Designer使用过程中遇到的高频问题做一个汇总,可以当成一份自查清单用:
| 现象 | 可能原因 | 解决建议 |
|---|---|---|
| 工程打开很慢或卡顿 | 缓存和临时文件过多 | 清理Backup和History目录,减少不必要的自动保存次数 |
| Stream write error | 安装目录权限不足或杀毒软件拦截 | 右键管理员运行安装程序 |
| 元器件引脚映射错误 | 原理图符号和封装不一致 | 在Footprint Manager中核对映射项 |
| 原理图编译报错 | 重复位号或悬空引脚 | 用Project - Compile显示Messages列表定位 |
| 布线推挤卡死 | 规则过于严格 | 临时调大间距规则后再调整 |
| 铺铜显示不完整 | Keepout层或板框有断开 | 检查板框闭合性并重新铺铜 |
再说一个我们常用的技巧:AD里定位到某个器件时,很多新手习惯用放大镜一点一点找,其实在PCB界面按Shift+F或使用List面板,输入器件位号就能瞬间跳转,改起来效率很高。
还有一个关乎竞赛的要点:比赛前一周,任何原理图和PCB改动都必须通过全队评审,不能一个人偷偷改。我们有一次临近比赛改了一颗去耦电容的封装,结果焊盘间距不匹配,导致整块板子全部返工。后来定下规矩,工程文件改动必须提交修改说明,至少在队伍里同步一次。
4.2 硬件调试中的“瞬间冒烟”和“怪毛病”
智能车竞赛的硬件调试,最怕的就是“冒烟”。常见的冒烟原因有:电源极性接反、电机堵转电流过大、DC-DC输出超压。我们的保护措施是:电源入口串联自恢复保险丝,在DC-DC输出端再用一个TVS管吸收尖峰。这个电路在AD里就是两个器件的事,但能避免绝大多数学费。
有些“怪毛病”排查起来非常费神,这里分享一个我们查过很久的案例:某天摄像头画面突然出现黑条纹,无论怎么调程序都一样。用示波器测电源纹波,发现3.3V网络上有20kHz左右的周期性毛刺。最终定位到是电机驱动芯片的PWM信号线与3.3V电源线在PCB上长距离平行走线,产生了耦合干扰。解决办法不是换板子,而是在AD里把PWM信号线改到另一层并两侧包地,同时在电机驱动电源输入端补了一颗铝电解电容。这个案例给我们的教训是:混合信号板里,信号线的走向和电源层的完整性,比单纯增加电容数量更重要。
排查问题的时候,建议参考下面的顺序:先看电源电压是否正常,再看时钟是否起振,再看传感器输出波形和寄存器数据,最后看通信总线信号质量。按这个顺序能快速缩小范围,不然很容易陷入“越改越乱”的局面。
5. 计分策略:在规则边界内做正确的设计取舍
5.1 理解竞赛的“隐性计分项”
每届智能车竞赛都分为预赛和决赛,跑赛道的用时是核心计分项,但实际拿名次远不只是看谁跑得快。以第二十一届和第二十二届全国大学生智能车竞赛的经验来看,规则里还包括正跑与反跑、补跑机制、发车位置的合理性要求等。在很多分赛区的比赛中,一次有效的完赛成绩比无数次练习赛的极限成绩更值钱。我们队伍的计分策略核心是“稳定完赛优先,再谈刷新成绩”。
这里有一个很实际的经验:电路板上的每一个排针松动、每一路电压纹波、每一帧图像干扰,都会导致最终“冲出赛道”或者“罚时”。所以我们在计分策略上的第一原则是,在预算允许的情况下,优先保证传感器电源的纯净度和结构的稳固性,而不是无脑堆性能。第二原则是,赛前一晚全面备份代码和工程,并把板子的关键参数(比如运放增益、电容容值选择)记录下来以防现场调试需要对比。
5.2 根据赛道元素调整赛道识别电路
赛道设计在不同组别略有差异,比如有些组别赛道有十字交叉、环岛、坡道、断路等。电路设计时就要提前留好扩展接口:比如电磁组在赛道元素增多的情况下,可以在板上预留3-5路电感接口,即使当下只装了三个电感,后期也方便加装。摄像头组在不同赛道光照条件下可能图像亮度差异很大,可以在板上预留拨码开关或电位器,现场微调摄像头参数,而不是回酒店重新烧录程序。
另外,比赛现场的赛道表面材质可能和平时训练的地面材质差异很大,会直接影响电磁传感器的灵敏度或者摄像头的反光表现。我们的做法是车上预留一个小的模拟输出测试点,用万用表或者示波器快速检测传感器信号强度,如果信号明显偏弱,就通过电位器调节运放增益,或调整传感器的高度和角度。这个“现场可调”的设计在计分时非常实用,因为你不能指望赛前一天还大规模改板。
5.3 团队协作和版本管理也是计分项
有人可能觉得计分策略纯粹就是车跑得好不好,但实际比赛中,团队协作和效率直接决定了你还有多少时间可以调车。我们的分工方式是:一人负责AD工程与硬件焊接,一人负责嵌入式驱动与调试,一人负责机械结构与整车集成,遇到问题随时交叉验证。工程文件通过固定的共享盘同步,每天结束时提交变更说明,在AD中导出一份PDF原理图放到共享目录,方便所有队员在手机或者平板上查阅。
版本管理上,除了给工程文件加版本号,还要保存“已验证可跑”的版本索引。很多时候我们赛前试车发现新改的后轮固定片有干涉,花了一晚上解决,结果反而整车性能下降,最后只能恢复历史版本。如果一开始就保留好干净的已验证版本,遇到时间紧张的情况,就可以快速后退,而不是在现场慌神。
6. 最后再分享一点实操心得
从AD工程搭建到赛道识别电路设计,从PCB打样到现场比赛计分,这一整套流程走下来,我最深的体会是:智能车竞赛考验的从来不是某一个电感的摆放位置或者某一颗电容的容值,而是整个系统在极端条件下的稳定性和团队在压力下的决策效率。画原理图时多留一个测试点、布板时多花半小时把电源和地处理好、比赛前多备份一次工程文件,这些细节积累起来,远远比“理论跑分最高”重要得多。
如果你今年准备参赛,我的建议很简单:前期把时间花在AD工程模板和元器件库的规范化上,中期做板子时严格按“电源-核心-传感器-驱动”的分模块调试顺序来,后期计分阶段,把稳定完赛放第一位。最后再提一个小技巧,主控板上多预留两个备用IO口和一组电源插座,比赛现场经常会临时加装传感器或者调试设备,有备用的接口能省掉很多事。祝你们的车能够在赛道上稳稳跑完全程。