2. 硬件选型与功耗分析:MCU选型、传感器功耗对比、PMIC选择
做嵌入式能耗监测系统,硬件选型这一步,说白了就是「既要马儿跑,又要马儿少吃草」。我这些年经手过不少项目,从工业表计到便携式设备,踩过的坑不少。今天咱们就掰开揉碎了聊聊,MCU、传感器和电源管理芯片到底该怎么挑。
2.1 MCU选型:STM32L系列 vs ESP32
选MCU,我个人的习惯是先看「最低功耗能压到多少」,再看「唤醒后能不能快速干活」。这两款芯片我都用过,各有各的脾气。
STM32L系列:低功耗的「老黄牛」
STM32L系列,尤其是L0和L4,是我做电池供电设备时的首选。为什么?因为它有多个功耗模式,而且切换起来特别细腻。
核心优势:
- Stop模式:典型电流低至 0.4 µA(RTC开启时约 1.4 µA)。我在做一款水表时,就靠这个模式让两节AA电池撑了两年。
- Standby模式:最低能到 0.03 µA,但唤醒时间稍长,约 50 µs。
- Run模式:在 48MHz 下,功耗约 100 µA/MHz,算下来 4.8 mA 左右。
我记得有一次,客户要求设备在无外部供电时,靠一颗纽扣电池维持RTC和少量数据存储。我选了STM32L051,Stop模式下跑RTC,电流才 1.2 µA。嗯,这里要注意,RTC的功耗其实跟外部晶振的负载电容关系很大,选 6pF 的晶振比 12.5pF 的能省 0.5 µA 左右。
ESP32:Wi-Fi 加持的「双刃剑」
ESP32 的优势是集成 Wi-Fi 和蓝牙,但代价就是功耗偏高。你想想看,它跑起来动辄几十毫安,待机也得 5 µA 左右(深度睡眠)。
避坑指南:我曾经在一个需要定期上报数据的项目中用了ESP32,结果发现它在深度睡眠时,如果GPIO没有正确配置上下拉,漏电流能跑到 20 µA。后来我加了一颗负载开关,彻底切断外设电源,才把整机待机功耗压到 10 µA 以下。
ESP32 的功耗模式对比:
| 模式 | 典型电流 | 唤醒时间 | 适用场景 |
|---|---|---|---|
| Active (Wi-Fi TX) | ~160 mA | - | 数据上报 |
| Modem-sleep | ~5 mA | ~2 ms | 保持连接 |
| Deep-sleep | ~5 µA | ~5 ms | 定时唤醒 |
我的建议:如果项目需要 Wi-Fi 且对功耗不敏感(比如插电设备),选 ESP32 没错。但如果是电池供电、且上报频率很低(比如一天一次),我建议用 STM32L 搭配一颗低功耗 Wi-Fi 模块(比如 ESP-01S 的 AT 模式),平时让 STM32L 睡觉,需要时才唤醒模块。
2.2 传感器功耗对比:电流/电压检测芯片
传感器是能耗监测系统的「眼睛」,但眼睛不能太耗电。我常用的几款芯片,咱们对比一下。
电流检测芯片:INA219 vs MAX4080
INA219:这是一颗 I2C 接口的电流/电压检测芯片,精度高,但功耗也高。典型工作电流 1 mA,关断模式下 0.1 µA。
小技巧:我在项目中通常不会让 INA219 一直工作。用 STM32L 的 GPIO 控制它的 VIN 引脚,只在需要采样时才供电。这样平均功耗能降低 90% 以上。
MAX4080:这是一颗模拟输出的电流检测放大器,功耗极低,典型工作电流只有 60 µA。但它没有数字接口,需要 MCU 的 ADC 去读。
| 芯片 | 工作电流 | 接口 | 精度 | 我的选择 |
|---|---|---|---|---|
| INA219 | 1 mA | I2C | ±0.5% | 需要高精度、数字接口时 |
| MAX4080 | 60 µA | 模拟 | ±1% | 超低功耗、成本敏感时 |
| ACS712 | 10 mA | 模拟 | ±1.5% | 隔离需求、大电流时 |
为什么会这样?INA219 内部集成了 ADC 和 I2C 接口,这些数字电路是耗电大户。而 MAX4080 纯粹是模拟放大器,功耗自然低。我个人的习惯是:如果 MCU 的 ADC 有空闲通道,优先用 MAX4080,省电又省钱。
电压检测芯片:分压电阻 vs 专用芯片
很多新手喜欢直接用电阻分压测电压,觉得简单。但电阻分压有个问题:它一直在耗电。比如用 100kΩ + 100kΩ 分压测 3.3V,电流就是 3.3V / 200kΩ = 16.5 µA。虽然不大,但 24 小时开着,一年下来就是 144 mAh 的电池容量。
我的做法:用一颗 P 沟道 MOSFET 控制分压电阻的供电。平时 MOSFET 关断,分压电路不耗电。需要测电压时,MCU 输出低电平打开 MOSFET,采样完再关掉。这样平均功耗可以忽略不计。
如果预算允许,也可以用专用的电压检测芯片,比如 TPS3840,它的静态电流只有 0.5 µA,而且内部有比较器,可以直接输出中断信号给 MCU。
2.3 电源管理芯片(PMIC)选择
PMIC 是整个系统的「心脏」。选得好,电池寿命翻倍;选得不好,MCU 再省电也白搭。
LDO vs DCDC:效率与噪声的博弈
LDO(低压差线性稳压器):优点是噪声低、电路简单、成本低。缺点是效率低,尤其是压差大的时候。比如从 3.7V 锂电池降到 3.3V,效率只有 89%,剩下的 11% 全变成热量了。
DCDC(开关电源):效率高,通常能做到 90% 以上,甚至 95%。但噪声大,外围电路复杂(需要电感、电容)。
避坑指南:我曾经在一个传感器采集项目中用了 DCDC,结果发现开关噪声耦合到了 ADC 的参考电压上,导致采样值跳来跳去。后来我在 DCDC 输出端加了一颗 10µH 的电感和 10µF 的电容做 π 型滤波,才把噪声压下去。嗯,这里要注意,DCDC 的布局布线也很关键,电感要远离敏感信号线。
我的选择策略:
- 给 MCU 供电:用 DCDC,因为 MCU 对电源噪声不敏感,效率优先。
- 给传感器/ADC 供电:用 LDO,因为模拟电路对噪声敏感,而且电流小,LDO 的功耗可以接受。
典型 PMIC 推荐
| 型号 | 类型 | 输入电压 | 输出电流 | 静态电流 | 适用场景 |
|---|---|---|---|---|---|
| TPS62840 | DCDC | 2.4V - 5.5V | 750 mA | 0.6 µA | MCU 主供电 |
| TPS7A02 | LDO | 1.5V - 5.5V | 200 mA | 0.025 µA | 传感器供电 |
| MAX17260 | 电量计 | 2.3V - 4.9V | - | 0.4 µA | 电池电量监测 |
你想想看,TPS62840 的静态电流只有 0.6 µA,比很多 MCU 的待机电流还低。我最近一个项目就用它给 STM32L0 供电,整机待机电流做到了 3 µA 以下。
小技巧:选 PMIC 时,别忘了看它的「轻载效率」。有些 DCDC 在负载低于 1 mA 时效率会暴跌到 50% 以下。我一般会选那些有「省电模式」或「脉冲频率调制(PFM)」功能的芯片,它们在轻载时能自动降低开关频率,保持高效率。
2.4 总结:我的选型清单
说了这么多,我列一个我自己常用的选型清单,供你参考:
- MCU:STM32L051(超低待机)或 STM32L431(性能与功耗平衡)
- 电流检测:MAX4080(低功耗)或 INA219(高精度,需控制供电)
- 电压检测:电阻分压 + MOSFET 控制,或 TPS3840 专用芯片
- PMIC:TPS62840(DCDC 给 MCU)+ TPS7A02(LDO 给传感器)
- 电池:ER18505 锂亚电池(容量 4000 mAh,自放电率低)
记住,硬件选型没有「最好」,只有「最合适」。关键是要搞清楚你的系统到底在什么场景下工作,哪些模块可以关掉,哪些必须一直开着。把这些想明白了,选型就成功了一大半。