2. 电源系统排查:3.3V/5V供电异常、纹波过大、LDO选型与散热问题
电源,是嵌入式系统的命脉。我见过太多项目,折腾半天发现是供电出了问题。STM32对电源其实挺挑剔的,3.3V稍微偏一点、纹波大一点,就可能出现各种诡异现象——比如程序偶尔跑飞、ADC采集不准、无线模块连不上。
这一章,咱们就聊聊电源系统怎么排查。从供电异常到纹波过大,再到LDO选型和散热,把坑都踩一遍。
2.1 供电异常的常见表现与快速定位
供电异常,说白了就是电压不对。要么高了烧芯片,要么低了不干活,要么时高时低导致系统不稳定。
2.1.1 电压异常的典型症状
| 症状 | 可能原因 | 排查方向 |
|---|---|---|
| STM32无法启动,电流极小 | 3.3V电压偏低(< 2.7V) | 检查LDO输出、输入电压 |
| 程序偶尔跑飞、死机 | 电压跌落或纹波过大 | 示波器看3.3V波形 |
| 无线模块连接不稳定 | 供电瞬间跌落 | 抓取模块发射时的电压波形 |
| ADC采集值跳动 | 电源纹波耦合到参考电压 | 测量VREF+引脚纹波 |
| 芯片发烫 | 电压过高或短路 | 测量实际电压值 |
2.1.2 快速定位步骤
遇到供电问题,我一般按这个顺序排查:
- 目测——看电源指示灯亮不亮,芯片有没有明显烧毁痕迹。
- 万用表测电压——测LDO输入、输出,测STM32的VDD引脚。
- 示波器看波形——重点看启动瞬间和负载切换时的电压跌落。
- 红外测温——摸一摸LDO和芯片温度,烫手就是有问题。
2.2 纹波过大:看不见的杀手
纹波,就是电源上的交流分量。STM32虽然有一定电源抑制比,但纹波太大,轻则ADC不准,重则系统复位。
2.2.1 纹波的来源
- LDO自身噪声——某些LDO高频噪声较大,比如AMS1117系列。
- 负载瞬态响应——WiFi模块发射时电流从几十mA跳到几百mA,电压瞬间跌落。
- PCB布局问题——电源走线过长、过细,寄生电感导致纹波。
- 去耦电容不足——高频去耦电容离芯片引脚太远。
2.2.2 纹波测量方法
测纹波,示波器要设置好。我常用的方法:
- 示波器探头打到AC耦合,去掉直流分量。
- 带宽限制设为20MHz,避免高频噪声干扰。
- 探头用接地弹簧,不要用长地线夹——地线夹会引入噪声。
- 测量点选在STM32的VDD引脚附近,不是LDO输出端。
经验值: 对于STM32,3.3V纹波建议控制在50mVpp以内。如果超过100mVpp,ADC的12位精度基本就别想了。无线模块(如ESP8266)要求更严,纹波最好小于30mVpp。
2.2.3 纹波抑制方案
| 方案 | 适用场景 | 效果 |
|---|---|---|
| 增加输出电容(10μF+0.1μF) | 通用 | 降低低频纹波 |
| 加磁珠+电容组成π型滤波 | 无线模块供电 | 抑制高频噪声 |
| 换低噪声LDO | ADC、传感器供电 | 从源头降低噪声 |
| 增加前级滤波(LC滤波) | 输入电压纹波大 | 改善输入质量 |
2.3 LDO选型:不是随便一个3.3V都能用
LDO选型,很多人只看输出电压和电流。其实还有几个关键参数容易被忽略。
2.3.1 关键参数对比
| 参数 | 说明 | 选型建议 |
|---|---|---|
| 压差(Dropout Voltage) | 输入输出最小压差 | 电池供电选低压差(< 200mV) |
| 输出噪声 | LDO自身产生的噪声 | ADC供电选低噪声(< 30μVrms) |
| 电源抑制比(PSRR) | 对输入纹波的抑制能力 | 高频PSRR越高越好 |
| 静态电流 | LDO自身消耗的电流 | 电池供电选低静态电流 |
| 热阻 | 散热能力 | 大电流选低热阻封装 |
2.3.2 常见LDO型号对比
| 型号 | 输出电流 | 压差 | 噪声 | 典型应用 |
|---|---|---|---|---|
| AMS1117-3.3 | 1A | 1.1V | 中等 | 通用数字电路 |
| XC6206P332MR | 200mA | 200mV | 低 | 电池供电、传感器 |
| RT9013-33GB | 500mA | 250mV | 低 | 无线模块供电 |
| LP5907MFX-3.3 | 250mA | 120mV | 极低 | ADC参考电压 |
2.4 散热问题:LDO发烫怎么办?
LDO发烫,本质上是功耗太大。功耗P = (Vin - Vout) × Iout。比如输入5V,输出3.3V,电流500mA,功耗就是(5-3.3)×0.5 = 0.85W。SOT-223封装的AMS1117,热阻约90°C/W,温升就是0.85×90 ≈ 76.5°C。如果环境温度25°C,芯片温度就超过100°C了——烫手!
2.4.1 散热计算
芯片结温Tj = Ta + P × RθJA。其中:
- Ta:环境温度
- P:LDO功耗
- RθJA:结到环境的热阻
一般芯片结温不要超过125°C,最好留50%裕量,控制在85°C以内。
2.4.2 散热解决方案
| 方案 | 适用场景 | 效果 |
|---|---|---|
| 加散热焊盘/过孔 | PCB空间有限 | 降低热阻10-20% |
| 换大封装(TO-252) | 电流较大 | 热阻更低 |
| 加散热片 | 空间允许 | 显著降温 |
| 改用DC-DC | 压差大、电流大 | 效率高、发热小 |
| 降低输入电压 | 输入电压可调 | 直接降低功耗 |
2.5 电源系统排查流程图
下面这张图,是我做电源排查时的思路。你可以照着这个流程走一遍,大部分电源问题都能定位到。
2.6 实战案例:一个WiFi模块频繁掉线的排查
最后分享一个真实案例。去年我做了一个智能家居网关,用STM32F103+ESP8266。板子调好后,发现ESP8266每隔几分钟就掉线一次。
一开始怀疑是WiFi信号问题,换了路由器还是不行。后来用示波器抓ESP8266供电引脚,发现模块发射时3.3V跌到了2.9V,持续约10ms。
排查过程:
- 万用表测LDO输出:3.32V,正常。
- 示波器看纹波:静态时20mVpp,正常。但ESP8266发射时,电压跌落明显。
- 检查LDO:用的是AMS1117-3.3,最大输出1A。ESP8266峰值电流约300mA,按理说够用。
- 问题出在电容上:ESP8266旁边只有10μF电容,储能不够。
解决方案:在ESP8266供电引脚旁边加了一个100μF钽电容+0.1μF陶瓷电容。再测试,电压跌落从300mV降到50mV以内,掉线问题解决。
教训: 无线模块的峰值电流很大,但持续时间短。LDO的电流能力够不够,不能只看平均值,要看瞬态响应。大电容就是给瞬态电流准备的。记住:模块旁边至少放一个100μF电解或钽电容。