4. 系统架构设计
电源设计,说白了就是给整个运动控制卡“喂饭”。饭喂不好,芯片就会闹脾气——复位、死机、烧管子,什么毛病都可能来。我这些年调试过的板子,至少有三成故障都跟电源脱不了干系。所以这一章,咱们把电源系统从头到尾捋一遍。
4.1 系统电源拓扑:从24V到3.3V的“三级跳”
运动控制卡的工作环境通常比较“糙”——工业现场,24V开关电源是标配。但咱们板子上的STM32要3.3V,电机驱动逻辑要5V,编码器接口可能还要隔离电源。这就需要一个清晰的电源树。
我个人习惯把电源分成三级:
- 第一级:24V输入——来自外部开关电源,直接给电机驱动和隔离侧供电。
- 第二级:5V中间总线——通过DC-DC从24V降压得到,给继电器、光耦、传感器供电。
- 第三级:3.3V核心电压——从5V通过LDO稳压得到,专供STM32、运放、逻辑芯片。
你想想看,为什么不用DC-DC直接从24V降到3.3V?我在项目里试过,纹波太大,STM32的ADC根本没法用。所以,大压差用DC-DC,小压差用LDO,这个原则别搞反了。
电源树核心原则:
- 24V → 5V:DC-DC降压,效率优先
- 5V → 3.3V:LDO稳压,纹波优先
- 模拟与数字电源:磁珠或0Ω电阻隔离
下面这张图是我常用的电源拓扑结构,你可以直接拿去用:
4.2 DC-DC降压电路设计:LM2596与TPS5430实战对比
DC-DC降压芯片我用的最多的是两颗:LM2596和TPS5430。前者是经典老将,后者是效率新星。怎么选?看你的需求。
| 参数 | LM2596 | TPS5430 |
|---|---|---|
| 输入电压范围 | 4.5V ~ 40V | 5.5V ~ 36V |
| 输出电流 | 3A(峰值) | 3A(持续) |
| 开关频率 | 150kHz(固定) | 500kHz(固定) |
| 效率(24V→5V) | 约82% | 约90% |
| 纹波 | 较大(约50mVpp) | 较小(约20mVpp) |
| 外围元件 | 较少(4个电容+1个电感+1个二极管) | 稍多(需补偿网络) |
| 价格 | 便宜(约3元) | 稍贵(约8元) |
我的选型建议:
如果板子空间大、成本敏感、对纹波不敏感(比如只给继电器供电),用LM2596就够了。如果给传感器或通信模块供电,我建议用TPS5430——效率高、发热小、纹波低。我在一个激光雕刻机项目里用过TPS5430,24V转5V带2A负载,散热片都不用加。
4.2.1 LM2596典型电路
LM2596的电路非常经典,数据手册里就有参考设计。我直接贴一个我验证过的版本:
// LM2596-5.0 固定输出5V电路
// 输入:24V,输出:5V/3A
// 关键元件选型:
// L1:33μH/3A 功率电感(推荐CD54或CD75封装)
// D1:SS34(肖特基二极管,40V/3A)
// CIN:220μF/50V 电解电容 + 0.1μF MLCC
// COUT:220μF/16V 电解电容 + 0.1μF MLCC
// FB引脚:固定版本直接接输出,可调版本接电阻分压
// PCB布局要点:
// 1. 输入电容尽量靠近VIN引脚
// 2. 电感靠近SW引脚,走线短而粗
// 3. 反馈走线远离电感和SW节点
// 4. 底部铺地,散热焊盘打过孔到地平面
注意:LM2596的SW引脚开关节点噪声很大,千万别把敏感信号线从它下面走。我曾经吃过这个亏——ADC读数一直跳,查了两天才发现是SW节点的磁场耦合到了模拟信号线上。
4.2.2 TPS5430电路设计要点
TPS5430比LM2596复杂一点,但性能好得多。它的开关频率是500kHz,所以电感可以更小。
// TPS5430 可调输出电路(输出5V)
// 输入:24V,输出:5V/3A
// 反馈电阻计算:
// VOUT = 0.8V * (1 + R1/R2)
// 取R2 = 10kΩ,则R1 = (5V/0.8V - 1) * 10kΩ = 52.5kΩ
// 实际取R1 = 51kΩ + 1.5kΩ(1%精度)
// 关键元件:
// L1:15μH/3A(比LM2596小一半)
// D1:SS34或B340
// CIN:10μF/50V MLCC + 0.1μF MLCC
// COUT:22μF/16V MLCC × 2
// BOOT电容:0.1μF MLCC(必须靠近BOOT和PH引脚)
// 补偿网络(用于可调版本):
// C3:330pF(前馈电容,改善瞬态响应)
// R3:10kΩ(与C3串联,接在VSENSE和输出之间)
TPS5430的“隐藏技能”:
它的EN引脚有内部上拉,悬空时默认使能。但如果你需要上电时序控制,可以用一个开漏输出的GPIO拉低EN来关断输出。我在多路电源设计中经常这么干——先让5V起来,再让3.3V起来,避免STM32在欠压状态下初始化。
4.3 LDO线性稳压电路设计:从5V到3.3V的“最后一公里”
DC-DC输出的5V纹波再小,也有20~50mVpp。STM32的供电要求是3.3V ± 3%,也就是3.2V~3.4V。如果纹波直接耦合到VDD上,ADC的精度就别想了。所以,5V到3.3V这步,必须用LDO。
我最常用的LDO是AMS1117-3.3,便宜、稳定、外围简单。但要注意它的压差——AMS1117的压差典型值是1.1V,也就是说输入至少要比输出高1.1V才能稳压。5V输入到3.3V输出,压差1.7V,刚好够用。
| LDO型号 | 输出电流 | 压差 | 静态电流 | 适用场景 |
|---|---|---|---|---|
| AMS1117-3.3 | 1A | 1.1V | 5mA | 通用,STM32主供电 |
| XC6206P332MR | 200mA | 0.2V | 1μA | 低功耗待机电路 |
| LP5907MFX-3.3 | 250mA | 0.12V | 12μA | 低噪声模拟供电 |
LDO布局小技巧:
AMS1117的散热焊盘一定要焊接到地平面,否则1A输出时温度能到80℃以上。我在一个项目里偷懒没焊散热焊盘,结果板子跑一会儿就热保护了。另外,输入输出电容要靠近引脚——输入用10μF钽电容+0.1μF MLCC,输出用10μF MLCC就够了。
4.4 电源上电时序与保护电路
STM32有个“毛病”——它要求所有电源引脚在上电时基本同时到达额定电压。如果3.3V先起来,而某个IO口的5V供电还没起来,IO口就可能通过内部钳位二极管倒灌电流,轻则锁死,重则烧芯片。
我一般用两种方法解决上电时序:
- 方法一:RC延时使能——在DC-DC或LDO的EN引脚上接一个RC延时电路,让5V先上电,延迟几毫秒后再让3.3V上电。
- 方法二:电源监控芯片——用MAX809或TPS3803这类电压监控芯片,检测5V是否稳定,输出复位信号给STM32,同时控制3.3V LDO的使能。
// 简单的RC延时使能电路
// 用于控制3.3V LDO的EN引脚
//
// 5V ---[10kΩ]--- EN引脚 ---[10μF]--- GND
//
// 时间常数 τ = R × C = 10kΩ × 10μF = 100ms
// 约5τ = 500ms后EN引脚电压达到5V的99%
// 实际延时约200ms(EN阈值约1.2V时开启)
//
// 注意:如果EN引脚内部有上拉,需要调整电阻值
保护电路不能省:
工业现场什么情况都可能发生——24V反接、浪涌、短路。我建议在电源入口加三级保护:
- 自恢复保险丝(PTC):500mA或1A,防止过流烧板
- TVS管:SMBJ30A或SMCJ30A,钳位浪涌电压
- 防反接二极管:SS34或MBR340,串联在24V正极
别问我为什么这么强调——我曾经有一批板子没加TVS,客户现场一个雷击浪涌,烧了十几块。从那以后,保护电路就成了我的“标配”。
4.5 本章小结
电源设计是运动控制卡的“地基”。地基不稳,上层建筑再漂亮也没用。记住几个关键点:
- 24V到5V用DC-DC,5V到3.3V用LDO
- LM2596适合成本敏感场景,TPS5430适合高性能场景
- LDO的散热焊盘必须焊接到地
- 上电时序用RC延时或监控芯片解决
- 保护电路是工业设计的“安全带”,别省