第3章:电源需求分析

好,咱们进入正题。做低功耗设计,第一步不是画原理图,也不是选芯片。而是算账——算清楚每个器件到底要吃多少电。我见过太多人,一上来就选了个低功耗MCU,结果传感器功耗是MCU的100倍,整个系统白忙活。所以,咱们得把每个模块的功耗特性摸透。

3.1 传感器功耗特性

传感器是系统的“眼睛”,但也是耗电大户。不同传感器,功耗差异巨大。我个人习惯,先看数据手册里的“工作电流”和“休眠电流”这两栏。

典型传感器功耗对比

传感器类型 工作电流 休眠电流 启动时间
pH电极(模拟输出) 1~5 mA 无休眠 立即
溶解氧传感器(光学) 15~30 mA 1~5 μA 1~3秒
浊度传感器(红外) 20~40 mA 0.1 μA 0.5秒
温度传感器(DS18B20) 1.5 mA 0.75 μA 750ms

这里有个坑,我踩过。有些传感器标称“工作电流10mA”,但那是稳定后的值。启动瞬间,电流可能冲到50mA甚至100mA。你想想看,如果系统里三个传感器同时启动,瞬间电流能把电源电压拉垮。所以,我建议给每个传感器加独立的MOSFET开关,分时启动。

避坑指南: 我曾经在一个项目中,用了某款光学溶解氧传感器。数据手册写“平均电流2mA”,我信了。结果实测发现,它内部有个加热元件,每30秒加热一次,峰值电流高达120mA。如果不做峰值电流管理,电池电压直接掉到MCU复位阈值以下。

3.2 微控制器功耗特性

MCU是系统的大脑。现在的低功耗MCU,比如STM32L系列、MSP430系列,休眠电流能做到微安级。但要注意,MCU的功耗不是固定的,它取决于三个因素:时钟频率、工作模式、外设开启数量。

MCU功耗与时钟频率的关系

// 以STM32L073为例,实测数据
// 运行模式,所有外设关闭
// 频率: 32 MHz -> 电流: 8.5 mA
// 频率: 16 MHz -> 电流: 4.2 mA
// 频率: 1 MHz  -> 电流: 0.8 mA
// 频率: 32 kHz -> 电流: 0.15 mA

看到了吧?频率降低一半,电流几乎也降一半。但有个细节——不是所有任务都能跑低频。比如无线模块发送数据时,MCU需要高速处理。我的做法是:平时用低频(32kHz或1MHz)跑主循环,需要发送数据时,临时切换到16MHz或32MHz,发完立刻降回来。

MCU的几种低功耗模式

  • 睡眠模式(Sleep):CPU停止,外设继续工作。电流约1~5mA。适合短时间等待。
  • 停止模式(Stop):CPU和外设都停止,RAM保持。电流约1~10μA。唤醒时间几微秒。
  • 待机模式(Standby):几乎全部关闭,只有RTC和唤醒引脚工作。电流约0.1~1μA。唤醒时间几毫秒。

嗯,这里要注意。待机模式虽然省电,但唤醒后相当于复位,所有变量都得重新初始化。我一般只在系统长时间不工作时才用待机模式。日常采集周期(比如每10分钟采一次),用停止模式就够了。

3.3 无线模块功耗特性

无线模块是整个系统的“电老虎”。不管是LoRa、NB-IoT还是蓝牙,发送瞬间的电流都很大。但好消息是,发送时间极短。

常见无线模块功耗对比

模块类型 发送电流 接收电流 休眠电流 发送时间
LoRa(SX1278) 120 mA @20dBm 12 mA 1 μA 0.5~2秒
NB-IoT(BC95) 200~300 mA 20 mA 3 μA 1~5秒
蓝牙BLE(nRF52832) 5~15 mA 5 mA 0.3 μA 1~10ms

你可能会问:LoRa发送电流120mA,比NB-IoT的300mA小多了,是不是LoRa更省电?不一定。因为LoRa发送时间长,NB-IoT虽然电流大,但发送时间短。实际功耗要看“平均电流”。

关键公式: 平均电流 = (工作电流 × 工作时间 + 休眠电流 × 休眠时间) / 总时间

举个例子:LoRa每10分钟发一次,每次1秒,120mA。休眠1μA。平均电流 = (120mA × 1s + 0.001mA × 599s) / 600s ≈ 0.2mA。看起来不高,但别忘了,这还没算传感器和MCU的功耗。

3.4 总功耗估算

好了,现在我们把所有模块的功耗加起来。我习惯用Excel做个表格,把每个模块的工作时间、工作电流、休眠时间、休眠电流都列出来。

一个典型水质监测系统的功耗估算

模块 工作电流 工作时间 休眠电流 休眠时间 平均电流
MCU(STM32L0) 4.2 mA 2秒 5 μA 598秒 0.019 mA
pH传感器 3 mA 1秒 0 μA 599秒 0.005 mA
溶解氧传感器 25 mA 3秒 2 μA 597秒 0.127 mA
LoRa模块 120 mA 1秒 1 μA 599秒 0.201 mA
总计 0.352 mA

平均电流0.352mA,看起来不大。但别忘了,这是理想情况。实际中还要考虑电源转换效率(一般80%~90%)、电池自放电、温度影响等。我一般会留50%的余量。

我的经验: 用两节AA电池(总容量约3000mAh)供电,理论续航 = 3000mAh / 0.352mA ≈ 8522小时 ≈ 355天。但实际能跑200天就不错了。为什么?因为电池在低温下容量会下降,而且电池本身有内阻,大电流放电时电压会掉。所以,我建议按理论值的60%来估算实际续航。

最后说一句,功耗估算不是一次性的工作。随着设计深入,你会发现有些模块的功耗比预想的高,有些比预想的低。我的习惯是:先粗算,再细算,最后实测验证。只有这样,才能做出真正低功耗的产品。

好,这一章就到这里。下一章咱们聊聊电源拓扑选择——怎么把电池的电压转换成各个模块需要的电压,同时保证效率。