4、功耗指标深度解析:PSM、eDRX机制与续航估算

功耗这东西,说白了就是NB-IoT模组的命门。

我刚开始做NB-IoT项目时,客户总问:“你这模块能撑几年?” 我当时拍胸脯说三年没问题。结果实际测试,半年就趴窝了。嗯,从那以后,我再也不敢只看芯片手册上的“理论功耗”了。

今天咱们就把PSM、eDRX这些省电机制彻底聊透。你想想看,搞懂了这些,你才能算出真正的续航时间。

4.1 PSM(省电模式)—— 深度睡眠的艺术

PSM模式,全称Power Saving Mode。说白了就是让模组“假死”。

模组在PSM状态下,几乎不干活。射频关闭,协议栈暂停,只保留一个RTC定时器在跑。这时候的电流,能低到什么程度?

典型PSM电流消耗:

  • 主流模组(如BC95、M5310):2.5μA ~ 5μA
  • 低功耗优化版:1.5μA ~ 3μA
  • 极端优化(关闭所有外设):可低至1μA以下

我有个项目,用BC95模组做智能水表。PSM模式下实测电流3.2μA。当时觉得挺满意,结果发现电池自放电都比这个高。所以啊,别光盯着模组功耗,电池本身的自放电率也得算进去。

个人经验:PSM模式下,模组虽然省电,但有个坑——它无法被网络主动寻呼。也就是说,服务器想下发数据,得等模组自己醒来。所以PSM适合“上报为主”的场景,比如水表、气表、环境传感器。

4.2 eDRX(扩展不连续接收)—— 省电与实时性的平衡

eDRX,扩展不连续接收。这名字听着绕口,其实原理很简单:模组不需要一直监听网络寻呼,而是每隔一段时间“醒”一下,听听有没有自己的消息。

eDRX周期可以配置,从几秒到几十分钟不等。周期越长,平均电流越低,但响应延迟也越大。

eDRX周期 平均电流(典型值) 下行延迟 适用场景
2.56秒 ~200μA 秒级 智能路灯、实时告警
10.24秒 ~80μA 10秒级 智能停车、资产追踪
40.96秒 ~30μA 分钟级 环境监测、农业传感器
163.84秒 ~15μA 数分钟级 水表、气表(非实时)

我做过一个智能垃圾桶项目,要求垃圾桶满溢时能及时告警。一开始用了PSM,结果服务器下发指令要等好几个小时。后来换成eDRX,周期设成10.24秒,电流从3μA涨到80μA,但响应时间从小时级降到了秒级。嗯,这就是取舍。

注意:eDRX的配置需要网络侧支持。有些运营商基站没开这个功能,你模组配了也没用。我建议你在项目初期就跟运营商确认好,或者用AT指令测试一下:AT+CEDRXS=1,5,”0101” 看看能不能注册成功。

4.3 不同模式下的电流消耗(uA级)

咱们把NB-IoT模组的工作状态拆开看,每个阶段的电流差异巨大。

工作模式 典型电流 持续时间 说明
PSM(省电模式) 2~5 μA 数小时~数天 深度睡眠,几乎不耗电
eDRX(空闲监听) 15~200 μA 取决于周期 周期性醒来听寻呼
空闲模式(无eDRX) ~1 mA 持续 一直监听,不推荐
连接态(发送数据) 100~250 mA 1~5秒 峰值功耗,但时间短
网络附着/注册 200~400 mA 2~10秒 开机或重连时发生

你看,连接态电流虽然高达200mA,但只持续几秒钟。真正吃电的,反而是那些“看似省电”的空闲模式。我见过一个项目,模组没配PSM,一直处于空闲监听状态,平均电流1mA,结果电池容量算下来只能撑两个月。

关键结论:NB-IoT模组的平均功耗,90%以上由“非连接态”决定。把空闲电流压到最低,才是续航的关键。

4.4 实际续航估算方法

好了,理论讲完了,咱们来算点实际的。

续航估算,说白了就是“电池容量 ÷ 平均电流”。但平均电流怎么算?不能简单取个中间值。

我常用的估算步骤:

  1. 拆解工作周期:把一天拆成若干个“上报周期”。比如每6小时上报一次,一天就是4个周期。
  2. 计算每个周期的耗电量
    • 连接态:200mA × 3秒 = 600 mAs(毫安秒)
    • 空闲态(eDRX):80μA × 6小时 = 80μA × 21600秒 = 1728 mAs
    • PSM态:3μA × 剩余时间
  3. 求和并换算:把所有阶段的耗电量加起来,除以周期总时间,得到平均电流。

举个例子,假设一个智能水表:

  • 每天上报4次,每次连接3秒(200mA)
  • 其余时间处于PSM(3μA)
  • 电池容量:8500 mAh(ER18505锂亚电池)

计算过程:

每天连接耗电 = 200mA × 3秒 × 4次 = 2400 mAs
每天PSM耗电 = 0.003mA × (86400 - 12)秒 ≈ 259 mAs
每天总耗电 = 2400 + 259 = 2659 mAs
每天平均电流 = 2659 mAs ÷ 86400秒 ≈ 0.0308 mA = 30.8 μA
理论续航 = 8500 mAh ÷ 0.0308 mA ≈ 276,000小时 ≈ 31.5年

31.5年?听着很美好对吧?但实际根本达不到。

避坑指南:我曾经按这个公式算出来续航10年,结果2年就换电池了。为什么?

  • 电池自放电:锂亚电池每年自放电约1~3%,10年下来容量损失30%以上
  • 低温影响:0℃以下,电池容量可能打对折
  • 网络重连:模组偶尔掉线,重新附着时电流高达400mA,持续10秒
  • 电压跌落:电池内阻导致大电流时电压骤降,模组可能重启

我现在的估算方法:

  1. 理论计算值 × 0.6(安全系数)
  2. 再减去电池自放电损失
  3. 最后留20%余量给极端情况

还是上面那个水表,理论31.5年,实际估算:31.5 × 0.6 - 30%(自放电)≈ 13年。嗯,这才靠谱。

我的习惯:项目初期,我会用Excel搭一个功耗估算表。把连接次数、PSM时间、eDRX周期、电池容量、自放电率都列进去。每次改参数,续航结果自动更新。你想想看,这比手算快多了,而且不容易漏项。

4.5 总结与建议

功耗这东西,没有银弹。PSM省电但响应慢,eDRX平衡但配置复杂。

我个人的建议是:

  • 纯上报场景(水表、气表):用PSM,电流压到3μA以下
  • 需要下行响应的场景(路灯、停车位):用eDRX,周期根据延迟要求来定
  • 实时性要求高的场景(告警、控制):别用NB-IoT了,考虑Cat.1或LoRa

最后提醒一句:理论计算只是起点,实际测试才是终点。我每次做新项目,都会先搭一个最小系统,跑一周的功耗日志。数据说话,比什么都靠谱。

好了,这一章就聊到这儿。下一章咱们讲讲天线设计和匹配网络,那也是个容易踩坑的地方。