怎样估算并改善低功耗 IoT 设备的续航:电流预算表、一个算例、休眠状态里隐藏的漏电来源、缩短射频和 GPS 的工作时间,以及怎样正确测量突发电流。
数据手册里一行"深度休眠 2 µA",几乎说明不了产品能用多久。真正重要的是整个周期里的平均电流:一长段极小的电流,加上一小段比它大几千倍的突发电流。老老实实把它们加起来,突发部分通常是主角。有些团队花几周时间从休眠状态里抠出一微安,却让射频多开了一秒,这是在优化错误的一端。
解决办法是做电流预算:在硬件定型之前写一张表,列出设备经历的每个状态、电流多大、持续多久。这只需要一个下午,却能平息大部分争论。
按顺序列出一个周期里的每个状态:深度休眠、唤醒与启动、传感器上电与读取、射频启动与连接、发送、等待应答、后处理、回到休眠。每一项写上电流和时间,算出每个周期的电荷量(电流乘时间),再把各项加起来。
下面是一个示意性的例子,数字是编的,但合情合理。设备每分钟上报一次。休眠电流 5 µA,每次唤醒 100 ms,平均 20 mA,用来读传感器、连网并发送一条短消息。
1000 mAh 的电池在不做降额的情况下能用约 26000 小时,接近三年。降额很重要:低温和大脉冲电流会让可用容量下降,电池会自放电,设备会在截止电压而不是零电压时就停止工作。先按标称容量的 60% 到 70% 来规划是合理的,这里大约是两年。
有用的启示在于占比。这个例子里,休眠只占电荷量的 13% 左右。把工作时间减半,平均电流几乎减半;把休眠电流减半,只省不到 7%。预算会告诉你该把功夫花在哪里。
当休眠电流比单片机数据手册里的数字高时,几乎都是板上其他东西的问题。按顺序检查:
既然突发部分占主导,大的收益就在这里。
靠事件或定时器唤醒,绝不用轮询。精确的 32 kHz 晶振用一点电流换来准确的定时;内部振荡器更便宜但会漂移,唤醒时间表里的漂移,就会变成错过的网络时间窗。看门狗和实时时钟要用它们允许的最低功耗时钟,并确认看门狗在休眠期间的行为,因为有些配置会让它停止,有些不会。
然后把实测值填回预算里,再跑几天真实运行,对比预测。一份从不与实测对账的预算,不过是表格包着的一个猜测。
电池有内阻,几十毫安的脉冲会让它的电压下陷,有时大到足以让设备复位。特别是小型一次性电池,脉冲能力有限,可能需要在负载附近加大电容,或者换一种电池体系。要看突发期间设备处的电压,而不是静态时的。
我们的 Apollo2 低功耗 IoT 终端就遵循这种模式:单片机绝大部分时间处于深度休眠,由实时时钟唤醒,GPRS 和 GPS 只在需要上报时才上电。如果你在设计电池供电的产品,希望预算、硬件和固件三者保持一致,请看我们的 IoT 产品开发服务,以及低功耗无线硬件设计指南。
联系我们获取定制化解决方案和报价