第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开关,分时启动。
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%来估算实际续航。
最后说一句,功耗估算不是一次性的工作。随着设计深入,你会发现有些模块的功耗比预想的高,有些比预想的低。我的习惯是:先粗算,再细算,最后实测验证。只有这样,才能做出真正低功耗的产品。
好,这一章就到这里。下一章咱们聊聊电源拓扑选择——怎么把电池的电压转换成各个模块需要的电压,同时保证效率。