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Ω电阻隔离

下面这张图是我常用的电源拓扑结构,你可以直接拿去用:

运动控制卡电源拓扑结构图 24V 输入(工业开关电源) 保护电路(保险丝+TVS+防反接) 电机驱动供电(24V直供) DC-DC:24V → 5V(LM2596/TPS5430) 隔离电源模块(5V→5V隔离) LDO:5V → 3.3V(AMS1117-3.3) STM32 + 运放 + 逻辑芯片 大压差DC-DC → 小压差LDO

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反接、浪涌、短路。我建议在电源入口加三级保护:

  1. 自恢复保险丝(PTC):500mA或1A,防止过流烧板
  2. TVS管:SMBJ30A或SMCJ30A,钳位浪涌电压
  3. 防反接二极管:SS34或MBR340,串联在24V正极

别问我为什么这么强调——我曾经有一批板子没加TVS,客户现场一个雷击浪涌,烧了十几块。从那以后,保护电路就成了我的“标配”。

4.5 本章小结

电源设计是运动控制卡的“地基”。地基不稳,上层建筑再漂亮也没用。记住几个关键点:

  • 24V到5V用DC-DC,5V到3.3V用LDO
  • LM2596适合成本敏感场景,TPS5430适合高性能场景
  • LDO的散热焊盘必须焊接到地
  • 上电时序用RC延时或监控芯片解决
  • 保护电路是工业设计的“安全带”,别省