IOT低功耗设备设计大致为3个方面的设计:器件选型、电路设计、软件设计、续航寿命估算——
器件选型
典型的器件包括:单片机MCU、电源芯片、通讯模组等。
单片机——
1.选择具备多种低功耗工作模式的MCU,如国民技术N32G4FR系列MCU支持5种低功耗模式(Sleep,Stop0,Stop2,Standby,VBat),开启带有RTC唤醒的Stop模式可让功耗尽可能低;
2.支持宽范围供电,如1.8-3.3V,在不需要大电流供电的模式下,使用1.8V供电可以让MCU处于更低功耗的状态;
3.不使用的IO配置为模拟输入,模拟输入模式下漏电流最低;
关于MCU的超低功耗设计,参考该篇文字《STM32芯片超低功耗设计思路》
电源芯片——
1.选择更高效率的电源IC,开关电源DC-DC的效率高于LDO,特别在高压差、大电流的情况下,DC-DC具备更高的能效优势,对于常供电的IC,关注静态电流值,对于带EN管脚的IC,关注Shutdown电流值;
2.LDO的成本比DC-DC低,且在低压差、低电流的情况下,具备低功耗特性的LDO也可做考虑,如圣邦微的SGM2034,静态漏电流为1uA;
关于LDO与DC-DC的效能优势对比,参考该篇文字《LDO与DC-DC 的入门理解》
通讯模组——
1.通讯模组中的MCU部分可参考单片机的的低功耗设计,本质上具备一致性;
2.2.4G的通讯模组,ZigBee低功耗具备更大优势,BLE蓝牙Mesh这两年间也开始逼近ZigBee,WiFi则比较大,同等条件下,ZigBee的发射电流可以做到50mA以内,而WiFi的发射电流一般要大于300mA,加上心跳包对接时间的差异,具备快联特性的WiFi可能需要10ms,而ZigBee可能只需要3-5ms。
3.通讯模组OTA的功耗 > 搜网功耗 > 静态功耗。另外,网关信号正常与异常,也会导致通讯模组在搜网时的功耗有所不同。
电路设计
1. 对于耗电比较大的器件,使用独立IC供电,并尽可能做到可独立关断供电回路,在非常供电的状态下切断供电回路;
2. 对于上下拉电阻,在确保信号抗干扰度良好的前提下,尽可能使用高阻值;如对于1K的上拉电阻,当电流回路对地时,产生3300uA的电流,而对于100K的上拉电阻,则为33uA。当然,对于外界的工频干扰等,同样的条件下,10K的上拉电阻具备更高的抗干扰度;
3.电池电量检测采用分压电阻时可使用1M左右的阻值,由于涉及单片机ADC阻抗匹配的不同(关于ADC阻抗匹配,可参考《单片机读取外部电压ADC阻抗匹配问题》),建议在信号的采集中间加上一级电压跟随器,该跟随器需要低功耗或者需要单独供电,避免无谓的电量损耗;
4.对于有光显示的场景,如LED指示等,尽可能降低LED亮度。
软件设计
软件设计更多地体现在如何驱动硬件进入低功耗模式,如:开启单片机RTC唤醒的Stop模式;控制电源的EN管脚进入非常供电模式;GPIO的模拟输入模式;通讯模组在发送完成数据之后,立即关闭UDP连接,尽可能降低大电流模式持续时间
续航寿命估算
1.对于静态电流,可使用万用表进行测量(如Fluke的17B+),由于万用表的采样率较低,且所呈现的数值为测量有效值,因此对于动态电流,如设备的间隔性心跳包电流,则需要使用采样率更高的仪器进行测量,如Keysight的N6705C;(关于低功耗测量仪器,可参考《浅谈4款低功耗电流测试“神器”》)
2.严谨的功耗计算中,需考虑电池的自放电率,即电池即使在不使用的条件下,自身的电化学物质也会产生一定的反应自我消耗,特别是可充电的镍镉电池;
3.简单举一个低功耗设备续航时间计算的例子:
假设电池容量250mAh,10分钟发送一次心跳包对接网络,每次5秒30mA瞬时电流,待机20uA电流,可做如下推算:
单次对接网络耗电:30mA x 5s = 150mAs = 41.66uAh;
一天对接网络次数:(24h x 60)÷10 = 144次;
一天对接网络总时间:5s x 144 = 720s;
一天待机总时间:(24h x 3600)s - 720s = 85680s = 23.8h;
一天总功耗:(23.8h x 20uA) + (144 x 41.66uAh) = 6475.04uAh = 6.48mAh;
可使用天数:250mAh ÷ 6.48mAh ≈ 39天