1. 电源管理基础:网关功耗模型、电池续航计算、低功耗设计原则

各位同学,咱们今天聊聊网关电源管理。说实话,这可能是整个物联网系统里最容易被忽视、却又最容易翻车的地方。我自己做了十几年嵌入式,见过太多产品因为功耗没算好,最后变成「三天一充」的尴尬局面。

嗯,咱们先从最基础的说起。

1.1 网关功耗模型:你得知道电都去哪了

一个典型的物联网网关,功耗主要分三块:

  • 核心处理单元:CPU/MCU,跑协议栈、处理数据
  • 无线通信模块:Wi-Fi、LoRa、NB-IoT、4G/5G
  • 外围器件:传感器、LED、电源转换损耗

我个人习惯把功耗模型拆成两种状态:

状态 典型功耗 占比
活跃模式(Active) 200-500 mW 80%
休眠模式(Sleep) 10-50 μW 20%

你想想看,如果网关一天有23小时在休眠,那休眠功耗反而成了大头。我在项目中遇到过,有人把休眠电流算成0,结果电池容量翻倍都不够用。

关键公式:

日均功耗 = 活跃功耗 × 活跃时长 + 休眠功耗 × 休眠时长

别小看这个公式,很多坑都出在这里。

1.2 电池续航计算:别被理论值骗了

电池续航计算,说白了就是除法。但实际算起来,变量多到你头疼。

举个例子:

电池容量:3000 mAh(3.7V)
网关日均功耗:50 mAh
理论续航:3000 / 50 = 60天

嗯,这里要注意。实际续航往往只有理论值的60%-70%。为什么?

  • 电池自放电:锂电池每月自放电约2-5%
  • 温度影响:低温下容量会缩水,-20°C时可能只剩60%
  • 放电截止电压:很多设备在3.0V就关机了,但电池还有20%余量
  • 脉冲电流:Wi-Fi发射瞬间电流可能达到500mA,电池内阻会压降

我曾经踩过的坑:

有一次做户外网关,按理论算能撑半年。结果冬天一到,续航直接腰斩。后来才发现,低温下电池内阻变大,加上LoRa发射时的脉冲电流,电压瞬间掉到关机阈值以下。从那以后,我每次都会留30%的余量。

所以,靠谱的续航计算公式应该是:

实际续航 = (电池容量 × 0.7) / (日均功耗 × 1.2)

0.7是温度/老化折扣,1.2是系统效率损耗。保守点,总没错。

1.3 低功耗设计原则:从硬件到软件

低功耗设计,不是把某个器件关掉那么简单。它是一个系统工程。我总结了四条原则:

原则一:选型即功耗

芯片选型决定了功耗下限。比如:

  • MCU选Cortex-M0+比M4省电50%以上
  • LoRa比Wi-Fi省电10倍
  • DC-DC比LDO效率高20-30%

我个人习惯,先看数据手册里的「每MHz功耗」和「休眠电流」。这两个数字直接决定了你的天花板。

原则二:能不醒就不醒

网关大部分时间应该处于休眠状态。怎么做到?

  • 用RTC定时唤醒,而不是MCU轮询
  • 外部中断唤醒,比如按键、传感器触发
  • 通信模块的PSM(省电模式)或eDRX

小技巧:

我习惯把唤醒周期设计成「非整数倍」。比如每61秒唤醒一次,而不是60秒。这样可以避免多个设备同时唤醒造成冲突。你想想看,如果100个网关都在整点唤醒,那基站不得炸了?

原则三:干活要快

活跃时间越短越好。比如:

  • 数据采集+发送,控制在100ms内完成
  • 使用DMA传输,减少CPU介入
  • 关闭不用的外设时钟

我记得有个项目,客户要求每5分钟上报一次数据。我们优化后,每次活跃时间从500ms降到了80ms。续航直接翻了6倍。

原则四:动态电压频率调整(DVFS)

别让MCU一直跑在最高频率。根据负载动态调整:

  • 空闲时降频到1MHz
  • 处理数据时升到48MHz
  • 休眠时直接关掉PLL
// 伪代码示例
if (idle) {
    set_clock(1 MHz);
    disable_peripherals();
} else if (data_ready) {
    set_clock(48 MHz);
    enable_radio();
    send_data();
    sleep();
}

嗯,这里要注意。频率切换时会有短暂的不稳定期,我一般会加一个5μs的延迟,等时钟稳定后再操作外设。

1.4 实战中的避坑指南

最后,分享几个我亲身经历过的坑:

  1. GPIO浮空漏电:未使用的GPIO一定要配置成输出或上拉。浮空状态下,CMOS输入会来回翻转,电流能到几百μA。
  2. 电源轨顺序:有些芯片要求先上VDD再上VDDIO,顺序反了会漏电甚至烧芯片。
  3. 电容漏电:陶瓷电容在高频下ESR低,但漏电比电解电容大。我吃过一次亏,100μF的陶瓷电容漏了50μA,直接让休眠电流翻倍。
  4. 调试接口别忘关:SWD/JTAG在调试时没问题,但量产时一定要禁用。否则调试接口会持续耗电。

总结一句话:

低功耗设计,不是把功耗「降下来」,而是把功耗「算清楚」。算清楚了,你才知道哪里能省、哪里不能省。

好了,这一章就到这里。下一章咱们聊聊具体的唤醒策略——怎么让网关在正确的时间醒来,干完活再乖乖睡回去。