多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

从零开始学硬件:智能车与电赛必备的电子设计基本功

从零开始学硬件:智能车与电赛必备的电子设计基本功 硬件知识这个东西说起来人人都知道重要可真到了智能车竞赛、电子设计竞赛这种需要自己动手做板子的场合才发现课本上的模电数电和实际画板子、焊电路、测波形、排故障之间隔着一条不小的鸿沟。这系列文章就是给正在准备智能车、电赛或者刚进实验室接触科研项目的工科生准备的目标是帮你从零开始把电子设计的地基打牢。不管你是打算做摄像头组的智能车还是想冲电赛的电源题、控制题甚至只是想让手里的小项目稳定跑起来硬件基本功都绕不过去。这个“更新中”的系列我会按实际做项目需要用到的顺序把元器件选型、电源系统、传感器接口、电机驱动、主控最小系统这些内容一块块拆开讲顺便把我这些年踩过的坑、走过的弯路也一并写出来。1. 先搭框架硬件学习到底在学什么1.1 从智能车到电赛硬件能力是通用底座很多同学最初接触硬件是因为比赛。智能车竞赛里你要自己设计电路板电赛综合测评更要现场搭电路、测波形科研项目里调试设备、自制测试工装同样离不开硬件基础。表面看这几个方向用的芯片不一样、赛题不一样底层需求其实高度重合你要能独立把一个电子系统从图纸变成实物并且让它可靠工作。智能车里的电磁组要处理传感器信号摄像头组要搞定图像采集电赛的电源题要算电感电容、调反馈环控制题要搭驱动电路驱动机器人。这些项目对硬件的要求是“系统级”的不像课后实验那样照着面包板插线就行而是要考虑供电够不够、信号干不干净、芯片烫不烫、接插件牢不牢。这些能力一旦建立换个平台只是换个工具底层逻辑完全相通。1.2 硬件和软件的分工先有硬才有软做嵌入式项目最容易犯的错就是“软件背锅”。PID调不出来先怀疑代码图像采不到就从头看算法结果查了半天发现是传感器供电纹波太大、信号线接触不良甚至主控根本没被正确复位。我的经验是遇到问题先花十分钟检查硬件再看软件。电源电压对不对、信号波形像不像样、使能引脚有没有拉对电平这三个点查完一半以上的诡异问题都能定位到硬件头上。当然硬件也不是越复杂越好。有些跑飞的故障其实是主控供电旁路电容没放、地线回路太长引起的程序里再怎样优化都不如把PCB改一版来得痛快。软硬结合的本质是“各自做好各自的事”硬件把电源、时钟、信号完整性这些基础保障好写代码的人才有心情去调算法。1.3 零基础起步的学习路线图我给新人的建议是先不要急着画板子先把知识地图画出来。学习顺序可以是这样元件认识与测量电阻电容电感、二极管、三极管、MOS管能用万用表判断好坏、识别封装。工具使用电烙铁焊接、万用表、示波器这三样是吃饭的家伙。电源设计降压电路BUCK、低压差线性稳压LDO把板子供电搞明白。最小系统单片机最小系统搭建、下载调试、指示灯与串口。信号链路传感器信号的放大、滤波、比较理解信号从哪里来到哪里去。执行机构舵机控制、电机驱动H桥原理与续流保护。系统整合与排错把上面所有模块拼起来用电源分配和地线规划把它们串成一个完整系统。这套路线和学校课程不太一样不按“器件原理”分章节而是按“做项目需要什么”来组织。你不需要先学完《模拟电子技术》再动手而是在做智能车的过程中遇到运放就查运放遇到BUCK就学BUCK带着问题学反而更快。2. 基本功元器件识别、选型与避坑2.1 电阻电容电感三件套的选型细节很多新手觉得电阻不就是个阻值嘛实际上项目里选电阻还真有讲究。普通信号电路用5%精度0805贴片电阻就够了但采样电阻、增益电阻建议用1%甚至0.1%精度、低温漂的型号。比如电磁传感器的放大电路增益电阻精度低图像采集的参考点就会偏调试时你根本分不清是传感器位置问题还是电路误差问题。电容更麻烦种类多、参数多选错了直接影响稳定性。数字芯片电源引脚旁边一定要放0.1uF陶瓷电容做去耦每个电源引脚就近放一颗目的是给高频开关电流提供低阻抗回路。电源输入端再放10uF到100uF的电解或钽电容用来吸收低频纹波和负载突变。陶瓷电容要注意耐压值一般选工作电压的两倍以上钽电容对过压很敏感用在电源输入端要格外小心我见过不少钽电容被尖峰打穿冒烟的案例。电感在电源电路里是能量转换的关键。BUCK电路输出电感选型主要看饱和电流和感值饱和电流要大于最大负载电流的1.2到1.5倍否则电感饱和后电流会失控。此外DC-DC芯片手册里通常会给出电感计算式感值选小纹波大选大响应慢按推荐值取基本不会有问题。功率电感还得注意DCR直流电阻DCR大了效率低、发热严重小封装电感在大电流场合不一定扛得住。2.2 二极管、三极管、MOS管什么时候用谁二极管在电路里最常用来做“方向控制”和“保护”。续流二极管必须选快恢复或肖特基用在继电器、电机、电感等感性负载两端给断电时的反向电流一条泄放通道。电源入口还要防反接简单做法是串一个二极管缺点是会有压降、损耗更讲究的做法是P-MOS防反接压降小、效率高适合电流较大的系统。ESD/TVS二极管则专门用来吸收静电和浪涌接插件、按键这些容易被人体接触的位置最好都加上。三极管和MOS管都能做开关但选择逻辑不一样。普通开关频率不高、电流不大时三极管简单便宜高频PWM或大电流场景MOS管更合适。选MOS管有三个关键参数耐压要留两倍余量RDS(on)越小导通损耗越低Vgs(th)要注意驱动电压够不够。很多同学拿5V单片机的IO直接去驱动栅极结果MOS管半开半闭、发热严重这就是没注意Vgs参数的原因。栅极电阻、下拉电阻、甚至栅极驱动电路在很多驱动板里都是必须认真设计的。电机驱动里边最常见的结构是H桥。H桥只是把四个开关管组合起来但真正做出能稳定工作的电机驱动要考虑死区时间、导通逻辑、电流采样、过流保护。对比赛和科研来说如果不想从零搭直接用BTN7971或者DRV8701加外置MOS的方案会省很多事但原理必须懂否则出了问题连从哪里开始查都不知道。2.3 封装与PCB设计入门元器件选型最后一定会落到封装上。主力阵容就是0603/0805电阻电容、SOT-23三极管/MOS、SOP-8运放驱动、TO-252功率MOS、LQFP芯片。新手画板子最容易忽略的是焊盘尺寸和间距封装画小了手工焊接困难画大了又影响布线密度和电气性能。封装库建议直接用立创EDA或嘉立创的现成库比自己手画靠谱得多。PCB画板还有一些硬件层面的东西必须注意大电流走线要加宽或者开窗镀锡感性负载旁边要尽可能靠近引脚放续流二极管反馈信号走线要远离功率开关节点晶振底下不要走其他信号线铺铜之后要补过孔。很多看起来是玄学的“干扰问题”本质都是布局布线时没按功率回路和信号回路分开的原则去做。3. 电源系统设计所有电路工作的前提3.1 电池供电与电源树规划智能车和移动类电赛作品最常用的电源是锂电池。锂电池标称电压有3.7V、7.4V等容量和放电倍率C数要根据负载峰值电流选舵机堵转加电机启动瞬间可能有好几安培的电流放电C数不够的电池电压会被瞬间拉垮。拿到一个系统第一件事是画电源树。比如一个典型的智能车电池7.4V → 总开关/保险丝 → 电机驱动直接供电电池7.4V → BUCK降压到6V → 舵机供电电池7.4V → BUCK降压到5V → 数字电路、传感器5V → LDO降到3.3V → 主控MCU和逻辑芯片这样分级供电每路都有独立的滤波电容一路出问题不会拖垮整个系统。电源树画好后每个节点的电压范围、最大电流、纹波要求都标清楚再对着选芯片和电容效率会高很多。3.2 BUCK电路参数计算与布局要点低压大电流场景首选BUCK。BUCK的核心思想是开关管以高频通断电感把不连续的能量变成连续电流电容再把电压纹波滤平。类似把一个水桶用阀门反复快速开关后面再接一个大水池出来的水流就是比较平稳的阀门就是开关管水桶就是电感水池就是电容。我以常用的MP2451为例输入7.4V、输出5V、负载0.6A开关频率约1.2MHz纹波电流取负载电流的30%ΔIL 0.18A电感感值计算L (Vin−Vout)×Vout / (Vin×ΔIL×fsw) (7.4−5)×5 / (7.4×0.18×1.2M) ≈ 7.5uH所以选10uH电感比较合适再检查饱和电流要大于0.6×1.3≈0.78A留足裕量选2A以上的电感。输出电容用低ESR的陶瓷电容耐压至少10V容量22uF到47uF都行。BUCK的布局比原理图更关键。输入电容要尽量靠近芯片的VIN和GND引脚功率回路输入电容—电感—输出电容—地的面积要小反馈电阻取电要直接从输出电容上取反馈走线要远离电感底下。这些都是降低EMI和输出纹波的实际手段比在软件里加滤波有效得多。3.3 LDO的适用场景小压差小电流LDO非常简单的“垃圾桶式”降压但它的损耗比较直接是(Vin−Vout)×Iout的功率变成热量。比如AMS1117-3.3从5V降到3.3V供100mA损耗就是1.7V×0.1A0.17W还在可接受范围如果供500mA损耗0.85WLDO就得贴散热片甚至烫得没法摸这个场景就该换BUCK了。LDO的定位是“后级清洁电源”在BUCK输出之后再做一次低压差稳压给MCU、传感器这类对纹波敏感的小电流器件供电图的是它输出干净。3.4 去耦与地线设计电路稳定的隐形防线电源纹波是硬件设计里最容易头疼的问题。去耦电容的作用可以理解成给器件旁边放了一个微型“蓄水池”当芯片瞬间抽走大电流时先由这个水池顶着不从长距离电源线去硬拉。所以电容要离芯片电源引脚尽量近常见做法是每脚一对0.1uF高频电容10uF低频电容。地线处理上很多教程喜欢把模拟地、数字地、功率地分得清清楚楚但对初学者来说先做到“一个完整的地平面”往往比强行分割更好。分割不当会造成地回路断裂反而产生更多噪声。正确做法是先有完整的地平面把功率器件的地、模拟电路的地、数字芯片的地都就近接到地平面上再在关键位置做单点连接或者放磁珠/0欧电阻隔离。4. 传感器与信号链路的搭建4.1 电磁传感器的原理与信号调理电磁组是智能车竞赛的元老组别原理其实很简单赛道通有20kHz交变电流周围会产生交变磁场车上的工字电感感应出微弱电压。难点在于这个信号只有几毫伏到几十毫伏非常微弱必须经过放大、滤波、检波后才能送进ADC。标准的信号链路是电感 → 谐振电容 → 前置放大 → 带通滤波 → 幅度检波 → 跟随器 → 单片机ADC。其中电感和谐振电容组成并联谐振回路选在工作频率20kHz附近可以让信号幅度明显提升运放通常用同相放大放大倍数由(R1R2)/R1决定比如增益设为50倍检波用二极管半波整流通俗也可以直接用精密整流电路。电磁信号里面还藏着一个大坑不同位置的传感器信号幅度会差很多直道强、弯道弱、环岛更复杂如果只用固定增益很容易出现强信号饱和、弱信号看不见的情况。工程上常用AGC自动增益控制电路让放大倍数跟随信号强度自动调节。你也可以在软件里做归一化处理但硬件上先把各通道的增益一致性调好后面写算法会轻松很多。4.2 摄像头与图像采集硬件摄像头组对硬件的要求主要是可靠性和时序匹配。常用的OV7725摄像头输出YUV或RGB通过DVP接口和主控相连时序上靠场同步VSYNC、行同步HREF、像素时钟PCLK来同步数据。硬件设计上要关注的不是“摄像头本身清不清楚”而是摄像头供电要干净纹波大时画面会出现横纹或雪花信号线要尽量短DVP的线比较多建议把摄像头接口放在主控附近FIFO摄像头带缓存和DMA摄像头对主控引脚的要求不一样选型时要注意主控是否支持相应的DVP外设和DMA通道图像处理里的逆透视变换是摄像头组的核心算法但硬件上图像稳定是前提。如果硬件丢帧、花屏后面的透视变换做得再好也白搭。调试时可以用逻辑分析仪抓VSYNC、HREF、PCLK的时序波形确认摄像头主控之间的握手信号完全正常再去调图像算法。4.3 编码器与测速电路智能车的速度闭环离不开轮速反馈旋转编码器是标准方案。增量式编码器输出A、B两路正交方波通过相位关系判断方向通过脉冲数算速度。硬件上要做的就是给编码器供电、接上拉电阻、把A/B相引到主控的定时器正交解码引脚。选编码器时主要看分辨率每圈脉冲数和输出类型TTL电平直接接主控集电极开路需要加上拉电阻。实际项目中编码器最容易出问题的是安装和线缆联轴器松动、线材在转动中磨断、接插件接触不良这些都可能造成测速突然跳变。调试时可以先用示波器看A/B相波形确认脉冲干净、没有毛刺再谈软件滤波。5. 执行机构舵机与电机驱动5.1 舵机的控制与供电舵机本质是一个位置闭环系统主控发PWM信号舵机根据脉宽转动到对应角度。标准舵机PWM频率是50Hz脉宽1ms对应一个极限位置2ms对应另一个极限位置中间线性分布。软件上只要定时器输出对频率和占空比就行硬件上真正的麻烦在供电。舵机启动和堵转瞬间电流很大普通数字舵机能到1A甚至2A如果和主控共用一路电源舵机一转向电压跌落就会让单片机复位。解决办法是给舵机单独一路电源或者用BUCK/大电容在舵机电源处做缓冲同时所有模块的地必须共在一起。舵机信号线最好串一个几十欧的电阻再就近对地加一个小电容防止舵机内部电机刷火产生的干扰灌进主控引脚。5.2 电机驱动方案与选型电机驱动是功率电路的核心智能车和电赛控制题都绕不开。按功率分成几个档小功率1A-2A集成驱动芯片如TB6612、DRV8833简单可靠适合小车模型中功率5A-15A半桥芯片MOS方案如BTN7971双片组成H桥或者DRV8701外置MOS大功率20A以上全分离MOS H桥或专用栅极驱动芯片要考虑散热、栅极驱动、过流保护H桥的续流问题要特别重视。电机是感性负载关断瞬间会通过续流二极管或者MOS体二极管把能量释放掉如果续流路径没做好尖峰电压会击穿开关管。硬件上加续流二极管是最基本的操作更好的做法是让MOS管的体二极管参与续流、外部再并肖特基二极管。另外H桥上下管切换时要加死区防止同时导通短路烧管子很多集成芯片内部已经处理了分离方案需要自己用硬件或软件实现死区。5.3 编码器、电机、驱动、主控的连接执行部分最后就是把这些器件接成闭环。典型接法电机 ← 驱动芯片的OUT1/OUT2驱动芯片的PWM、方向引脚 ← 主控定时器IO编码器的A/B相 ← 主控定时器编码器接口编码器和驱动芯片的地 ← 电池负极接线顺序和共地原则比接线本身更重要功率地与信号地必须单点连接防止大电流在地线上产生压差导致信号误判编码器信号线要远离电机电源线实在避免不了就交叉走线而不是平行走线。6. 主控最小系统与调试基础设施6.1 MCU选型与最小系统设计智能车和电赛最常用的主控是STM32系列也有不少同学用英飞凌TC264、灵动微、兆易创新等国产芯片。选型主要看外设资源DVP摄像头需要足够的GPIO和DMA编码器需要多个定时器复用双车通信需要CAN或串口屏幕调试需要SPI。最小系统硬件上要做的事不多但每件事都很致命供电要稳定滤波电容放到位晶振选对负载电容起振电路里的匹配电容不能省复位引脚要有上拉和复位按键Boot引脚按启动模式接好SWD下载口至少要引出SWDIO、SWCLK、GND、3V3四个引脚再加一个LED和一个串口方便程序状态观察。全板设计时主控周边的小电路虽然简单但出问题概率最高。Boot引脚悬空导致程序跑不了、复位电容选太大导致上电起不来、晶振引脚旁边走线太长导致起振不稳定这些都是我实际见过的情况。画完板子先别急着焊芯片用万用表把电源对地阻抗、关键引脚电平先测一遍。6.2 调试工具把万用表和示波器用出水平硬件调试离不开仪器但很多同学只会用万用表测个通断。我的建议是至少熟练掌握三样万用表蜂鸣档测短路电压档测电源轨电流档测整板功耗注意要串联别把表笔直接并在电源上烧表示波器看PWM波形、传感器信号、电源纹波是排查“电路没反应”的第一利器。示波器探头用1x还是10x要搞清楚测纹波时带宽限制要打开否则全是高频噪声看不出真实情况逻辑分析仪抓串口数据、I2C时序、DVP摄像头信号非常方便比示波器便宜通道多适合数字信号调试写代码前先会用示波器量晶振引脚波形和复位引脚电平哪怕只看一眼都能避免很多“程序明明对但就是跑不起来”的尴尬。7. 常见问题排查与避坑实录7.1 硬件问题排查思路从现象反推原因做硬件最怕的不是问题多而是没有排查思路。我常用的套路是“三查三测”查电源上电后先测每一级电源电压是否正常范围是否在允许内。电源都不对后面全白搭。查时钟晶振引脚用示波器看有没有起振频率对不对。MCU没有时钟等于脑死亡。查复位与使能复位引脚电平是否正常芯片的使能引脚有没有按要求拉高或拉低。很多人漏了使能芯片始终在关断状态。测的过程中养成记录习惯每测一个点就写在纸上你会发现故障范围越缩越小最终精准定位到某条线或某个元件。7.2 典型问题速查表下面这个表格是我这些年项目里高频出现的故障和排查方向可以直接贴在示波器旁边当参谋现象可能原因排查方法上电无反应电流极小电源没通、保险烧断、开关没合万用表蜂鸣档从电池端逐段测量上电电流很大电源短路、电容击穿、芯片焊反断开负载逐路排查用热成像/摸元件温度单片机程序不跑复位引脚电平不对、晶振不起振、Boot错误示波器测复位和晶振查BOOT引脚电平传感器读数跳变参考电压不稳、信号线受干扰、上拉缺失示波器看波形检查电源纹波和地线舵机抖动/掉电复位舵机电源压降过大、共地不良测舵机电源在转向瞬间的跌落波形电机不转但有电压驱动使能脚悬空、PWM频率过低、续流管坏查驱动芯片使能电平看PWM波形测电机两端电压通信乱码波特率不匹配、共地不良、TX/RX接反逻辑分析仪抓波形核对波特率确认接线7.3 硬件调试经验技巧最后说几条独门经验是常规教程里不太会写的第一次上电永远要串电流表或者用可调电源限流。很多人直接把电池怼上去短路瞬间板子已经烧了还以为是芯片质量问题。限流上电冒烟了也来得及断电。焊接顺序有讲究。先焊电源部分测好电压再焊主控然后逐步焊外设。一次性全焊完再上电出了问题根本不知道是哪个模块导致的。示波器测浮地信号要小心。普通探头的地是接大地的用在隔离电源系统上可能形成地环路有损坏器件的风险。严格执行“先接探头地再探测试点”的顺序。多备一块“坏板子”做破坏性实验。专门拿一块次品板去折腾、去飞线、去测试极限参数能帮你快速积累直觉好板子始终留作对照。8. 我的体会与建议这系列写到这算开个头。做硬件设计这几年我最大的体会是硬件知识不是一个孤立的技能而是所有嵌入式工作的底盘工程。编程写得再漂亮电源不稳、信号不干净一切都是空中楼阁。反过来硬件基础扎实了排查问题的速度、系统设计的格局会完全不一样。如果你正打算从零开始学建议不要只看文章亲手焊一块小板子、画一块电源板、调通一个运放电路比看十篇教程都管用。根据我个人经验最有效的学习方法是“用比赛推着学”先报名一个智能车或者电赛的题目逼着自己去查手册、画板子、调硬件一个问题一个问题地解决半年后回头看你会惊讶自己已经掌握了这么多。这个系列还在持续更新后面我打算重点写电磁传感器放大电路的AGC设计、智能车驱动板的实战布线、电赛综合测评里运放波形发生电路的搭建以及摄像头组DVP接口的调试方法。有什么具体想深入的内容也可以在评论区告诉我我会结合实际项目把这套硬件知识体系继续补全。
返回列表