电流估算与功耗预算:电池能撑多久
我第一次做带电池的项目,是个温湿度计。挂在阳台,ESP32 加个传感器,接了一节 2000mAh 的锂电。想着这么点东西,怎么也能撑一个月吧。结果第二天早上一看,黑屏了。
不是接错线,也不是电池坏了。是我从头到尾没算过一笔账:这东西到底每小时吃多少电。ESP32 一直开着 WiFi,平均电流 100 多 mA,2000mAh 的电池十几个小时就榨干了。
电池项目跟插电项目最大的区别,就是你必须提前把这笔账算清楚。算法不难,三步就够。
三步估功耗
先把设备里每个吃电的部件列出来,查它工作时的电流。两个来源:
- 查 datasheet:芯片手册里都有 "supply current" 或 "operating current" 这一项,单位是 mA 或 μA。
- 实测:手册值往往是理想条件,实际接上外设会偏大,能测就测(后面讲怎么测)。
给几个常见值打底:
- ESP32 正常工作:约 80~160mA
- WiFi 发射的瞬间峰值:能冲到 200~300mA,比平时高一截
- 一般 I2C 传感器(温湿度、气压那类):几 mA
- ESP32 深度睡眠:只有约 10μA,也就是 0.01mA
注意最后这个数。睡眠电流比工作电流小了一万倍,这就是续航的胜负手。
算平均电流(占空比是关键)
很多人列完电流就直接拿工作电流去算续航,得出"撑不了一天"的结论,然后放弃。错就错在:电池设备大部分时间是在睡觉的,不是一直满负荷跑。
真正要算的是平均电流:
平均电流 = 工作电流 × 工作时间占比 + 睡眠电流 × 睡眠时间占比
那个"时间占比"就是占空比。举个具体的:温湿度计每 5 分钟醒来一次,测一下、发个数据,5 秒钟干完,然后接着睡。
- 一个周期 = 300 秒,其中工作 5 秒、睡眠 295 秒
- 工作占比 = 5 / 300 ≈ 1.7%,睡眠占比 ≈ 98.3%
- 工作电流按 120mA,睡眠按 0.01mA
平均电流 = 120 × 1.7% + 0.01 × 98.3%
≈ 2.04 + 0.01
≈ 2.05mA
从 120mA 干到 2mA,靠的不是换电池,是让它多睡觉。
算续航(公式 + 算例)
平均电流有了,续航就一步:
续航(小时) = 电池容量(mAh) ÷ 平均电流(mA)
接着上面的例子,2000mAh 电池配 2.05mA 平均电流:
2000 ÷ 2.05 ≈ 976 小时 ≈ 40 天
再看个更极端的:如果占空比压得更狠,平均电流做到 1mA:
2000 ÷ 1 = 2000 小时 ≈ 83 天
同一节电池,从一天没电到撑快三个月,差别全在平均电流。
峰值和平均是两笔账,别混
上面算续航一直用平均电流,这是对的——续航看的就是长时间平均下来吃多少。但功耗预算不止续航这一笔,还有一笔容易漏:给设备供电的电源、稳压芯片,得按峰值电流选,不是平均。
道理很直白。你那 2mA 的平均电流,是把 120mA 的工作瞬间和几乎为零的睡眠时间摊平算出来的。可 WiFi 一发射,瞬间峰值能冲到 200~300mA,这个电流是真实要流过 LDO 的。要是你按平均 2mA 去选个只能扛 100mA 的 LDO,峰值一来就带不动——轻则电压被拉垮、芯片复位重启,重则联网时反复掉线你还查不出原因。
所以做功耗预算,两笔账分开记:
- 续航账,用平均电流算,决定电池选多大、能撑几天。
- 供电账,用峰值电流算,决定 LDO/DC-DC 的输出能力要留多少余量。稳压芯片额定电流至少留峰值的 1.5 倍余量,别卡着峰值选。
把每个模块的峰值列一遍,同时可能一起吃电的加起来(比如 WiFi 发射叠加传感器采样),就是你电源要扛的峰值。稳压怎么按这个数选,看 稳压电路怎么选。
电池容量与打折
容量单位是 mAh(毫安时),意思是"能以 1mA 放电多少小时"。2000mAh 理论上就是 1mA 放 2000 小时。
但理论归理论,标称容量你拿不满。实际要打个折:
- 放电效率、电压随电量下降、低温环境——都在偷电
- 工程上习惯乘 0.7~0.8 再算
所以上面那个 40 天,落到实处大概是 28~32 天。算续航时养成习惯:估出来的数先打八折,再跟目标比。
怎么把续航做长
如果一算发现撑不到目标,往这几个方向砍平均电流:
- 深度睡眠:杀手锏。能睡就睡,唤醒间隔拉长,工作占比越低越好(看 深度睡眠实操)
- 少连 WiFi:联网是大电老虎,连接握手那几秒峰值最高。攒几次数据一起发,比每次都发省得多
- 降频:用不到满血主频就降下来,CPU 跑得慢一点电流也小一点
- 关掉不用的外设:传感器、屏幕、LED,不用的时候断电,别让它们空耗
这几招哪个最狠、怎么配着用,降功耗的门道 里讲得更细。
别漏了"看不见的常耗"
算平均电流时,新手常只盯着 MCU 和传感器,漏掉一批一直在偷电的"隐形负载":
- 稳压芯片的静态电流(Iq):LDO/DC-DC 自己就要耗一点电,普通 LDO 的 Iq 几十 µA 到几百 µA,深睡时它可能比你的 MCU 还费电。做低功耗设备要专挑低 Iq 的稳压芯片。
- 分压电阻、上拉电阻:测电池电压的分压支路、各种上拉,只要挂在电源上就一直漏电(见 分压电路 里那笔漏电账),睡眠时也不停。
- 电源指示灯:一颗常亮 LED 轻松吃掉几 mA,比你辛苦优化出来的睡眠电流大几百倍——电池设备要么去掉,要么用 MCU 控制它按需亮。
这些常耗在工作时被大电流盖住、看不出来,一进深睡就成了续航的主要杀手。优化睡眠电流时,先把这些隐形负载一个个揪出来。
怎么选电池
反过来用公式,按目标续航倒推容量:
需要的容量(mAh) = 平均电流(mA) × 目标续航(小时) ÷ 0.75
想让平均 2mA 的设备撑 60 天(1440 小时):
2 × 1440 ÷ 0.75 ≈ 3840mAh
那就选 4000mAh 往上的电池。容量、放电倍率、循环寿命这些具体怎么权衡,电池选型与续航 里有更细的取舍。选锂电还要顾安全,充放保护、过流过放这些别省,具体看 锂电池安全。设备要能反复充,充电管理芯片怎么配,看 充电电路原理。供电怎么稳压到芯片要的电压,看 稳压电路;电流电压基础概念可回看 电压与电流。
实测最准
估算给你方向,但最终拍板要靠实测——手册值和你的实际板子总有出入。
- USB 电流表:串在 USB 供电线上,工作时的整体电流一眼能看到,最省事
- 万用表:拨到电流挡,串进供电回路。注意睡眠电流只有 μA 级,普通万用表量不准,得用支持小电流量程的
测的时候分两段看:工作时跑多大、睡眠时降到多少。把这两个真实值代回上面的公式,算出来的续航才靠谱。
续航靠的是降低平均电流,深度睡眠是杀手锏。工作电流再大都没关系,只要它绝大部分时间在睡,平均下来就微乎其微——把"多睡觉"这件事做到位,比纠结换多大电池有用得多。
把这套流程跑一遍,再做电池项目就不会半夜黑屏了。回 硬件基础原理 看更多电源相关内容。