3. 核心功耗模型:电池容量、工作周期、峰值电流与平均电流的计算方法

各位工程师朋友,这一章咱们来啃硬骨头——功耗模型的计算。说实话,很多做胎压监测的同行,一开始都栽在电池寿命估算上。我当年也吃过这个亏,产品做出来,实验室测着挺好,一上车跑俩月就没电了……后来才明白,核心问题就出在「平均电流」没算对。

今天我把这套计算方法掰开揉碎了讲。你只要跟着走一遍,以后任何低功耗产品的电池寿命估算,你都能心里有底。

3.1 电池容量:你的能量储备到底有多少?

先看电池容量。胎压监测里最常用的是CR2032纽扣电池,标称容量220mAh。但注意,这个数字是理想值。

实际可用容量 ≠ 标称容量

为什么?因为电池有自放电,有内阻,还有温度特性。我做过一个测试:同一批CR2032,在25℃下放电到2.0V,能放出210mAh;放到-20℃,同样截止电压,只能放出140mAh。差了整整三分之一。

所以我的习惯是:

  • 常温可用容量:取标称值的90%
  • 低温可用容量:取标称值的60%~70%
  • 寿命末期容量:再打八折

经验公式
C_usable = C_nominal × K_temp × K_aging

其中 K_temp 在0℃以下取0.7,K_aging 取0.8

举个例子:标称220mAh的电池,在-10℃环境下,用了两年后,实际可用容量大概只有:
220 × 0.7 × 0.8 = 123.2 mAh

嗯,这个数字才是你设计时该用的基准值。

3.2 工作周期:胎压监测的「作息时间表」

胎压监测系统不是一直在工作的。它有自己的「作息时间表」,我们叫它工作周期。

典型的周期是这样的:

阶段持续时间电流消耗
深度休眠59.5秒1.5 μA
唤醒+传感器采样10 ms5 mA
数据处理+RF发射20 ms15 mA
等待确认5 ms8 mA

你看,一个完整周期大约60秒。其中99%以上的时间都在睡觉。这就是低功耗的精髓——能睡就睡,醒了赶紧干活,干完继续睡

我曾经见过一个团队,把采样周期设成了10秒一次。结果电池三个月就挂了。你想想看,发射一次RF要15mA,10秒来一次,平均电流直接飙升。这就是没算明白工作周期的代价。

3.3 峰值电流:别被瞬间的大电流吓到

峰值电流,就是系统在某一瞬间拉的最大电流。胎压监测里,峰值通常出现在RF发射瞬间,15mA左右。

有人会问:15mA不大啊,电池不是能输出几十mA吗?

问题在于——电池的内阻。纽扣电池的内阻通常在10~30Ω。当你要15mA电流时,电池内阻上的压降是:
V_drop = 15mA × 20Ω = 0.3V

电池空载3.0V,一发射就掉到2.7V。如果系统最低工作电压是2.5V,那还行。但如果你的MCU或传感器要求2.7V以上……嗯,系统就会复位。

避坑指南:我曾经在一个项目里,RF发射瞬间MCU频繁复位。查了三天,最后发现是电池内阻太大,发射时电压跌到2.4V,MCU直接掉电。解决方案是加了一个100μF的钽电容,瞬间电流由电容提供,电压就稳住了。

所以,峰值电流本身不可怕,可怕的是它引起的电压跌落。我的建议是:

  • 计算峰值电流下的最小电压:V_min = V_bat - I_peak × R_bat
  • 确保 V_min 高于系统最低工作电压 + 0.2V 的余量
  • 如果不够,加储能电容,或者选低内阻电池

3.4 平均电流:电池寿命的「判决官」

好了,前面都是铺垫。真正决定电池能用多久的,是平均电流

平均电流的计算公式很简单:

I_avg = (I_sleep × T_sleep + I_wake × T_wake + I_tx × T_tx) / T_total

拿我们刚才的例子算一下:

I_avg = (1.5μA × 59.5s + 5mA × 0.01s + 15mA × 0.02s + 8mA × 0.005s) / 60s

先把单位统一:
I_sleep = 0.0015 mA
T_sleep = 59.5 s
I_wake = 5 mA, T_wake = 0.01 s
I_tx = 15 mA, T_tx = 0.02 s
I_ack = 8 mA, T_ack = 0.005 s

分子 = 0.0015×59.5 + 5×0.01 + 15×0.02 + 8×0.005
     = 0.08925 + 0.05 + 0.3 + 0.04
     = 0.47925 mA·s

I_avg = 0.47925 / 60 = 0.0079875 mA ≈ 8 μA

平均电流只有8μA!这就是为什么胎压监测能用两三年。你想想看,如果休眠电流从1.5μA涨到5μA,平均电流会变成多少?

I_avg_new = (0.005×59.5 + 0.05 + 0.3 + 0.04) / 60
          = (0.2975 + 0.39) / 60
          = 0.6875 / 60
          = 0.01146 mA ≈ 11.5 μA

平均电流从8μA涨到11.5μA,涨了44%。电池寿命直接从3年掉到2年。你看,休眠电流才是真正的「电老虎」

我的经验:做低功耗设计,80%的精力要花在降低休眠电流上。RF发射那几十毫秒,再优化也省不了多少。但休眠电流每降1μA,电池寿命就能延长好几个月。

3.5 电池寿命估算:把前面所有东西串起来

最后一步,估算电池寿命:

Life (hours) = C_usable (mAh) / I_avg (mA)
Life (years) = Life (hours) / (24 × 365)

用我们刚才的数据:

C_usable = 123.2 mAh (考虑了温度和老化)
I_avg = 0.008 mA (8 μA)

Life = 123.2 / 0.008 = 15400 hours
     = 15400 / 8760 ≈ 1.76 years

嗯?只有1.76年?不是说能用3年吗?

问题出在——我们用了最恶劣的条件:-10℃、用了两年的电池。如果换成常温、新电池:

C_usable = 220 × 0.9 = 198 mAh
Life = 198 / 0.008 = 24750 hours ≈ 2.83 years

这就接近3年了。所以,电池寿命是一个范围,不是一个固定值。我一般会给客户两个数:

  • 典型寿命:常温、新电池,约3年
  • 最低寿命:低温、老化电池,约1.5年

这样既不过分乐观,也不过分悲观。

3.6 一个完整的计算示例

最后,我放一个完整的计算流程。你以后做设计,直接套用就行。

/* 胎压监测功耗计算模板 */

/* 1. 参数定义 */
#define BAT_CAPACITY_NOM    220     // 标称容量 mAh
#define K_TEMP              0.7     // 低温系数
#define K_AGING             0.8     // 老化系数
#define I_SLEEP_UA          1.5     // 休眠电流 μA
#define T_SLEEP_S           59.5    // 休眠时间 s
#define I_WAKE_MA           5       // 唤醒电流 mA
#define T_WAKE_MS           10      // 唤醒时间 ms
#define I_TX_MA             15      // 发射电流 mA
#define T_TX_MS             20      // 发射时间 ms
#define I_ACK_MA            8       // 确认电流 mA
#define T_ACK_MS            5       // 确认时间 ms

/* 2. 计算可用容量 */
float C_usable = BAT_CAPACITY_NOM * K_TEMP * K_AGING;

/* 3. 计算平均电流 */
float I_avg = (I_SLEEP_UA/1000 * T_SLEEP_S +
               I_WAKE_MA * T_WAKE_MS/1000 +
               I_TX_MA * T_TX_MS/1000 +
               I_ACK_MA * T_ACK_MS/1000) / 
              (T_SLEEP_S + T_WAKE_MS/1000 + T_TX_MS/1000 + T_ACK_MS/1000);

/* 4. 计算寿命 */
float life_hours = C_usable / I_avg;
float life_years = life_hours / (24 * 365);

printf("可用容量: %.1f mAh\n", C_usable);
printf("平均电流: %.3f mA\n", I_avg);
printf("电池寿命: %.1f 小时 (%.2f 年)\n", life_hours, life_years);

输出结果:

可用容量: 123.2 mAh
平均电流: 0.008 mA
电池寿命: 15400.0 小时 (1.76 年)

好了,这一章的核心内容就这些。说白了,功耗模型就是三件事:算清楚电池有多少电、系统怎么用电、平均下来能用多久。你把这个模型建好了,后面做任何优化,都能量化评估效果。

下一章,我会讲具体的低功耗硬件设计技巧——怎么选MCU、怎么设计电源、怎么让传感器更省电。到时候咱们接着聊。