3、电源管理基础:LDO vs DC-DC,效率曲线,待机功耗优化
做低功耗设计,电源管理是绕不开的核心。说白了,你芯片再省电,电源转换效率一塌糊涂,电池电量照样哗哗地掉。我见过不少工程师,花了大把精力优化代码,结果电源选型没做好,续航直接腰斩。今天咱们就聊聊电源管理的基础——LDO和DC-DC怎么选,效率曲线怎么看,待机功耗怎么压。
3.1 LDO vs DC-DC:谁更适合你的剃须刀?
先问个问题:你的剃须刀需要从3.7V锂电池降压到1.8V给MCU供电,你会用LDO还是DC-DC?
很多人第一反应是DC-DC效率高。嗯,这话没错,但得看场景。咱们先看看两者的本质区别。
LDO(低压差线性稳压器)
LDO的工作原理很简单——把多余的电压以热量形式消耗掉。比如输入3.7V,输出1.8V,那1.9V的压差就变成了热量。
优点:
- 输出纹波极小,噪声低——对模拟电路很友好
- 外围电路简单,只需要输入输出电容
- 成本低,占板面积小
- 静态电流可以做到极低(微安级)
缺点:
- 效率 = Vout / Vin,压差越大效率越低
- 大电流下发热严重
- 只能降压,不能升压
效率计算公式:
η = Vout / Vin × 100%
例如:3.7V转1.8V,效率 = 1.8 / 3.7 ≈ 48.6%
也就是说,超过一半的能量都变成了热量!
DC-DC(开关稳压器)
DC-DC通过开关管和电感储能,实现电压转换。它不靠压差工作,而是靠占空比调节。
优点:
- 效率高,通常80%-95%
- 可以降压、升压、反压
- 适合大电流场景
缺点:
- 输出纹波大,需要额外的滤波
- 外围电路复杂(电感、电容、反馈电阻)
- 轻载效率下降明显
- EMI问题需要处理
我的经验:在剃须刀这种电池供电设备中,我习惯把电源分配成两路:
- 电机驱动:用DC-DC,因为电流大(几百毫安到几安),效率优先
- MCU和传感器:用LDO,因为电流小(几十微安到几毫安),噪声敏感
这样既保证了电机的高效驱动,又保证了控制电路的干净供电。
3.2 效率曲线:别被标称值骗了
你去看DC-DC的数据手册,都会标一个最高效率,比如95%。但实际用起来,往往达不到。为什么?因为效率是随负载变化的。
我给大家画个典型的效率曲线图(用文字描述):
| 负载电流 | 效率(典型DC-DC) | 说明 |
|---|---|---|
| 1 μA | < 10% | 开关损耗占主导,效率极低 |
| 100 μA | 30% - 50% | 轻载,效率开始爬升 |
| 1 mA | 60% - 75% | 进入有效工作区 |
| 10 mA | 80% - 90% | 典型工作点 |
| 100 mA | 85% - 93% | 接近峰值效率 |
| 1 A | 80% - 90% | 大电流下效率开始下降(IR损耗) |
看到了吗?在微安级负载下,DC-DC的效率可能还不如LDO!
避坑指南:我曾经在一个低功耗项目中,用了一颗标称效率92%的DC-DC给RTC供电。结果实测待机电流比预期大了3倍。查了半天才发现,RTC只消耗2μA,DC-DC在这个负载下效率不到15%,还不如直接用LDO。
所以,选型时一定要看效率曲线,而不是只看标称值!
3.3 待机功耗优化:把每一微安都榨干
剃须刀大部分时间都在待机。待机功耗直接决定了电池的搁置寿命。我见过一些产品,待机电流做到100μA以上,放一个月电池就亏空了。这显然不行。
待机功耗优化的核心思路就三个字:关、降、切。
3.3.1 关——关闭不需要的模块
这是最直接的方法。MCU进入深度睡眠,关闭外设时钟,断开传感器供电。
// 以STM32为例,进入Stop模式
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
// 关闭LDO供电(通过GPIO控制)
HAL_GPIO_WritePin(LDO_EN_GPIO_Port, LDO_EN_Pin, GPIO_PIN_RESET);
但要注意:有些外设的漏电流在关闭后依然存在。我建议用MOS管或负载开关彻底切断供电。
3.3.2 降——降低工作电压和频率
动态电压频率调整(DVFS)是低功耗设计的利器。MCU在待机时,可以降到最低频率运行。
// 降低系统时钟到32kHz
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI;
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
// 切换到LSI作为系统时钟
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_LSI;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
我的习惯:在待机模式下,我会把MCU主频降到32kHz,同时关闭所有不用的外设时钟。这样待机电流可以从mA级降到μA级。你想想看,一个剃须刀每天只用几分钟,剩下23小时55分钟都在待机,这优化空间有多大!
3.3.3 切——切换电源路径
这是最容易被忽视的一点。很多设计在待机时,DC-DC还在工作,白白消耗静态电流。
我建议的做法是:
- 待机时,关闭DC-DC,切换到LDO供电
- 或者使用带旁路模式的DC-DC(Bypass Mode)
- 再或者,直接用一颗超低静态电流的LDO专门给待机电路供电
待机功耗优化清单:
- MCU进入深度睡眠(Stop/Standby模式)
- 关闭所有外设时钟和电源
- DC-DC进入省电模式(PFM)或关闭
- LDO选择低静态电流型号(Iq < 1μA)
- GPIO设置为模拟输入或下拉,避免浮空漏电
- 使用负载开关彻底切断大电流模块
- 检查所有上拉/下拉电阻的功耗
3.4 实战案例:一个剃须刀的电源方案
最后,我给大家分享一个我在项目中用过的电源方案。这个剃须刀用的是单节18650锂电池(3.7V),需要三路电源:
| 负载 | 电压 | 电流 | 推荐方案 | 理由 |
|---|---|---|---|---|
| 电机驱动 | 3.3V | 500mA - 2A | DC-DC降压 | 大电流,效率优先 |
| MCU + 蓝牙 | 1.8V | 10mA(工作)/ 5μA(待机) | LDO | 噪声敏感,待机电流极低 |
| LED指示灯 | 3.3V | 1mA - 5mA | 直接由电池通过限流电阻 | 简单,成本低 |
待机时,MCU控制一个MOS管关闭DC-DC的使能引脚,同时自身进入深度睡眠。整个系统的待机电流可以做到3μA以下。按2000mAh的电池算,理论搁置时间可以达到27年——当然,电池自放电会先撑不住。
最后说一句:电源管理没有银弹。LDO和DC-DC各有优劣,关键看你的负载特性和功耗要求。我的建议是:先算清楚每个模块的功耗预算,再根据电流大小和噪声要求选型。别盲目追求高效率,也别一味追求低噪声。平衡,才是低功耗设计的精髓。
下一章,咱们聊聊电池选型和充电管理。到时候我会分享一个关于电池保护板的踩坑经历,保证让你少走弯路。