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搭建低成本的电源开关电路。到时候再聊。