4、低功耗设计原则:峰值电流与平均电流、占空比计算、能量预算分析

做低功耗蓝牙产品,很多人一上来就盯着芯片的休眠电流看。觉得只要休眠电流够低,整机功耗就一定漂亮。嗯,这个想法其实是个坑。我见过不少团队,选了一颗号称休眠电流只有几百纳安的芯片,结果做出来的产品电池续航还是惨不忍睹。

问题出在哪?说白了,你忽略了两个关键因素:峰值电流和占空比。今天这一章,我们就来把这笔账算清楚。

核心观点:低功耗设计的本质不是追求某个状态下的电流极低,而是控制整个时间轴上的能量消耗。峰值电流、占空比、能量预算,这三者缺一不可。

4.1 峰值电流 vs 平均电流:谁才是真正的耗电大户?

先看一个我实际项目中遇到的案例。某款穿戴设备,蓝牙广播间隔设为100ms,广播期间峰值电流约8mA,休眠电流1.5µA。客户觉得休眠电流已经很低了,但实测整机平均电流却高达180µA。为什么?

我们来拆解一下。设备每100ms醒来一次,广播持续约3ms。这3ms里,电流从1.5µA瞬间跳到8mA,差了5000多倍。虽然广播时间短,但峰值电流的冲击非常猛。

参数 休眠状态 广播状态
电流 1.5 µA 8 mA
持续时间 97 ms 3 ms
单周期电荷量 0.1455 µC 24 µC

看到没有?广播状态虽然只占了3%的时间,但它贡献的电荷量却占了总电荷量的99.4%。这就是峰值电流的威力。你想想看,如果只盯着休眠电流优化,哪怕你把1.5µA降到0.5µA,对整机续航的提升也微乎其微。

我的经验:在做低功耗设计时,我习惯先抓峰值电流的持续时间。先把广播、连接、数据收发这些高电流事件的时长压到最短,再去抠休眠电流。这个顺序不能反。

4.2 占空比计算:把时间轴切成片

占空比这个概念其实很简单,就是高电流状态的时间占总周期的比例。但真正用好它,需要你理解系统的工作模式。

一个典型的BLE设备,工作周期可以分成三个阶段:

  1. 休眠阶段:电流最低,但时间最长
  2. 唤醒准备阶段:时钟稳定、外设初始化,电流中等
  3. 活动阶段:广播/连接/数据收发,电流最高

占空比的计算公式:

占空比 = 活动时间 / (休眠时间 + 唤醒准备时间 + 活动时间) × 100%

平均电流 = 休眠电流 × 休眠占比 + 准备电流 × 准备占比 + 活动电流 × 活动占比

举个例子。假设你的设备每1秒唤醒一次,做一次温度采集并通过BLE上报:

  • 休眠:990ms @ 2µA
  • 唤醒准备:5ms @ 500µA(传感器上电、ADC稳定)
  • 活动:5ms @ 6mA(BLE连接事件、数据发送)

计算平均电流:

平均电流 = 2µA × 0.99 + 500µA × 0.005 + 6000µA × 0.005
         = 1.98 + 2.5 + 30
         = 34.48 µA

你看,活动阶段虽然只占0.5%的时间,却贡献了87%的平均电流。这就是为什么我总说,降低峰值电流的持续时间,比降低峰值电流本身更有效。

避坑指南:我曾经在一个项目中,把BLE的连接间隔从50ms改到400ms,以为平均电流能降8倍。结果只降了不到3倍。为什么?因为唤醒准备阶段的电流被忽略了。每次连接事件前,MCU要从深度休眠唤醒,时钟重新锁定,这部分电流和时间占比反而变大了。所以,占空比计算一定要把每个阶段的电流和时间都算进去。

4.3 能量预算分析:从电池端倒推设计

能量预算分析,说白了就是回答一个问题:我的电池能撑多久?

我习惯的做法是,先定目标,再倒推设计。比如客户要求纽扣电池CR2032(标称容量225mAh)供电,设备要工作6个月。那么:

可用容量 = 225mAh × 0.8(放电效率,考虑电池内阻和温度)
         = 180 mAh

目标平均电流 = 180mAh / (6个月 × 30天 × 24小时)
             = 180 / 4320
             ≈ 41.7 µA

有了这个目标,你再回头去调整你的占空比和峰值电流。如果算出来平均电流是80µA,那要么换电池,要么优化设计。

下面这张图,是我做能量预算时常用的分析框架:

能量预算分析框架 能量预算分析框架 电池总容量 (mAh) 可用容量 (× 放电效率 0.7~0.9) 目标平均电流 = 可用容量 / 目标续航时间 占空比优化 缩短活动时间 延长休眠时间 峰值电流优化 降低发射功率 减少外设同时工作 实际平均电流 ≤ 目标平均电流 ✓ 从电池容量倒推目标平均电流,再通过占空比和峰值电流优化来满足目标

4.4 实战中的能量预算表

我习惯用一张表格来管理能量预算。每个工作模式都列清楚,然后累加。下面是一个BLE温湿度传感器的例子:

工作模式 电流 (µA) 持续时间 (ms) 周期 (ms) 占空比 平均电流 (µA)
深度休眠 1.2 9950 10000 99.5% 1.19
传感器采集 850 20 10000 0.2% 1.70
BLE广播 6200 3 1000 0.3% 18.60
BLE连接事件 5800 2.5 1000 0.25% 14.50
总计 35.99

你看,这个表一目了然。BLE广播和连接事件虽然时间短,但贡献了绝大部分平均电流。如果你想进一步降低功耗,优先优化这两个部分。

我的建议:做能量预算时,留出20%~30%的余量。电池的实际容量会受温度、放电倍率、老化等因素影响。我曾经有个产品,实验室测试续航6个月,结果冬天户外只撑了4个月。就是因为低温下电池内阻增大,可用容量缩水了。

4.5 一个完整的计算示例

我们拿一个实际的BLE门锁项目来走一遍流程。假设:

  • 电池:2节AA串联,总容量约3000mAh(考虑放电效率后按2400mAh算)
  • 目标续航:12个月
  • 设备每天开关锁20次,每次BLE连接约500ms,峰值电流15mA
  • 其余时间深度休眠,电流3µA

先算目标平均电流:

目标平均电流 = 2400mAh / (12 × 30 × 24h)
             = 2400 / 8640
             ≈ 277.8 µA

再算实际平均电流:

休眠部分:3µA × (86400s - 20 × 0.5s) / 86400s ≈ 2.999 µA
活动部分:15mA × 20 × 0.5s / 86400s ≈ 1.736 µA
实际平均电流 ≈ 4.735 µA

嗯,4.735µA远小于277.8µA,这个设计绰绰有余。但如果你把BLE连接时间从500ms优化到100ms,平均电流还能再降。虽然这个项目不需要,但养成这个习惯,遇到真正严苛的项目时就不会手忙脚乱。

避坑指南:我曾经犯过一个错误——只算了典型工况,没算最坏工况。门锁在冬天低温时,电池内阻增大,峰值电流会被拉低,导致BLE连接失败重试。重试次数一多,平均电流直接翻倍。所以,能量预算一定要考虑温度、电池老化、信号强度波动这些边界条件。

4.6 小结:三个原则,一个工具

这一章的内容,总结下来就是三个原则:

  1. 峰值电流原则:优先缩短高电流事件的持续时间,而不是降低峰值本身
  2. 占空比原则:每个工作阶段的电流和时间都要算进去,不能只看休眠
  3. 能量预算原则:从电池端倒推,用目标平均电流指导设计

一个工具:能量预算表。把每个模式的电流、时间、占空比列清楚,累加出平均电流,再和电池容量对比。这是做低功耗设计最基础也最有效的方法。