4、电源域划分:独立电源域设计、负载开关应用、分区供电与唤醒机制

电源域划分这件事,说白了就是「把不该通电的模块关掉」。我刚开始做售货机项目时,总觉得整机供电最省事,结果电池撑不过三天。后来才明白,一个系统里真正需要一直工作的,可能只有RTC和唤醒检测电路。

你想想看,售货机大部分时间都在待机。用户投币或者扫码之前,主控、屏幕、电机驱动这些模块根本没必要通电。所以电源域划分的核心思路就是:把系统拆成几个独立的供电区域,按需供电

4.1 独立电源域设计

我习惯把售货机的电源域分成三类:

  • 常电域(Always-on Domain):RTC、唤醒检测电路、部分GPIO。这部分功耗必须控制在微安级。
  • 待机域(Standby Domain):主控MCU的低功耗模式、通信模块的休眠状态。功耗在毫安级。
  • 工作域(Active Domain):屏幕、电机、支付模块、4G模块。功耗可能到安培级。

我在一个项目中遇到过这样的坑:把WiFi模块和RTC放在同一个电源域里。结果WiFi模块工作时,RTC的供电纹波太大,导致时钟跑偏。后来我强制要求:常电域必须独立LDO供电,纹波控制在10mV以内。

关键设计原则:

  • 常电域与工作域之间必须加隔离(负载开关或二极管)
  • 每个电源域的地要单独走线,最后单点接地
  • 域间信号必须加电平转换或限流电阻

4.2 负载开关应用

负载开关这东西,看着简单,用起来门道不少。说白了就是一个MOS管加一个控制逻辑。但我见过太多人把它当普通开关用,结果翻车了。

举个例子,我曾经帮一个团队排查问题:他们的售货机屏幕在唤醒时偶尔闪一下。查了半天,发现是负载开关的启动电流不够。屏幕的电容负载太大,开关一开,电压瞬间被拉低,MCU也跟着复位了。

选型时我建议关注三个参数:

参数 说明 我的经验值
导通电阻(Rds(on)) 越小越好,但要注意成本 小于50mΩ
启动电流限制 必须大于负载的浪涌电流 2倍额定电流
关断漏电流 常电域必须极低 小于1μA

我的小技巧:在负载开关的输出端加一个100μF的电解电容,可以有效抑制启动时的电压跌落。但注意电容的漏电流不能太大,否则待机功耗会超标。

4.3 分区供电与唤醒机制

分区供电,说白了就是「谁干活谁通电」。我设计过一个方案,把售货机分成四个供电区:

  • 区A(常电):RTC + 唤醒检测
  • 区B(待机):MCU + 传感器
  • 区C(工作):屏幕 + 支付模块
  • 区D(大功率):电机 + 制冷

唤醒机制我一般用两种方式:

  1. 硬件唤醒:通过外部中断(比如投币检测、人体红外)直接唤醒MCU。这种方式延迟最低,我习惯用下降沿触发。
  2. 定时唤醒:RTC定时唤醒MCU,用于巡检、上报心跳等。我一般设成30秒一次,功耗和实时性平衡得比较好。

这里有个坑:我曾经把唤醒检测电路和MCU放在同一个电源域里。结果MCU休眠时,唤醒电路也跟着断电了。嗯,这显然不行。所以唤醒检测电路必须放在常电域,而且它的输出要能直接唤醒MCU。

注意:唤醒信号必须做去抖处理。我遇到过因为按键抖动导致系统反复唤醒,电池一天就耗光了。硬件上加一个RC滤波,软件上再做个10ms的去抖,基本能解决。

最后说一个我自己的习惯:每个电源域都留一个测试点。调试时用万用表测一下电压,就能快速判断哪个域没正常工作。这个习惯帮我省了不少排查时间。

好了,电源域划分这块,核心就是「该断则断,该通则通」。下一章我们聊聊具体的功耗测量方法,到时候拿实际数据说话。