功耗模型基础:电池容量单位、静态与动态功耗、工作周期与能量消耗数学表达

各位同学,咱们今天聊聊功耗模型的基础。说实话,这部分内容看着简单,但我在实际项目中踩过的坑,有一半都跟这些基础概念没吃透有关。你想想看,一个LoRaWAN设备要在野外跑三五年,电池容量算错了,那可不是闹着玩的。

电池容量单位:mAh 与 Wh

先说说电池容量。咱们最常用的单位是 mAh(毫安时)。什么意思呢?就是电池以某个电流放电,能撑多久。比如一个2000mAh的电池,如果设备平均电流是10mA,那理论上能撑200小时。

但这里有个坑——mAh 没考虑电压。我刚开始做项目时,拿两节AA电池串联,容量标称都是2000mAh,结果一个设备跑得久,一个跑得短。后来才发现,不同电池的电压平台不一样。

所以业界还有个单位叫 Wh(瓦时)。公式很简单:

Wh = mAh × V / 1000

举个例子:一个3.7V的锂电池,标称2000mAh,那它的能量就是:

2000 × 3.7 / 1000 = 7.4 Wh

我个人习惯,做系统级估算时用Wh,因为能直接跟功耗(mW)对上。做电路级分析时用mAh,因为电流数据好拿。两者切换着用,心里更有底。

小提示: 电池的实际可用容量会随温度、放电倍率变化。我在东北做过一个项目,零下20度时,锂电池容量直接打了七折。估算时建议留20%的余量。

静态功耗与动态功耗

一个LoRaWAN设备的功耗,可以拆成两大部分:静态功耗动态功耗

静态功耗,说白了就是设备「啥也不干」时消耗的电。比如MCU的睡眠电流、传感器的待机电流、电源芯片的静态电流。这些电流通常很小,微安到毫安级别。但别忘了,设备大部分时间都处于这个状态,所以积少成多,往往占总能耗的大头。

我曾经优化过一个水表项目,MCU睡眠电流是3μA,觉得挺好了。后来发现电源芯片的静态电流有5μA,加上去直接翻倍。嗯,选型时一定要把整个系统的静态电流都算进去。

动态功耗呢,就是设备「干活」时消耗的电。比如MCU运行、LoRa发射接收、传感器采样。这部分电流大,但持续时间短。动态功耗的公式是:

P_dynamic = C × V² × f

其中C是负载电容,V是工作电压,f是工作频率。你看,电压的影响是平方级的。所以很多低功耗设计会尽量降低工作电压,比如从3.3V降到1.8V,动态功耗能降一大截。

功耗类型 典型电流 持续时间 占总能耗比例
静态功耗 1~10 μA 几乎100%时间 30%~70%
动态功耗 10~100 mA 毫秒~秒级 30%~70%
注意: 动态功耗里,LoRa发射是最大的耗电大户。我记得有一次测试,发射电流高达120mA,持续1秒。如果发射频率太高,电池撑不过一个月。所以发射策略一定要精打细算。

工作周期(Duty Cycle)概念

工作周期,英文叫 Duty Cycle,就是设备「干活时间」占总时间的比例。公式很简单:

Duty Cycle = 工作时间 / 总时间 × 100%

举个例子:一个传感器每10分钟采集一次数据,采集耗时100ms,然后发射耗时200ms。那它的工作周期就是:

(100ms + 200ms) / (10 × 60 × 1000ms) = 300 / 600000 = 0.05%

你看,工作周期只有万分之五。但别小看这万分之五,它可能消耗掉一半的电池能量。

LoRaWAN协议本身对Duty Cycle有严格限制,比如EU868频段,每个子频段的最大Duty Cycle是1%。这意味着你每发射一次,就得等一段时间才能再发。我见过有新手把数据上报间隔设成1秒,结果设备直接被网络服务器封了——因为违反了Duty Cycle限制。

为什么会这样?因为LoRa用的是ISM频段,属于公共资源,大家都要用。限制Duty Cycle是为了公平共享。你想想看,如果每个设备都拼命发,那整个频段就乱套了。

能量消耗的数学表达

好了,前面铺垫了这么多,终于到核心了。能量消耗的数学表达,其实就是一个积分公式:

E = ∫ I(t) × V(t) dt

翻译成人话:能量等于电流乘以电压对时间的积分。但在实际工程中,我们通常把它离散化处理:

E_total = Σ (I_i × V_i × t_i)

其中i代表不同的工作状态。比如一个典型的LoRaWAN设备,可以分成这几个状态:

  • 睡眠状态:I_sleep = 5μA, V = 3.3V, t_sleep = 599.7秒
  • 采集状态:I_sense = 10mA, V = 3.3V, t_sense = 100ms
  • 发射状态:I_tx = 120mA, V = 3.3V, t_tx = 200ms

那一个周期(10分钟)的总能量就是:

E = (5μA × 3.3V × 599.7s) + (10mA × 3.3V × 0.1s) + (120mA × 3.3V × 0.2s)

算出来大概是:

E ≈ 0.0099 + 0.0033 + 0.0792 = 0.0924 焦耳

你看,发射状态虽然只持续200ms,但消耗的能量占了85%以上。这就是为什么我总说,优化功耗首先要盯死发射环节。

核心结论: 能量消耗的数学表达告诉我们,低功耗设计的关键不是降低某个瞬间的电流,而是降低「电流 × 时间」的积分值。说白了,要么减小电流,要么缩短时间,要么降低电压。三者能同时做到,那就是高手了。

最后说一句,这些公式看着简单,但真正用好需要大量实践。我建议你拿一个实际项目的数据,手算一遍能量消耗,再跟实测对比。你会发现,理论值和实测值之间总有差距——这就是经验积累的地方。