3、能量预算概念:能量预算表的定义、组成要素及其在TinyML中的作用

在TinyML设备的设计中,电池寿命往往不是由“平均功耗”决定的,而是由“最恶劣工况下的能量消耗节奏”决定的。一颗CR2032纽扣电池的标称容量约为210-230mAh,但实际可用容量会随着放电电流增大而急剧下降——当脉冲电流超过15mA时,其有效容量可能仅剩标称值的60%。因此,工程师不能简单地把电池容量除以工作电流来估算续航,而必须引入能量预算表(Energy Budget Table)这一核心工具,将设备在不同状态下的电流消耗、持续时间与占空比进行量化建模,从而在硬件选型、固件优化和算法部署之间建立可计算的桥梁。

能量预算表核心要素与TinyML设计链路 能量预算表组成要素 工作电流 (I_active) 传感器采样+MCU运行+无线发射 休眠电流 (I_sleep) RTC+RAM保持+漏电流 占空比 (Duty Cycle) T_active / (T_active + T_sleep) 工作电压 (V) 影响电池放电效率与截止电压 I_avg = I_active×D + I_sleep×(1-D) 能量预算在TinyML设计中的驱动链路 硬件选型 MCU/传感器/无线SoC 固件策略 休眠模式/唤醒周期/中断 算法部署 模型大小/推理频率 能量预算表迭代计算 I_avg → 电池寿命估算 → 是否满足目标? 满足 → 进入原型验证 实测功耗曲线校准 不满足 → 优化迭代 降低占空比/换低功耗器件/模型压缩 反馈优化循环 CR2032典型可用容量:210mAh @ 0.5mA放电,降额至60% @ 15mA脉冲 锂电池(如LIR2032)可提供更高脉冲电流,但自放电率较高

上图展示了能量预算表的核心组成要素及其在TinyML设计流程中的驱动关系。能量预算表并非一张静态的Excel表格,而是一个贯穿硬件选型、固件开发和算法部署全过程的动态计算框架。下面我们将从定义、组成要素、实际构建方法以及常见误区四个维度展开详细讲解。

3.1 能量预算表的定义与核心原理

能量预算表是一种将设备在时间轴上的所有工作状态(包括运行、休眠、转换、无线收发等)的电流消耗与持续时间进行量化统计的工程表格。其本质是建立“电池容量 → 平均电流 → 续航时间”的数学映射关系。对于TinyML设备而言,由于机器学习推理通常只在特定事件触发时执行,设备绝大多数时间处于休眠状态,因此能量预算表的准确性直接决定了产品能否达到宣称的“一年免维护”或“两年免换电池”指标。

能量预算表的理论基础是电荷守恒定律。电池的可用电荷量(mAh)等于设备在所有状态下消耗的电荷之和。用公式表示为:

Q_battery = Σ(I_n × T_n)  (n = 1, 2, 3, ... 表示不同工作状态)

其中,I_n为状态n的电流,T_n为该状态的持续时间。在实际工程中,我们通常将设备状态简化为两种主要模式:活跃模式(Active)和休眠模式(Sleep),并引入占空比(Duty Cycle)来简化计算。占空比D定义为活跃时间占总周期的比例:

D = T_active / (T_active + T_sleep)

由此,平均电流I_avg可表示为:

I_avg = I_active × D + I_sleep × (1 - D)

电池寿命(小时)≈ 电池可用容量(mAh)/ I_avg(mA)。需要注意的是,这里的“可用容量”并非电池标称容量,而是根据实际放电曲线、截止电压和工作温度修正后的有效容量。

核心要点:能量预算表的核心价值在于将“时间维度”引入功耗分析。一个峰值电流为50mA、持续10ms的无线发射操作,与一个持续1秒、电流为0.5mA的传感器读取操作,在能量消耗上可能相当(50mA×10ms = 0.5mAs vs 0.5mA×1s = 0.5mAs),但两者对电池的冲击和电压跌落特性完全不同。能量预算表必须同时记录电流幅值和持续时间,才能准确评估电池的实际表现。

3.2 能量预算表的组成要素详解

一张完整的能量预算表通常包含以下四个核心要素,每个要素都有其特定的测量方法和工程意义。

3.2.1 工作电流(I_active)

工作电流是指设备在活跃状态下消耗的总电流,包括传感器上电、MCU运行、ADC采样、数据预处理、TinyML推理以及可能的无线数据传输。在TinyML场景中,工作电流通常不是一个恒定值,而是由多个子阶段组成。例如,一个关键词唤醒设备的工作电流曲线可能包含:

  • 传感器稳定期:麦克风或IMU上电后需要1-5ms稳定时间,电流约0.5-2mA。
  • 采样与预处理:ADC采样和特征提取,电流约2-5mA,持续5-20ms。
  • 推理计算:MCU运行TinyML模型,电流约5-15mA(取决于MCU主频和是否启用硬件加速),持续10-100ms。
  • 无线发射:BLE或LoRa发送数据,电流峰值可达20-40mA(BLE)或50-120mA(LoRa),持续5-30ms。

在能量预算表中,建议将工作电流拆分为上述子阶段,分别记录电流值和持续时间,而不是简单地取一个平均值。这样可以在后续优化时精准定位功耗瓶颈。

3.2.2 休眠电流(I_sleep)

休眠电流是设备在低功耗模式下维持基本功能(如RTC计时、RAM数据保持、GPIO唤醒检测)所需的电流。对于TinyML设备,休眠电流通常要求控制在1-10μA级别。常见的低功耗MCU(如STM32L4系列、nRF52系列、ESP32-S3的深度睡眠模式)在休眠状态下的电流可低至0.5-5μA。但需要注意,休眠电流并非固定值,它受以下因素影响:

  • 供电电压:电压越高,漏电流越大。CR2032新电池电压约3.0V,随着放电降至2.0V截止电压时,漏电流会有所下降。
  • 温度:高温会显著增加PN结漏电流,25°C时1μA的休眠电流在60°C时可能升至5-10μA。
  • 外设漏电:未完全断电的传感器、分压电阻、LDO的静态电流都会叠加到休眠电流中。

在能量预算表中,休眠电流应取“最坏情况”下的值(如高温、电池低电压时),以确保续航估算留有安全余量。

3.2.3 占空比(Duty Cycle)

占空比决定了设备在活跃状态和休眠状态之间的时间分配。在TinyML应用中,占空比的选择直接影响两个关键指标:响应延迟和功耗。例如,一个振动监测设备需要每100ms进行一次推理以捕捉瞬态冲击,而一个温湿度传感器可能每5分钟才需要唤醒一次。占空比的计算公式为:

D = T_active / (T_active + T_sleep) × 100%

以温湿度传感器为例:若每次唤醒后工作50ms(包括传感器稳定、采样、推理和无线发送),然后进入10秒休眠,则占空比D = 50ms / (50ms + 10000ms) ≈ 0.5%。这意味着设备99.5%的时间处于休眠状态,平均电流将主要由休眠电流主导。

在TinyML中,占空比还受到“事件驱动”逻辑的影响。设备可能不是固定周期唤醒,而是由外部中断(如加速度计检测到运动)触发。此时,能量预算表需要引入“事件频率”参数,将随机事件转化为等效的统计占空比。例如,若平均每小时发生10次事件,每次事件处理耗时200ms,则等效占空比D = (10 × 200ms) / 3600s ≈ 0.056%。

3.2.4 工作电压(V)

工作电压虽然不直接出现在平均电流公式中,但它通过影响电池的放电效率和截止电压,间接决定了可用容量。CR2032的标称电压为3.0V,推荐工作电压范围为2.0-3.3V。当电压降至2.0V以下时,电池内阻急剧增大,即使设备仍能工作,电池也无法提供足够的瞬时电流。对于TinyML设备,工作电压还影响MCU的最高主频和无线模块的发射功率——电压越低,MCU可能需要降频运行,无线发射距离也会缩短。

在能量预算表中,建议记录以下电压相关参数:

  • 电池截止电压:设备允许的最低工作电压(如2.0V)。
  • DC-DC/LDO效率:若使用降压转换器,需考虑不同输入电压下的转换效率(通常为85-95%)。
  • 电压跌落:在无线发射等大电流脉冲期间,电池电压可能瞬时跌落0.2-0.5V,需确保不低于MCU的最低工作电压。
工程经验:在构建能量预算表时,建议将“电压”作为独立维度进行敏感性分析。例如,分别计算电池电压为3.0V、2.5V和2.0V时的平均电流和续航时间。因为随着电池放电,其内阻增加,相同负载下的实际电流可能略有下降,但截止电压的提前到来往往对续航影响更大。

3.3 能量预算表的构建流程与实战案例

下面通过一个具体的TinyML案例——智能农业土壤监测节点,演示如何从零构建一张能量预算表。该节点使用CR2032电池供电,每30分钟采集一次土壤湿度、温度和电导率数据,通过TinyML模型判断是否需要灌溉,并通过BLE将结果发送至网关。

3.3.1 硬件配置与初始参数

组件型号工作电流休眠电流备注
MCUSTM32L4316mA @ 16MHz1.1μA (Stop Mode 2)内置TinyML推理
土壤传感器Capacitive V1.25mA0.1μA需5V供电(通过电荷泵)
BLE模块nRF5283215mA (TX 0dBm)0.3μA广播+连接事件
温湿度SHT400.4mA (测量)0.1μA每次测量8ms
LDO/DC-DCTPS62740—0.5μA效率90% @ 3V→3.3V

设备的工作流程为:每30分钟唤醒一次,依次完成传感器上电(10ms稳定)、土壤传感器读取(50ms)、温湿度读取(10ms)、TinyML推理(30ms)、BLE广播与连接(100ms),然后进入休眠。整个活跃过程总耗时约200ms。

3.3.2 能量预算表计算

首先计算活跃状态的总电荷消耗。将活跃过程拆分为子阶段:

阶段1:传感器上电稳定  10ms × 5.5mA = 0.055 mAs
阶段2:土壤传感器读取  50ms × 5.0mA = 0.250 mAs
阶段3:温湿度测量      10ms × 0.4mA = 0.004 mAs
阶段4:TinyML推理      30ms × 6.0mA = 0.180 mAs
阶段5:BLE发送         100ms × 15mA = 1.500 mAs
-----------------------------------------------
活跃总电荷 Q_active = 1.989 mAs ≈ 0.000553 mAh

休眠电流为MCU 1.1μA + 传感器漏电0.2μA + LDO 0.5μA ≈ 1.8μA。休眠周期为30分钟减去0.2秒活跃时间,约1799.8秒。休眠电荷消耗:

Q_sleep = 1.8μA × 1799.8s = 3.24 mAs ≈ 0.0009 mAh

单个完整周期(30分钟)的总电荷消耗为0.000553 + 0.0009 = 0.001453 mAh。每天有48个周期,日消耗电荷为0.001453 × 48 ≈ 0.0697 mAh。若CR2032可用容量按180mAh(考虑降额)计算,理论续航为:

续航天数 = 180mAh / 0.0697mAh/天 ≈ 2582天 ≈ 7.1年

这个结果看似乐观,但实际工程中必须考虑电池自放电(CR2032年自放电率约1-2%)、温度影响和BLE重传等非理想因素。若将自放电率按每年2%计算,7年后的剩余容量仅为初始的约87%,实际续航可能缩短至5.5-6年。

3.3.3 优化迭代与结果对比

如果产品要求5年续航,当前设计已满足。但若将采样周期从30分钟缩短至10分钟,占空比变为原来的3倍,日消耗电荷增至0.209 mAh,续航降至约861天(2.4年),此时就需要优化。优化方案包括:

  1. 降低BLE发射功耗:将发射功率从0dBm降至-4dBm,电流从15mA降至11mA,BLE阶段电荷消耗降至1.1mAs,总活跃电荷降至1.589mAs。
  2. 缩短传感器稳定时间:通过软件优化将稳定时间从10ms降至5ms,节省0.0275mAs。
  3. 使用更低功耗的MCU:若换用Ambiq Apollo4(活跃电流3.5mA @ 48MHz),推理阶段电流降至3.5mA,节省0.075mAs。

优化后,单周期活跃电荷降至约1.486mAs,日消耗电荷降至0.198mAh,续航回升至约909天(2.5年)。若进一步将采样周期调整为15分钟,则日消耗为0.099mAh,续航约1818天(5年),满足要求。

风险提示:上述计算中,BLE的100ms发送时间包含了连接间隔和重传余量。在实际环境中,若网关距离较远或存在干扰,BLE可能需要进行多次重传,单次发送时间可能延长至200-300ms,导致活跃电荷消耗翻倍。因此,在能量预算表中建议为无线通信预留至少50%的时间余量,或采用“发送失败则跳过本次”的策略来限制最大功耗。

3.4 常见误区与总结复盘

在TinyML项目的能量预算评估中,工程师常犯以下四类错误,需要特别警惕:

  • 误区一:将标称容量当作可用容量。CR2032在1mA以下放电时可用容量接近标称值,但在10mA以上脉冲放电时,由于内部极化效应,可用容量可能下降30-40%。建议查阅电池的数据手册中的“脉冲放电容量曲线”,或进行实测。
  • 误区二:忽略休眠电流的温漂。许多MCU在数据手册中标注的休眠电流是25°C下的典型值。在户外场景(-20°C至60°C),休眠电流可能变化5-10倍。能量预算表应使用高温下的最大休眠电流进行估算。
  • 误区三:将TinyML推理视为“瞬时操作”。虽然单次推理时间可能只有几十毫秒,但如果推理频率过高(如每100ms一次),占空比会显著上升。例如,一个始终在线的关键词检测系统,若每100ms推理一次,每次20ms,占空比高达20%,平均电流将主要由活跃电流决定,CR2032可能只能支撑数天。
  • 误区四:未考虑电池电压跌落对系统稳定性的影响。当BLE发射或传感器加热器启动时,瞬时电流可能达到30-50mA,导致CR2032电压从3.0V瞬间跌落至2.5V以下。如果MCU的BOD(欠压检测)阈值设置为2.4V,系统可能意外复位。能量预算表应包含“峰值电流下的最小电压”校验。

总结复盘:能量预算表是TinyML设备从原型走向量产的关键工程文档。它不仅是续航计算的工具,更是硬件选型、固件优化和算法压缩的决策依据。建议团队在项目启动初期就建立能量预算表的雏形,并在每次硬件改版、固件更新后同步更新。一个实用的做法是:在代码中嵌入功耗测量点(通过GPIO翻转标记活跃/休眠状态),配合功耗分析仪(如Joulescope或Nordic PPK2)实测各阶段电流,将实测数据回填至能量预算表,形成“设计-实测-校准”的闭环。只有经过实测校准的能量预算表,才能为产品经理提供可靠的续航承诺依据,避免“宣称一年续航,实际三个月没电”的工程事故。