3、能量预算概念:能量预算表的定义、组成要素及其在TinyML中的作用
在TinyML设备的设计中,电池寿命往往不是由“平均功耗”决定的,而是由“最恶劣工况下的能量消耗节奏”决定的。一颗CR2032纽扣电池的标称容量约为210-230mAh,但实际可用容量会随着放电电流增大而急剧下降——当脉冲电流超过15mA时,其有效容量可能仅剩标称值的60%。因此,工程师不能简单地把电池容量除以工作电流来估算续航,而必须引入能量预算表(Energy Budget Table)这一核心工具,将设备在不同状态下的电流消耗、持续时间与占空比进行量化建模,从而在硬件选型、固件优化和算法部署之间建立可计算的桥梁。
上图展示了能量预算表的核心组成要素及其在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)。需要注意的是,这里的“可用容量”并非电池标称容量,而是根据实际放电曲线、截止电压和工作温度修正后的有效容量。
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.3 能量预算表的构建流程与实战案例
下面通过一个具体的TinyML案例——智能农业土壤监测节点,演示如何从零构建一张能量预算表。该节点使用CR2032电池供电,每30分钟采集一次土壤湿度、温度和电导率数据,通过TinyML模型判断是否需要灌溉,并通过BLE将结果发送至网关。
3.3.1 硬件配置与初始参数
| 组件 | 型号 | 工作电流 | 休眠电流 | 备注 |
|---|---|---|---|---|
| MCU | STM32L431 | 6mA @ 16MHz | 1.1μA (Stop Mode 2) | 内置TinyML推理 |
| 土壤传感器 | Capacitive V1.2 | 5mA | 0.1μA | 需5V供电(通过电荷泵) |
| BLE模块 | nRF52832 | 15mA (TX 0dBm) | 0.3μA | 广播+连接事件 |
| 温湿度 | SHT40 | 0.4mA (测量) | 0.1μA | 每次测量8ms |
| LDO/DC-DC | TPS62740 | — | 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年),此时就需要优化。优化方案包括:
- 降低BLE发射功耗:将发射功率从0dBm降至-4dBm,电流从15mA降至11mA,BLE阶段电荷消耗降至1.1mAs,总活跃电荷降至1.589mAs。
- 缩短传感器稳定时间:通过软件优化将稳定时间从10ms降至5ms,节省0.0275mAs。
- 使用更低功耗的MCU:若换用Ambiq Apollo4(活跃电流3.5mA @ 48MHz),推理阶段电流降至3.5mA,节省0.075mAs。
优化后,单周期活跃电荷降至约1.486mAs,日消耗电荷降至0.198mAh,续航回升至约909天(2.5年)。若进一步将采样周期调整为15分钟,则日消耗为0.099mAh,续航约1818天(5年),满足要求。
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)实测各阶段电流,将实测数据回填至能量预算表,形成“设计-实测-校准”的闭环。只有经过实测校准的能量预算表,才能为产品经理提供可靠的续航承诺依据,避免“宣称一年续航,实际三个月没电”的工程事故。