3、电源树设计:多级电源架构
电源树设计,说白了就是给BMS规划一条「能量高速公路」。
我刚开始做BMS时,觉得电源嘛,找个LDO一接就完事了。结果项目做到一半,发现待机电流超标,唤醒时间太长,DCDC还和MCU抢电。嗯,从那以后,我再也不敢小看电源树了。
3.1 多级电源架构:常电域、唤醒域、休眠域
一个成熟的BMS,电源域至少要分三级。我个人习惯这样划分:
- 常电域(Always-on Domain):直接接电池正极,永远带电。负责监控电池是否过放、是否被插拔。电流要控制在微安级。
- 唤醒域(Wake-up Domain):平时断电,只有检测到特定事件(比如充电器插入、按键按下)才上电。负责启动主控。
- 休眠域(Sleep Domain):主控进入深度睡眠时,这部分电源可以完全切断。比如通信模块、显示驱动。
关键原则:常电域越简单越好,器件越少越好。我在项目中遇到过,常电域多放了一个运放,待机电流直接飙到200μA,整晚就把小电池包耗光了。
为什么会这样?因为常电域没有开关控制,每个器件都在持续耗电。你想想看,一个LDO的静态电流是5μA,一个比较器是3μA,一个基准源是2μA,加起来就10μA了。如果电池容量是1000mAh,理论上能撑100000小时,但实际还要考虑自放电、温度影响,所以常电域总电流必须控制在10μA以内。
3.2 LDO vs DCDC效率对比
很多新手会问:LDO和DCDC到底选哪个?
我的回答是:看场景,别迷信。
| 对比项 | LDO | DCDC |
|---|---|---|
| 效率 | 低(压差越大效率越低) | 高(通常80%~95%) |
| 噪声 | 极低(适合模拟电路) | 较高(有开关纹波) |
| 静态电流 | 可做到1μA以下 | 通常几十μA |
| 成本 | 低 | 高(需要电感、电容) |
| 适用场景 | 常电域、唤醒域、模拟供电 | 休眠域、大电流负载 |
举个例子:电池电压4.2V,要给3.3V的MCU供电。
- 用LDO:效率 = 3.3/4.2 ≈ 78.6%,剩下的0.9V变成热量。如果MCU跑50mA,LDO上要耗掉45mW。虽然效率不高,但静态电流可以做到1μA以下,适合常电域。
- 用DCDC:效率能做到90%以上,但静态电流至少20μA。如果MCU大部分时间在休眠,这20μA反而比LDO的1μA更耗电。
我的经验:常电域用LDO,休眠域用DCDC。如果实在要兼顾,可以用DCDC+LDO级联——DCDC先把电压降到3.6V,再用LDO降到3.3V。这样既保证了效率,又降低了噪声。
3.3 电源路径管理
电源路径管理,说白了就是「谁给谁供电,什么时候供,什么时候断」。
我记得有一次做项目,客户要求BMS在休眠时,MCU还能通过CAN总线唤醒。这就涉及到一个问题:CAN收发器需要常电,但MCU不需要。怎么办?
我的方案是这样的:
// 电源路径管理伪代码
if (系统处于休眠状态) {
切断DCDC使能引脚; // 休眠域断电
CAN收发器保持常电; // 唤醒域待命
MCU进入深度睡眠; // 功耗降至μA级
}
if (检测到CAN总线活动) {
CAN收发器输出唤醒信号;
MCU从深度睡眠中唤醒;
MCU使能DCDC; // 休眠域上电
MCU初始化外设;
}
这里有个坑:CAN收发器的唤醒信号,必须能直接唤醒MCU,不能经过任何需要供电的逻辑门。我曾经犯过这个错——在唤醒路径上加了一个与门,结果与门本身没电,信号过不去。嗯,后来改成了开漏输出直接拉MCU的唤醒引脚。
避坑指南:电源路径管理最怕「死锁」。比如:MCU需要DCDC供电才能启动,但DCDC的使能引脚又受MCU控制。这就成了先有鸡还是先有蛋的问题。解决办法是:加一个硬件上电复位电路,或者用常电域的定时器来触发DCDC使能。
另外,电源路径切换时要注意「倒灌」问题。比如两个电源域共用一个负载,一个域断电了,另一个域的电流可能会倒灌进断电域。我一般会在每个电源输出端加一个肖特基二极管,或者用带体二极管的MOS管做理想二极管。
总结一下:
- 常电域用LDO,电流控制在10μA以内
- 唤醒域用LDO或低压差DCDC,响应时间要快
- 休眠域用DCDC,效率优先
- 电源路径切换要防死锁、防倒灌
下一章,我会讲如何用PMOS和NMOS搭建低成本的电源开关电路。到时候再聊。