尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

硬件电路设计实战100例:从0到1完成稳定电路板设计

硬件电路设计实战100例:从0到1完成稳定电路板设计 做硬件电路设计这些年最常被问的一句话不是“某个芯片怎么选”而是“我啃了一堆书就是不会做项目怎么办”。这是个很真实的困境因为硬件设计和纯理论学科不一样它是由大量隐性经验堆起来的——同样的一个运放电路元器件选型不同、PCB布局不同调试结果可能天差地远。这也是我做《硬件电路设计实战100例》这个专栏的最直接原因我想把“从0到1设计一块稳定工作电路板”这件事拆成100个真实、可复现的设计案例让正在走这条路的人不用再花十年去踩别人踩过的坑。这篇文章我会把专栏的定位、案例体系、几个核心设计案例以及调试经验一并分享出来也算是一份给硬件新人的实践地图。1. 专栏定位与设计思路1.1 “实战”到底指什么我先说清楚一个事这本专栏里的“实战”不是指“画出原理图”而是指“把一块板子做到能稳定量产出货”的完整过程。你在学校或者网上的教程里看到的很多电路图充其量只是纸面方案它没有告诉你电源纹波在批量生产时怎么飘、走线长了信号会怎么畸变、器件手册里的典型值在真实环境里会缩水多少。在我的定义里一个真正的实战案例至少要包含四层内容一是完整的项目背景比如“这块板子是做工业温度采集的环境温度会到70℃”二是原理图和参数计算过程不是摆一个芯片就完事三是PCB布局布线的关键决策点比如哪个区域必须铺地、哪根线要等长四是上电调试后的故障记录包括我犯过的错误和最后的解决手段。所以你在专栏里看到100个案例就是100套从需求到成品的过程。有的案例最后是成功的也会有几个案例我会故意保留“刚开始设计了什么错误方案”的记录这部分其实比成功结果更值钱。因为硬件行业里你找一份完整正确的原理图很容易但想知道“为什么会做成这样”却很难。1.2 为什么是“100例”而不是“电路300例”有人会开玩笑说市面上已经有《经典电路300例》为什么还要做100例。经典电路书的问题是它只告诉你“这是不错的电路”却不告诉你“这个电路放在什么场景下会失效”。所以我在选题上做的是减法不追求覆盖所有电路而是把真正决定项目成败的100个问题讲透。这100个案例不是随机凑出来的而是按工程认知逻辑组成的系统。举个例子你设计任何一块带处理器的板子都要解决“电源怎么来”“信号怎么采集”“数据怎么通信”“负载怎么驱动”“现场故障怎么扛”这五件事。所以我的案例库就按这五件事展开再补上PCB与EMC这两个贯穿始终的工程主题就形成了十个板块。从认知角度来看100这个数字也刚好是一个普通工程师的迭代容量。假设你每两周认真复刻一个案例大约需要两年时间。两年后你已经把电源、接口、传感器、功率驱动、保护电路这些最常见的硬件模块都过了一遍手再往后做项目就基本不会手足无措了。1.3 适合哪几类工程师先说最合适的人刚入行一到三年的硬件工程师尤其是电子相关专业毕业但在学校里没有真正做过完整项目的朋友。你最大的问题不是基础差而是缺少“项目手感”这个专栏正好可以补上。第二类是嵌入式软件转硬件的人。很多做单片机开发的工程师写代码没问题但一拿起烙铁就心虚。专栏里大量接口电路、最小系统和电源设计的讲解能把你的数字思维往模拟世界拉一把。第三类是自己做电子DIY、开源硬件、个人项目的爱好者。你们往往有热情但会被一些基础工程问题卡住比如为什么继电器一吸合单片机就复位、为什么RS485总线偶尔乱码。这类问题我在案例里会详细拆解按图索骥就能解决。我不建议零基础纯小白直接上手。最起码你得知道电阻色环、万用表怎么用、单片机GPIO是什么否则很多概念会接不住。但如果你有一点点底子这套专栏完全是可以跟着做的。2. 案例体系与知识地图2.1 十个板块一条完整的项目认知链整个专栏的100个案例被划分为10个板块每个板块都有明确的目标。我用一张表把板块结构列出来你在学习时心里先有个地图板块案例数主要内容电源设计18例线性稳压、Buck开关电源、Boost升压、负压产生、隔离电源信号采集与调理15例运算放大器、ADC前端、有源滤波、传感器信号调理接口与通信20例UART、I2C、SPI、RS485、CAN、USB、以太网接口电路嵌入式最小系统10例STM32/ESP32/FPGA最小系统、复位、时钟、下载调试电路功率驱动12例H桥、MOS管驱动、继电器、PWM调速、电磁阀控制保护与可靠性8例ESD防护、浪涌抑制、反接保护、过流保护、欠压锁定低功耗设计7例休眠唤醒、电源路径切换、低功耗MCU外围设计接口防护与隔离5例光电隔离、磁隔离、隔离DC-DC、通信接口防护PCB与EMC实战10例布局布线规范、地平面分割、去耦电容、屏蔽与滤波综合项目实战25例温湿度记录仪、无人机飞控、BLDC驱动器、电池管理系统等请注意综合项目不是单独的模块而是把前面所有案例的知识点串起来的大型应用。我建议你学到后期至少完整跟做两到三个综合项目因为硬件设计最忌讳“只做过零件、没装过整机”。2.2 推荐学习顺序我见过很多朋友拿到资料后从第一页翻到第100页其实这种线性阅读效率不高。硬件的知识不是靠“看”学会的而是靠“练”和“修”学会的。所以我在专栏里设计了一条推荐路径第一阶段先攻电源与最小系统。因为任何电路板都需要电而嵌入式最小系统是最常见的主体框架。你可以从LDO电源开始做一个最简单的STM32最小系统板点亮LED、跑一个串口回环先把“芯片会跑起来”这件事做实。第二阶段做接口与通信。重点做RS485和CAN这两个工业场景中几乎绕不开的接口并且一定要带着隔离和防护设计去做。第三阶段做信号采集与调理用一个PT100测温或者电桥称重项目把运放、滤波、ADC串起来。第四阶段再碰功率驱动和电机控制最后才回头看EMC和可靠性问题。为什么要这样的顺序因为前几个阶段失败最多也就是逻辑不对但功率驱动一旦出错烧管子、烧板子甚至伤到人是家常便饭。把基本功练扎实了再上高压大电流是对自己负责。3. 四个有代表性的设计案例拆解3.1 STM32最小系统不是照着参考电路抄一遍那么简单很多人的第一块板子就是STM32最小系统这案例很简单但当我复盘时发现里面每个元器件都有它的设计逻辑。先看电源部分。我的例子里用的是USB的5V输入经过一个AMS1117-3.3变成3.3V。注意输入输出各需要加电容输出端我用了10uF钽电容加100nF陶瓷电容并联。很多人只加100nF结果在芯片突然大电流跳变时输出电压会掉下来导致程序跑飞。陶瓷电容ESR低负责高频去耦钽电容容量大负责提供瞬态电流它们配合才是完整的电源滤波。复位电路也有讲究。STM32的NRST引脚需要一个低电平复位脉冲。常见做法是10k电阻上拉到3.3V再接一个100nF电容到地。上电瞬间电容充电NRST会被拉低一段时间时间常数是R*C 10k * 100nF 1ms。这个1ms远远超过芯片复位所需要的最小脉冲宽度所以没问题。如果你把这100nF换成1uF时间常数变成10ms等系统真正跑起来时反而会因为按键复位响应变慢而变得手感迟钝。还有一个很容易被新手忽略的细节是BOOT0和BOOT1引脚。BOOT0必须用一个10k电阻下拉到GND让它默认从Flash启动。如果悬空静电干扰可能让芯片随机进入系统存储器启动模式表现为程序明明烧进去了却跑不起来。晶振电路方面8MHz主晶振的两个负载电容我习惯用22pF这不是随便写的。STM32F103手册里的晶振CL约为10pF加上PCB杂散电容约4pF实际匹配公式是 CL (C1*C2) / (C1C2) C杂散。如果C1C222pF算出来差不多是11pF 4pF 15pF稍微偏大一点点稳定性和起振速度都不错。如果选18pF会更接近理论值但22pF更常见实际用下来没差别。这块板子我调试时有一次比较典型的问题系统能上电但运行几分钟后偶尔死机。查了一圈最后发现是晶振正下方大面积铺了地导致晶振到MCU的走线产生明显耦合电容干扰了振荡波形。把晶振下方的地挖空之后问题再也没有出现。这个案例被很多读者评价为“从原理图看不出来的PCB坑”。3.2 RS485隔离收发电路参数计算比接口选型更关键RS485是工业通信里最皮实的接口之一但很多人在设计时只想着选一颗收发芯片却不管总线上的电阻网络结果就是通信距离一远就乱码。专栏里的这个案例我用的是“数字隔离器隔离电源RS485收发器”的经典组合MCU的UART信号先过ISO7721数字隔离器然后接到MAX3485的DI和RO隔离电源用B0505S把5V变成隔离的5V最后给MAX3485供电。这里最需要注意的是终端电阻和偏置电阻的计算。RS485标准要求用特性阻抗为120Ω的双绞线所以在总线两端各接一个120Ω终端电阻来匹配阻抗。但是终端电阻会拉低总线差分电平尤其在总线空闲时如果A、B之间没有确定的电压差接收器输出状态就是随机的这就是很多人遇到“一上电就收到乱码”的原因。解决办法是在A线上拉到VCC在B线下拉到GND给它一个偏置。偏置电阻怎么选假设收发器输入阻抗是12kΩ标准单位负载总线上挂32个设备等效输入阻抗就是12k/32375Ω不对标准是单位负载12kΩ32个单位负载并联后是375Ω。但实际我们不需要挂满32个设备挂几个设备的等效输入阻抗远高于375Ω终端电阻反而是主要的负载。我按最常用情况算总线上只有两个设备两端各一个120Ω终端电阻并联等效为60Ω偏置电阻从5V到A和从B到GND。为了在A-B之间产生超过200mV的空闲差分电压需要偏置电流I V / R。如果偏置电阻选1kΩ两条路径并联等效偏置电阻约500Ω加上60Ω终端电阻回路上总电阻约560Ω5V在60Ω上产生的电压约为5 * 60 / 560 ≈ 0.536V这个值足够稳定。但要注意如果总线上设备增多等效终端电阻变小偏置电压会下降可能需要更小的偏置电阻或者用一个专门的“失败安全偏置网络”芯片。功率和防护部分我在A、B线上各串联了一个10Ω电阻再接TVS管到GND防止静电和浪涌损坏收发器。TVS的选型原则是反向截止电压要高于总线共模电压范围钳位电压要低于收发器耐压范围。对5V系统我常用SMBJ6.0CA双向的因为RS485总线的A、B都可能比GND高或低。实际调试中还有个容易犯的错隔离电源的GND和数字侧的GND一定不能连在一起。如果你的PCB上这两块地靠得太近隔离就失去了意义共模干扰还是会通过地平面耦合过去。我第一次画这类板子时就因为偷懒把两个地公用了一个过孔结果通信距离一超过50米就丢包把隔离电源和数字隔离换成更好的型号也没用最后重新布板才解决。3.3 PT100测温前级从传感器到ADC的完整信号链温度采集是工业设备里最常见的需求而PT100又是最典型的温度传感器。这个案例我设计了一个三线制PT100信号调理电路重点解决“小信号放大”和“引线电阻补偿”这两个问题。先简述原理PT100在0℃时阻值100Ω温度每升高1℃阻值大约增加0.385Ω。如果给它施加1mA的恒流激励那么温度变化100℃电压变化就是38.5mV。这个信号太小直接进ADC精度很难保证所以要用仪表放大器放大到ADC的输入区间。我用的是三线制接法三条引线分别给传感器供电、检测电压和接地。这样两条引线上的压降虽然存在但由于检测回路几乎没有电流所以引线电阻的压降不会出现在测量回路里也就抵消了导线长度带来的误差。如果只用两线制长导线上0.5Ω的电阻相当于1.3℃的温度误差这在工业现场是不能接受的。放大电路我选了INA128仪表放大器增益通过一个外部电阻设定。公式是G 1 50kΩ / Rg。我希望把0~100℃对应的38.5mV放大到约1.0V留出余量所以G 1V / 0.0385V ≈ 26。取G25则Rg 50k / (25-1) ≈ 2.08kΩ实际选2kΩ精密电阻增益约26满量程约1V。这个输出范围对常见的3.3V ADC来说很安全。但光放大还不够PT100信号从传感器到电路板会经过长线容易耦合工频噪声。我在INA128输出后加了一级二阶低通滤波截止频率设为10Hz。RC滤波器的计算是 f 1 / (2πRC)我用了两个10kΩ电阻和两个1uF电容构成二阶理论截止频率约16Hz同时仪表放大器输出阻抗较小不会影响滤波效果。如果你想要更好的工频陷波可以再加一个50Hz双T有源滤波器不过大部分场景一阶低通加软件均值就够用了。这个案例里我踩过最深的坑是仪表放大器的参考电压。INA128的输出是以REF引脚电压为基准的我一开始把REF直接接地结果输出只有正半周负温度测不了。后来改成用2.5V精密基准源做REF这样输出可以在2.5V上下摆动正负温度都能采集。很多第一次做双电源运放的人都会忽略这一点把它写在专栏里就是因为这个问题在当时让我足足折腾了两个晚上。3.4 H桥电机驱动功率部分的每一处都可能是坑电机驱动是我最想分享的一个案例因为它同时涉及功率、信号、热和EMC一个设计失误就会烧东西。我在专栏里做了一个基于IR2104的半桥驱动芯片驱动全N沟道MOSFET的H桥用于12V直流有刷电机。选MOS管时耐压要留两倍裕量电流要按峰值电流的三倍选。12V系统我用IRLR7843其Vds为30VId为161ARds(on)约3mΩ。实际电机堵转电流可能30A算下来导通损耗I²R 900 * 0.003 2.7W两块MOS分摊后发热依然可观所以要加足够的铜箔散热。N沟道MOS的驱动比P沟道麻烦因为上管源极电位是浮动的。IR2104通过自举电容来驱动上管。自举电容的容量按公式C ≥ 10 * Qg / ΔV计算。IRLR7843的Qg约26nC驱动电压跌落到0.5V以内的话C ≥ 10 * 26nC / 0.5V 520nF我实际用了1uF的X7R陶瓷电容裕量足够。电容要尽量靠近VS和VB引脚否则高频导通过程中自举电压不足上管会进入线性区发热烧毁。续流二极管也不能省。H桥在开关瞬间电机电感的电流需要回路如果靠MOS管的体二极管续流反向恢复慢尖峰会比较大。我每个MOS管旁并联了一个30V、3A的肖特基二极管开关频率20kHz以下完全够用。真正的关键是二极管的摆放要紧挨着MOS管走线要短粗否则照样等效出寄生电感。PCB布局上功率地和信号地要单点连接。驱动芯片的地、逻辑地必须和电机电流回路分开在芯片底部的一个点汇合。我第一版没分开结果PWM一开单片机ADC采集到的电压全是毛刺单片机还偶尔死机。后来把地切开用0Ω电阻单点连接再用一个100nF电容跨在信号地和功率地之间做高频旁路现象立刻消失。关于死区时间IR2104自带死区但如果你用的是分离驱动或者直接驱动一定要在软件或者硬件上加死区不然上下管直通电源到地短路MOS管瞬间冒烟。这个案例我特别强调安全因为功率板焊接时一旦烧MOS管旁边的PCB铜箔也会被炸起来清理残渣非常麻烦。4. 仿真工具与实际调试流程4.1 工具选型什么阶段用什么仿真每次看到有人问我“有没有一种工具能从头仿真到位”我都想劝他醒一醒。硬件仿真工具一大堆但它们各自解决的问题不一样。我的习惯是原理图阶段用LTspice做电源和模拟电路的仿真比如Buck电路的开环输出、运放电路的频响和噪声LTspice免费、计算快非常适合验证参数。数字接口和整板信号完整性我偶尔用HyperLynx做阻抗和串扰仿真但这属于进阶内容新手不必强求。不要迷信仿真结果。仿真模型再精确也赶不上真实元器件参数离散、PCB寄生参数和热漂移。仿真帮你验证的是“这个电路在理想条件下能不能成立”而不是“这块板子焊出来一定没问题”。所以我的流程永远是先用仿真把方案从头到尾推一遍把明显不合理的参数调对然后赶紧打样实测。4.2 我的一套上板调试流程我这些年用下来最稳的上板流程是分四步走。第一步是裸板检查不上电用万用表测电源和地之间有没有短路测量每个电源芯片的输出端对地阻抗是否正常再目检一遍焊点重点看芯片底部有没有锡珠。第二步是空载上电用直流电源限流100mA慢慢给板子加电如果电流异常立刻断电检查是不是有芯片焊反或者电容极性接错。第三步是功能测试下载最小程序看电源输出电压、晶振波形、串口输出确认“最小系统”是活着的。第四步才挂上外围负载比如传感器、电机、通信总线逐项验证功能。这里我有一个特别想提醒的细节给板子第一次上电时我强烈建议用可调电源的限流功能而不是直接插USB或者接电池。限流电流先设成你预估正常工作电流的两倍左右比如预估100mA就设200mA。如果不小心焊错了极性电源会限制输出通常只会发热而不是炸电容。这个习惯救了我很多次也可以让初学者少走很多弯路。5. 高频故障与排查方法实录5.1 九个让工程师头疼的现场问题很多硬件工程师不是在画板子就是在查板子。我把专栏里出现频率最高的故障整理成了一份排查笔记大家以后对着查就行。第一类是ADC采样值乱跳。优先怀疑电源纹波和基准噪声其次检查采样引脚有没有串入高阻抗的走线可以在ADC引脚加一个100nF电容对地。第二类是RS485通信乱码。先查A/B有没有接反、终端电阻和偏置电阻是否合理再排查隔离电源是否浮地。第三类是MOS管上电就发热。多半是栅极没下拉驱动芯片时序不对或者自举电容失效。第四类是继电器动作时单片机复位。这是典型的感性负载引起的地弹或尖峰解决思路是继电器线圈两端并联续流二极管注意方向同时MCU电源入口加TVS。第五类是低功耗设备静态电流偏大。先断开外设用万用表测每个电源路径重点排查上拉电阻和外设芯片的静态消耗。第六类是无源晶振不起振。检查负载电容是否匹配、X1/X2走线是否过长、晶振下方是否铺了地。第七类是板子一受热就不稳定。这个最阴险可能是某个电容温度特性不行比如用了Y5V电容当去耦电容温度一高容量就掉换X7R或X5R能解决。第八类是SPI设备偶尔死锁很多情况是时钟速率太快或者CS拉高的时序不够把时钟降一半试试。第九类是电源输出纹波大换低ESR电容、加大输出电容容量、调整反馈走线位置通常能解决。5.2 问题排查速查表现象可能原因快速排查方法常用解决方案ADC值漂移电源纹波/基准不稳示波器测Vref和VDD交流分量加强去耦电容、使用独立基准源通信乱码总线终端/共模干扰示波器看A-B差分波形加终端电阻、整改隔离地MOS管过热驱动不足/开关损耗大测栅极波形上升下降沿检查自举电容、降低开关频率继电器导致复位感性负载反电动势用示波器抓VCC跌落线圈并联续流二极管、MCU电源加TVS低功耗电流大外部上拉/芯片未休眠分段断开负载测电流用IO控制外设电源、关闭不用的外设时钟晶振不起振电容失配/走线耦合确认X1X2波形调整负载电容、挖空晶振下方地受热死机电容温度漂移热风枪局部加热观察换成X7R/X5R电容SPI死锁时序问题降速、示波器看CS时序优化CS释放时间、降低SCLK纹波大反馈环路/布局问题测输出端高频毛刺优化反馈走线、增加陶瓷电容这张表里的问题我在实际项目和读者反馈中见过最少十次以上。每一条后面都至少有一个完整的排障故事所以别把它当成理论总结它就是我踩坑记录的浓缩版。6. 怎么把100个案例真正变成自己的经验6.1 从“看懂”到“复刻”看案例是最容易产生“我懂了”错觉的行为。原理图看懂了代码看懂了但实际上手画板子时可能连一个电阻封装选多大都会犹豫。所以我反复强调每个案例至少完整复刻一遍哪怕只是用洞洞板和杜邦线搭一个原型也要亲手焊一遍、调一遍。复刻的时候不要照抄。我会故意让你换个MCU型号比如案例里用STM32F103你可以换成GD32或者AT32顺便看看数据手册里哪些引脚兼容、哪些配置不同。这样你才会真正理解最小系统的公共部分是什么而不是只会抄某个引脚表。再比如案例用了AMS1117你可以换成低功耗的LDO或者Buck评测一下各自的纹波和发热这样你对电源的认知就不再停留在“三脚长得都一样”的层面。每完成一个案例记录一份“设计笔记”内容包括这个模块的核心指标是什么、我选了哪些关键器件、遇到了什么问题、最后怎么解决。不要小看这份笔记它是你未来做项目时最快的参考资料。我自己的笔记本已经攒了四本很多问题都是翻旧笔记找到答案的。6.2 最后一定要做一个综合项目当你把前几十个案例逐个复刻完一定要找一个综合项目把它们串起来。比如做一个基于STM32的温湿度记录仪电源用LDO或者Buck传感器用SHT30或用PT100案例里的模拟信号链通信用你复刻过的RS485或CAN再加上LCD显示和掉电保存。这个项目看起来并不酷但你要动手把每个模块接在一起你会发现很多单模块测试时没出现过的问题——比如传感器和LCD的I2C地址冲突、485通信时电源被拉低、ADC和开关电源互相干扰等。这些问题才是硬件设计真正的日常。100个案例里最后的25个综合项目就是用来训练你这种“系统级排查”的能力而不是让你一个个组件单独玩。能做到这一步你就已经不是那个拿着别人原理图也心虚的初学者了。我自己的体会是硬件设计从来没有“学完”的那天它是在一次次烧板、一把把焊接和一遍遍测量中慢慢积累出来的。这套《硬件电路设计实战100例》能做的是把你从毫无头绪的状态拉到一个有基本判断力的水平。剩下的路还得靠你在工作台前手拿万用笔和示波器自己一步步走下去。
返回列表