ARTICLE DETAIL

资讯详情

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

智能车硬件设计避坑指南:从原理图到PCB的全流程经验

智能车硬件设计避坑指南:从原理图到PCB的全流程经验 第一次做智能车硬件最怕的不是写代码是画板子。代码有问题还能在线调试、打个日志慢慢找但板子打样回来电源短路、晶振不起振、电机一跑单片机就重启这种问题查起来真的想砸电脑。我自己就是这么过来的从原理图怎么画都懵到后来能独立画完一块完整的智能车主板中间踩过的坑、烧过的板子、交过的学费足够写好几篇长文了。这篇文章先把最硬核的部分拿出来说——硬件绘制电路和PCB设计。先说清楚这不是什么大神教程也不涉及特别高深的理论就是一个普通学生第一次做智能车硬件时真实走过的流程、用到的方法和工具以及最重要的哪些地方我一开始没注意后面出问题才追悔莫及。如果你想参加智能车竞赛或者是刚开始接触嵌入式硬件设计这篇内容应该能帮你少走不少弯路。1. 智能车硬件设计的前期准备与整体方案选型1.1 第一次参赛先想清楚要做什么级别的硬件智能车竞赛各组别对硬件的要求差别非常大。比如电磁组、摄像头组、独轮组这些赛道的传感器方案和主控性能都不一样。我第一次参赛时就犯了一个典型的错误——上来就想画一个功能齐全的大而全主板结果不仅画板周期拉长而且因为经验不足好多细节处理不到位板子回来根本没法用。所以第一个建议是第一次画板功能设计能做减法就不要做加法。把系统的功能拆开来看无非就是几个部分主控部分MCU最小系统根据组别选型电源部分电池电压转各种低压这是整个板子的命脉电机驱动部分驱动电机转动电流大是干扰源传感器接口部分摄像头、电磁传感器、编码器接口等调试接口部分下载器、串口、按键、LED指示灯1.2 核心板加母板方案新手最稳妥的路线很多第一次参赛的同学会选择自己做主控核心板把STM32最小系统、电源电路、电机驱动全部画到一块双面板上。但是这里我不建议一开始就这么干。我自己的经验是采用核心板加母板的方案——主控部分直接买市面上成熟的STM32核心板或者用以前学长留的自己画一块母板母板负责电源转换、电机驱动接口、传感器接口、编码器接口然后通过排针把核心板插在母板上。这样做有几个明显好处核心板是厂家调好的晶振、复位、boot配置、下载电路都处理好了你只需要关心自己画的部分排查问题范围小很多。第一次画板子母板设计简单布局布线的难度降低打样成功率大幅提高。万一主控烧了换一块核心板就行不用重新焊接主板。等到你有了一版成功经验之后再尝试把所有功能集成到一块板子上也不迟。这就像写代码先跑通再优化一开始就追求极致集成度大概率是折腾自己。1.3 工具选型AD20还是嘉立创EDAPCB绘制的工具选择我用了AD20这里说说原因。Altium DesignerAD是目前高校里用得最多的PCB设计软件资料多、教程多、遇到问题能找到答案的概率大。智能车竞赛的很多技术文档、经验分享也都是基于AD操作的。我选AD20还有一个原因——它的DRC设计规则检查功能非常完善对新手排查错误特别有用。当然如果你电脑配置不高或者完全从零开始没有任何AD基础嘉立创EDA也是一个很不错的选择。它最大的优势是免费、界面简洁、上手快而且和嘉立创下单打样无缝衔接在线编辑、一键下单对新手非常友好。不过我个人还是推荐AD原因有三个竞赛交流时大家用的工具大多是AD遇到问题能问的人多能参考的资料也多。AD的封装库管理、PCB走线、覆铜等功能比免费EDA更成熟画稍微复杂一点的板子时体验更好。以后不管做项目还是找工作AD是行业内用得最广的工具之一早学早收益。当然如果你确实对AD不熟用嘉立创EDA也完全能完成一块不错的智能车母板。工具只是工具真正重要的是你对电路图和布局布线的理解。2. 原理图绘制的核心细节与模块拆解2.1 先做电源树规划再动手画原理图很多人画原理图喜欢直接打开软件从第一个模块开始画画到哪算哪这是大忌。尤其是智能车这种电池供电、多电压域的系统电源拓扑的设计和规划必须放在最前面。智能车的常用供电方案是7.2V或者11.1V锂电池组具体看组别规则然后需要降压出各种电压给不同模块使用。这里分享一下我当时的电源树规划电压轨用途电流需求推荐方案7.2V/11.1V电机驱动电源直接从电池取瞬间可能到数安培电池直连不经过稳压5V单片机IO、OCD、屏幕等外设500mA以上DC-DC降压如MP1584、TPS563200或低压差LDO3.3V摄像头、编码器、传感器等200mA左右从5V用LDO转AMS1117-3.3或单独DC-DC这里有一个关键点电机驱动电源不要和主控电源混在一起。电机启动瞬间电流冲击非常大如果主控和电机共用一个电源很容易导致电压跌落、单片机复位、噪声干扰等一系列问题。正确做法是电机直接从电池取电主控和传感器通过降压芯片单独供电最后在电池负极处单点汇合。至于具体选LDO还是DC-DC我的经验是如果压差大、电流大用DC-DC。比如从7.2V降到5V如果用LDO多出来的2.2V压降乘以电流全部变成热量浪费掉了而且LDO在大压差大电流下很容易过热保护。反过来如果是从5V降到3.3V压差只有1.7V电流也不大用LDO就很好纹波小、电路简单、噪声低。2.2 电机驱动电路选型与保护电机驱动是整个智能车硬件里电流最大的部分。比赛规则允许用的电机型号不同但功率都不小。以最常见的普通直流电机为例空载电流可能只有几百毫安但堵转时电流可能高达2~3A甚至更高。所以电机驱动芯片的选择、电路设计、PCB布线都得按照大电流的标准来做。我当时用的是BTN7971和DRV8701这两种方案做的对比测试。BTN7971是半桥驱动芯片一片可以驱动一个电机正转或反转需要两片组成H桥电流能力很强标称高达70A峰值电压范围宽很多老款智能车主板上都能看到它的身影。DRV8701则是一个栅极驱动器需要自己外接MOS管和H桥结构灵活性更高但外围电路也更多新手容易画错。如果让我给第一次做硬件的同学一个建议选择集成度高的驱动方案会省心很多。比如直接用现成的双H桥驱动模块如TB6612FNG、DRV8833等或者参考经典开源方案里的BTN7971电路先跑起来再说。电机驱动部分的原理图必须包含以下保护措施续流二极管电机是感性负载关断瞬间会产生很大的反向电动势。无续流二极管的话这个电压尖峰会直接打坏驱动芯片。集成驱动芯片内部一般有了但如果你用分立MOS管搭的H桥这个绝对不能省。去耦电容在驱动芯片的电源引脚附近放一个大容量电解电容比如470uF或1000uF用于吸收电机启停时的电流冲击。这个电容非常关键没有它的话整块板的电源都会被拉垮。指示灯和测试点在驱动芯片的使能脚EN、PWM输入脚、电源脚上预留测试点方便调试时用示波器测量。2.3 原理图里的细节处理去耦电容和测试点在原理图阶段就要养成一个好习惯——每个芯片的电源引脚旁边都要放置去耦电容。104100nF陶瓷电容几乎是标配放在芯片电源引脚附近用来滤除高频噪声。大一些的芯片比如MCU、驱动芯片旁边再加一个10uF或者22uF的钽电容或陶瓷电容用来稳定电源。这个习惯在PCB布局阶段会非常加分因为去耦电容必须靠近芯片引脚才有效原理图阶段就放好后续布线时不容易遗漏。另外从设计开始就在关键信号上留测试点。比如PWM波形输出、ADC采样点、电源电压节点等。测试点就是一个裸露的焊盘方便你用示波器探针或者万用表表笔去接触测量。第一次调试板子时有这个点和没这个点效率差别太大了。我记得第一次画板时懒得加测试点结果板子回来以后想测量某个信号波形只能拿探针歪歪扭扭地去戳芯片引脚还容易不小心短路相邻引脚。2.4 传感器和编码器接口设计智能车离不开各种传感器。摄像头、电磁传感器、编码器、陀螺仪这些都是常见的模块。这些模块的接口设计看起来简单但有些细节处理不好会留下很多隐患。比如编码器接口一般就是电源5V或3.3V、GND、A相、B相部分还有Z相。这里有一个容易踩坑的点编码器信号线是否需要上拉电阻。很多光电编码器是开漏输出需要加上拉电阻才能输出正确的高低电平。有些模块板载已经加了上拉有些没有原理图设计时需要查清楚所选模块的datasheet或者原理图确定是否需要预留上拉位置。再比如摄像头接口如果是数字摄像头信号线比较多布局布线时要保证信号线的长度不要太长避免信号完整性问题。如果是模拟摄像头视频信号线要注意屏蔽和远离电源噪声源。还有一个建议是接口设计时多预留几个备用IO和GND。我画板子时总会习惯性地把单片机的几个空闲IO引到排针上这样即使后面有新的功能需求或者某个IO不够用还能飞线解决不用重新打板。3. PCB布局布线的实战技术与参数选择3.1 PCB设计的流程和思路原理图画完之后进入PCB设计环节。很多新手打开PCB编辑器就急着开始摆元器件这个习惯不好。正确的做法是分几步走第一步整理封装和网络。确认所有元器件都有对应的封装没有的则需要自己画封装。封装是PCB设计里极其关键的一环封装错了焊接的时候你才发现芯片引脚对不上整个板子就废了。特别是贴片元件0805和0603尺寸差一点还能凑合但QFN这种引脚在底部的芯片画错了就是灾难。第二步规划板框和结构。根据车模安装的位置确定板子的外形尺寸和固定孔位置。固定孔位置一定要结合车模来量不能拍脑袋定。我有个同学就是板子画完发现孔位对不上车模只能重新打样时间和钱都浪费了。第三步元器件布局。这一步是整个PCB设计中最关键的一步布局合理与否直接决定了后面的布线难度和板子的性能。布局的总原则是先大后小、先难后易、按功能模块划分。先把连接器、大电容、驱动芯片这些大件摆好再把单片机、小电阻电容围绕核心放。第四步布线。先走关键信号线和电源线再走普通信号线。布线的优先级是电源线 敏感信号线传感器信号、时钟信号 普通信号线。第五步覆铜和DRC。整个板子铺地铜然后运行设计规则检查修改错误直到DRC全部通过。3.2 布局原则怎么摆放元器件才不给自己挖坑布局做得好不好直接决定后面的布线顺不顺畅。我自己总结了几条智能车主板布局的实用经验电源模块和电机驱动模块放在板子的一侧主控和传感器接口放在另一侧。这样布局的好处是电源和驱动部分产生的大电流和开关噪声集中在一侧远离主控和传感器等敏感电路信号被干扰的可能性大大降低。大电流路径要短而粗。从电池接口到电机驱动芯片再到电机输出端口这整个回路的电流非常大布线一定要短、要宽。在布局阶段就要设计好这条大电流路径尽量让这几个器件在一条直线上。去耦电容尽量靠近芯片电源引脚。这个在原理图部分说过一次布局时是真正落实到位的时刻。很多初学者把去耦电容放得离芯片十万八千里这等于没放。接插件放在板边方便接线。电池接口、电机接口、编码器接口、传感器接口都要设计在板子边缘这样线束可以直接引出不会跨过板子中间的元器件。晶振和MCU尽可能靠近且周围不要走其他信号线。晶振属于敏感器件周围如果有高频信号线穿过可能会造成时钟信号的干扰。我第一版板子就是没注意这点晶振旁边过了一条PWM信号线结果跑起来的时候发现采样数据有周期性跳变查了好久才发现是干扰问题。3.3 电源走线和线宽计算PCB布线中线宽不是随便定的它和电流承载能力有直接关系。对于智能车主板最常问的问题就是0.3mm的线能过多少电流直接给个经验值在标准1oz35um铜厚条件下1mm宽的走线大约可以通过1A的电流温升10℃以内。按这个比例推算0.3mm的走线大约能过0.3A左右的电流20mil约0.5mm可以过0.5A左右。这个经验值是根据IPC-2221标准曲线估算的实际通流还受铜厚、走线长度、环境温度、是否有覆铜散热等因素影响但作为工程估算已经足够了。所以我的建议是用途推荐线宽备注信号线0.2mm~0.3mm10mil以上保证制造良率普通电源线5V、3.3V0.5mm~1mm根据电流需求调整电池主电源线1.5mm以上尽量加宽必要时开窗加锡电机驱动输出线1.5mm以上电机电流峰值可达数安培GND线/覆铜尽量宽最好用整片覆铜不要走细线对于电机驱动这种大电流部分我只做了一件事走线加宽、覆铜填充、然后开窗。开窗就是在PCB上露出铜皮不加阻焊油之后可以在铜皮表面加焊一层焊锡大幅增加过流能力。嘉立创打样的时候下单界面就有开窗的选项或者在PCB设计时直接在阻焊层Solder Mask层画线。3.4 覆铜和铜皮挖空处理双面板的常规操作是两面覆铜然后通过过孔把上下两层的地连接起来。覆铜的好处很多减小地回路阻抗、提供屏蔽作用、增强板子机械强度、帮助散热。但在有些位置覆盖铜皮反而有害。网上热搜里提到的AD20中PCB板铜皮挖空就是干这个用的。什么场景下需要挖空铜皮天线下方无线模块比如蓝牙、WiFi模块的天线区域需要挖空铜皮否则铜皮会吸收天线辐射能量导致信号强度严重下降。高压隔离区域虽然智能车一般没有高压但如果你做了隔离电源或者数字模拟隔离隔离带下方的铜皮需要挖空以防噪声通过铜皮耦合跨越隔离带。高频敏感电路在晶振、高频时钟线周围如果覆铜过多虽然能屏蔽干扰但也可能引入寄生电容影响信号质量。这种情况也可以考虑局部挖空。AD20中挖空铜皮的操作先放置多边形覆铜挖空放置-多边形覆铜挖空然后沿着你要挖空的区域画出多边形范围设置好之后这个区域就不会被覆铜填充。当然如果你已经覆铜了挖空后需要重新覆铜一次才能生效。3.5 走线规则设置和AD20操作技巧在AD20中开始布线之前建议先设置好规则省得后面DRC检查时一堆报错。打开设计-规则PCB Rules and Constraints Editor重点配置以下几项Clearance间距规则一般的导线间距设置0.2mm8mil左右比较安全。对于高压虽然智能车没有高压但电机驱动有反电动势风险或者大电流的net可以单独建一个间距规则设置大一些比如0.5mm。Width线宽规则新建几个线宽规则比如信号线设定最小0.15mm、首选0.25mm电源线设定最小0.3mm、首选0.5mm大电流线电池、电机输出设定最小1mm、首选1.5mm。这样在布线时按下ShiftW就能快速切换线宽不用每次手动输入。过孔规则Routing Via Style智能车主板双面板过孔大小建议外径0.6mm、孔径0.3mm这是常规工艺能做的最小尺寸也更稳定。嘉立创的工艺能力大约是外径0.45mm、孔径0.2mm起做但要留一些余量。布线时有几个非常实用的技巧Ctrl鼠标滚轮放大缩小视图布线时左手键盘右手鼠标效率最高。ShiftW快速切换线宽。数字2和3切换2D和3D视图3D视图可以很直观地看到板子立体效果检查元器件高度和干涉情况。ShiftS单层显示模式布线时只看当前层的走线防止干扰。另外提一句很多新手布线时会遇到走线没有中心点看起来中间像断开了一样这个问题。这个设置通常在显示选项里Design - Board Options - Display Options中勾选Display Pad Nets或者在高级设置中找到Show Guideline选项。实际上这是因为AD隐藏了走线的中心线显示调整显示选项就能正常看到走线了。3.6 单层板、双层板还是四层板智能车主板最常见的做法是双层板成本低、工艺成熟、足够满足大多数需求。但如果你做的是摄像头组这种系统复杂度高的车而且主控和信号处理都在一块板子上可能会考虑四层板。四层板的好处是中间多了一层完整的地平面和一层电源平面信号完整性和电源质量都会好很多但成本也高了一倍不止。对于第一次画板的同学我强烈建议先画双层板。双层板画好了把数字地和模拟地处理好把电源和地的回路处理短性能完全够用。如果非要用四层板叠层建议是顶层层信号元器件-地层完整地平面-电源层电源平面-底层层信号元器件。注意四层板的铜厚一般是0.5oz或者1oz和双层板一样1oz铜厚是标准工艺不需要特殊说明。4. DRC检查、生产文件输出与打样下单4.1 DRC检查板子打样前的最后一道关卡PCB画完布线也完成了但离打样还差一步——DRC检查设计规则检查。这一步是在打样前把所有能发现的错误都揪出来。AD20中运行DRC的操作路径是设计-规则检查-运行DRC。它会根据你在规则里设定的参数检查间距是否过小、走线宽度是否过窄、是否有未布通的网络、是否有短路等问题。第一次画板时我犯了很傻的错误——运行DRC看到一堆报错但没仔细看直接忽略了板子打样回来才发现MCU的一根信号线根本没连上。所以新手一定要去看DRC报错内容逐条检查不要跳过。DRC报错里经常出现的几类问题Un-routed Net未布通的网络这个非常严重说明有的网络没有连接完。在PCB界面按快捷键U激活布线器修复后重新检查。Clearance Constraint Violation间距违规两个不同网络的导线间距小于设定值一般是因为走线太近或者铺铜间隙过小。Silk to Solder Mask丝印到阻焊丝印层文字或图形放到了焊盘上这种不影响电气性能但可能会影响焊接质量最好挪开。值得注意的一点是DRC也不是全能的很多主观性的问题它检查不出来。比如电解电容和排针靠得太近会不会干涩接插件的方向是否方便接线这些都需要人肉巡检。4.2 输出Gerber文件和BOM清单PCB设计完成后发送给厂家生产需要输出Gerber文件。AD20中生成Gerber的路径是文件-制造输出-Gerber Files注意以下设置格式选择RS-274-X这是目前最通用的格式。层只选择实际使用到的层。如果板子只有两层就不要把所有层都勾上否则制造时容易出问题。钻孔文件需要同时导出钻孔文件Drill File否则PCB板子上不会钻孔。导出Gerber后用Gerber Viewer之类的工具查看一下预览效果确认每一层看起来都是正确的再上传到厂家下单页面。下单时还需要一份BOM清单物料清单就是列出所有元器件以及对应的型号、参数、封装。这个一般在原理图的Output输出菜单里可以生成报告。如果你是在嘉立创打的样直接在编辑器里导出BOM上传到下单页对应封装库都能匹配上非常方便。4.3 打样下单的一些经验和厂家选择国内主流的PCB打样厂家有嘉立创、捷配、华秋等。对于学生打样嘉立创是首选因为价格便宜、活动多、速度快。我第一次打样用嘉立创5片双层板、10cm以内尺寸算上运费也就几十块钱3~4天就到了。下单填写工艺参数时的几个选项给你参考参数推荐选择说明板材FR-4标准板材性价比最高板厚1.6mm标准厚度结构强度好铜厚1oz35um标准铜厚阻焊颜色按喜好不影响性能表面处理喷锡/沉金普通板喷锡即可有金手指的选沉金尺寸数量按需求学生建议5-10片够用且便宜别忘了在订单备注里写清楚是否需要走线开窗以及板子是否有特殊要求。如果板子面积小且形状规则很多厂家还可以选择拼板服务把多个相同的板子拼在一起打样方便焊接测试。5. 常见问题与排查技巧实录5.1 板子回来先不要急着焊接先做三项检查板子从快递盒里拿出来我强烈建议你先别着急焊元件花10分钟做三项检查第一目视检查。看看板子有没有明显的划痕、断线、短路、氧化等问题。用强光手电筒透光看一下有时候能发现线宽不足或者断线的隐患。第二万用表量电源与地是否短路。这一步非常重要。用万用表的蜂鸣档量电池正极输入与GND之间是否导通如果直接响说明有短路千万不要直接上电。我第一次做的板子就是电源短路上电瞬间电池口直接冒烟后来检查发现是一个电容封装画反了导致的正负极接反。第三对照原理图检查关键网络。用万用表导通档对照原理图测几个关键节点是否真的连通了。比如MCU的电源引脚到5V网络是否通、GND是否通、晶振两个脚是否分别连到MCU对应引脚。5.2 常见焊接问题和排查方法如果你是第一次自己动手焊接贴片板大概率会遇到引脚连锡、虚焊、焊盘脱落等问题。这里分享几个最常见的情况和解决办法芯片引脚连锡这是手工焊贴片最常见的故障。处理办法用烙铁蘸松香水顺着引脚方向拖一遍利用表面张力把多余焊锡带走。如果连锡严重可以用铜编织带吸锡线吸走多余的焊锡。焊完以后一定要用万用表测量相邻引脚是否短路。虚焊虚焊在静态测试时可能发现不了但一震动或者温度变化就失灵。排查方法是用万用表逐个引脚量或者用手按压芯片表面看功能是否恢复。遇到虚焊补焊一下引脚就好。焊盘脱落频繁拆焊很容易把焊盘弄掉。如果只是走线断了可以用漆包线飞线连接如果是QFN/BGA这种封装焊盘掉了那就很麻烦只能重新画板或者换板子了。这也是为什么我前面建议用核心板加母板方案——母板上的器件以接插件为主焊接难度低很多主控核心板是买来的成品基本不会焊接出问题。5.3 上电调试时的排查思路板子焊好以后第一次上电要格外小心。用限流电源比如30V/5A可调电源把电流限制调到合适范围比如500mA再上电不要直接用电池供电。如果电流瞬间超过限制说明板子有短路或异常电流。上电后如果电流正常不等于万事大吉了还需要检查几个关键信号电源指示灯是否点亮如果LED亮但是单片机没跑优先检查复位电路和时钟电路。用示波器看晶振波形单片机要正常工作必须有时钟信号。如果晶振没有波形检查晶振负载电容值是否正确、晶振引脚是否焊接牢固。注意示波器探头要用1x档测晶振10x档输入电容大可能导致本来就弱的晶振信号直接被压死。用万用表量各电源电压5V输出是不是真的5V3.3V输出是不是3.3V。如果电压偏低可能存在过载或者元器件损坏。5.4 电机干扰导致的重启问题智能车调试中最让人头疼的问题之一电机一转单片机就重启。输出PWM越多、占空比越大重启概率越高。这个问题我也是折腾了很久才排查出来。排查路径是这样的先确认电机电源和主控电源是否共用。如果是共用把电源分开这是根源问题。如果已经分开了检查电机驱动部分的续流和去耦措施是否到位。驱动芯片电源旁边的大电容必不可少。再用示波器看主控供电的3.3V和5V波形电机转动时有没有明显的电压跌落或毛刺。如果有在电源芯片输出端额外加一个100uF以上的电容或者LC滤波器。最后考虑GND的处理。电机驱动的地和主控的地要单点连接不要形成地环路。我们当时在电机驱动IC和MCU之间的地上串了一个磁珠干扰明显好转。6. 根据我踩坑总结的一些心得画完第一版板子焊完元器件车子第一次跑起来的那一刻真的非常有成就感。但回头看看整个过程最大的体会其实是慢慢来比较快。如果时间充裕一定要把前面说的每一个环节都做扎实——原理图检查两遍、封装核对两遍、布局多看看、布线完了跑DRC、打样前再检查一遍。每一个看似麻烦的步骤都是在帮你省后面调试的几天时间。还有一个建议想分享给所有新手多仿真、多验证不要指望一次打样就能成功。我第一次画的板子有3处飞线修复的地方——封装封装画错了、原理图一个网络标号打错了、还有一处是电源线宽度太细导致发热严重。如果当时能在原理图和PCB阶段多花点时间检查其实这些问题都能提前发现。在PCB设计里纸上谈兵的阶段花的时间越多实际问题就越少。我现在的习惯是每次画完板子都会把板子放一放隔一天再回来重新看一遍原理图和PCB基本每次都能发现1~2个之前忽略的问题。这个方法也推荐给大家。后面有机会再跟大家分享智能车竞赛中软件调试和机械组装的经验。希望这篇分享对第一次接触硬件设计的同学有帮助也欢迎大家一起交流画板和调试过程中遇到的各种问题。
返回列表