第3章 电源树设计与功耗估算
电源树设计,说白了就是给板子规划一条能量高速公路。从电池到每个芯片,中间经过哪些转换、降压、滤波,每一步都决定着你这块板子能撑多久。我见过不少项目,功能调通了,一测功耗直接傻眼——电池寿命只有设计目标的十分之一。嗯,问题基本都出在电源树上。
3.1 系统电源架构
先看一个典型的STM32L4电池供电系统长什么样。我习惯把电源树分成三级:
- 一级:电池输入 —— 锂电池3.7V、干电池3V、纽扣电池3V
- 二级:主电源转换 —— LDO或DCDC,输出3.3V/1.8V
- 三级:负载点供电 —— MCU内核、外设、传感器、无线模块
下面这张图是我常用的电源树结构,你可以参考:
我的习惯:画电源树时,我会把每个节点的电压、最大电流、静态功耗都标在旁边。这样一眼就能看出瓶颈在哪。
3.2 LDO vs DCDC 怎么选
这个问题几乎每个学员都会问。我的回答很简单:看你的电流需求和噪声容忍度。
| 对比项 | LDO | DCDC |
|---|---|---|
| 效率 | 低(压差越大越低) | 高(85-95%) |
| 输出纹波 | 极低(< 50μV) | 较高(10-50mV) |
| 静态电流 | 可低至1μA | 通常10-100μA |
| 外围器件 | 只需输入输出电容 | 需要电感、二极管、反馈电阻 |
| PCB面积 | 小 | 大 |
| 成本 | 低 | 高 |
我个人的选型原则是这样的:
- 传感器供电 → LDO。ADC采样精度要求高,纹波必须压住。
- MCU核心供电 → DCDC。STM32L4跑起来几十mA,DCDC能省不少电。
- 待机供电 → LDO。待机时电流只有几μA,DCDC的静态电流反而成了负担。
我曾经踩过的坑:在一个温湿度采集器项目里,我图省事全板用了LDO。结果3.7V锂电池降到3.3V,效率只有89%,待机功耗比预期高了30%。后来把MCU供电换成DCDC,电池寿命从8个月延长到了14个月。
3.3 典型功耗模型
要估算电池寿命,先得搞清楚系统在不同状态下的功耗。STM32L4的功耗模型可以分成四个状态:
- 运行模式:CPU全速跑,外设全开。电流约5-15mA。
- 睡眠模式:CPU停,外设保持。电流约500μA-2mA。
- 停止模式:大部分时钟关,保留RAM。电流约1-5μA。
- 待机模式:几乎全关,只有RTC。电流约0.3-1μA。
实际项目中,系统不会一直待在一个状态。我一般用时间加权平均法来估算:
// 功耗估算示例
// 假设一个传感器节点每10分钟采集一次
float I_run = 8.0; // mA,运行模式电流
float I_sleep = 1.2; // mA,睡眠模式电流
float I_stop = 0.003; // mA,停止模式电流
float T_run = 0.05; // 小时,每次采集耗时3秒
float T_sleep = 0.01; // 小时,睡眠等待
float T_stop = 0.106; // 小时,剩余时间
float I_avg = (I_run * T_run + I_sleep * T_sleep + I_stop * T_stop) / (T_run + T_sleep + T_stop);
// 结果约 0.045 mA = 45 μA
关键结论:待机时间占90%以上的系统,平均功耗基本由待机电流决定。所以优化待机电流比优化运行电流更有效。
3.4 电池寿命估算
有了平均功耗,电池寿命就好算了。公式很简单:
电池寿命(小时) = 电池容量(mAh) / 平均电流(mA)
但实际要考虑几个因素:
- 电池自放电:锂电池每月约1-2%,干电池约0.5-1%。
- 温度影响:低温下电池容量会下降,0°C时可能只剩60%。
- 截止电压:电池不能放空,一般留10-20%余量。
我习惯用一个更保守的公式:
// 实际可用容量 = 标称容量 × 温度系数 × 截止系数
float C_nominal = 2000; // mAh,18650锂电池
float K_temp = 0.85; // 假设工作温度0-40°C
float K_cutoff = 0.90; // 留10%余量
float C_actual = C_nominal * K_temp * K_cutoff;
// 结果约 1530 mAh
float I_avg = 0.045; // mA,上一步算出的平均电流
float life_hours = C_actual / I_avg;
float life_days = life_hours / 24;
// 结果约 1416 天 ≈ 3.9 年
我的经验:理论估算值通常比实际偏大20-30%。因为电池老化、温度波动、PCB漏电都会吃掉容量。所以我一般会在估算值上再打八折作为设计目标。
3.5 实战中的电源优化技巧
最后分享几个我在项目中用过的实用技巧:
- 动态电压调节:STM32L4支持在运行时切换内核电压。跑低频时用1.2V,跑高频时用1.8V,能省20-30%功耗。
- 外设电源域管理:不用的外设直接关掉时钟,别只靠软件使能。我见过有人开了SPI时钟没关,白白多耗了200μA。
- LDO选型注意:选静态电流低的LDO,比如TPS7A02,静态只有25nA。普通LDO静态可能到几μA,待机时就成了主要耗电来源。
- DCDC轻载效率:有些DCDC在轻载(<1mA)时效率会掉到50%以下。选型时要看效率曲线,别只看满载数据。
再提醒一句:电源树设计不是一次搞定的。我建议在原理图阶段就搭好功耗模型,每加一个器件就更新一次估算。等板子回来再测,发现不对就晚了。