3、功耗基础概念:电流、电压、功率、能量、mA·h与mW·h的关系,以及功耗预算的表示方法

TinyML推理任务往往部署在电池供电的微控制器(MCU)或极低功耗的边缘处理器上,其功耗预算通常以毫安时(mA·h)或毫瓦时(mW·h)为约束单位。要准确评估一次推理任务是否在预算内,必须首先厘清电流、电压、功率、能量之间的物理关系,并掌握从数据手册参数到实际电池寿命的换算路径。本章从基础电学概念出发,建立mA·h与mW·h的换算桥梁,并给出面向TinyML任务的功耗预算表示方法。

TinyML功耗预算核心链路 物理量定义 电流 I (A) — 电荷流动速率 电压 V (V) — 电势差 功率 P = V × I (W) 能量 E = P × t (J 或 W·s) 容量换算 mA·h = 电流(mA) × 时间(h) mW·h = mA·h × 电压(V) mW·h = 功率(mW) × 时间(h) 1 mA·h @3.3V = 3.3 mW·h 推理任务预算 单次推理能量 = 平均功率 × 推理时间 电池寿命 = 电池能量 / 任务周期能耗 峰值电流决定电源设计 平均电流决定热设计 功耗预算表示方法 ① 峰值电流约束:I_peak ≤ 电源最大输出 ② 平均功耗约束:P_avg ≤ 热设计功耗(TDP) ③ 能量约束:E_task ≤ 电池容量 / 任务次数 ④ 待机电流约束:I_sleep ≤ 系统漏电预算 案例:100 mA·h 电池 @3.3V,推理任务平均 15 mA / 200 ms 单次推理能耗 = 15 mA × 3.3 V × 0.2 h ≈ 9.9 mW·h 电池总能量 = 100 mA·h × 3.3 V = 330 mW·h 可执行推理次数 ≈ 330 / 9.9 ≈ 33 次(理想情况)

3.1 核心电学量:电流、电压、功率与能量的物理定义

在TinyML功耗分析中,四个基本电学量构成了所有计算的基石。电流(I)表示单位时间内通过导体横截面的电荷量,单位安培(A),在嵌入式系统中常用毫安(mA)表示。电压(V)是推动电荷移动的电势差,单位伏特(V),TinyML设备常见工作电压为1.8V、2.5V、3.3V或5V。功率(P)是单位时间内消耗或转换的能量,计算公式为P = V × I,单位瓦特(W)或毫瓦(mW)。能量(E)则是功率对时间的积分,表示一段时间内消耗的总电量,单位焦耳(J)或瓦时(W·h)。

这四个量在TinyML场景中的实际意义需要结合具体硬件理解。例如,一颗Cortex-M4内核的MCU在运行推理时,若工作电压为3.3V,从数据手册查到典型工作电流为8mA,则其动态功率为3.3V × 8mA = 26.4mW。如果一次推理耗时150ms,则消耗的能量为26.4mW × 0.15s = 3.96mJ(毫焦耳)。这个能量值可以直接与电池容量进行换算,从而估算设备能执行多少次推理。

关键换算关系:功率是瞬时量,能量是累积量。在评估TinyML任务时,必须同时关注峰值功率(决定电源芯片和电容选型)和平均功率(决定电池寿命和散热设计)。例如,一个设备峰值电流达到200mA但仅持续2ms,平均电流可能只有5mA,两者对系统设计的影响完全不同。

3.2 mA·h与mW·h的换算逻辑及工程意义

电池容量通常以毫安时(mA·h)标注,它表示电池以某一电流放电时能持续的时间。例如,一颗标称100mA·h的电池,理论上以10mA电流放电可持续10小时。然而,mA·h并未考虑电压因素,不同电压平台的电池即使具有相同的mA·h值,其存储的总能量也不同。毫瓦时(mW·h)则直接表示能量容量,计算公式为:mW·h = mA·h × 电压(V)。

在TinyML系统设计中,这种换算具有直接的工程意义。假设系统使用一节3.7V锂电池,标称容量500mA·h,则其总能量为500 × 3.7 = 1850mW·h。如果系统在推理模式下的平均功耗为120mW,待机功耗为0.5mW,且设备每天执行100次推理(每次2秒),则每日能耗为:推理能耗 = 120mW × 2s × 100 = 24000mW·s = 6.67mW·h;待机能耗 = 0.5mW × 24h = 12mW·h;每日总能耗约18.67mW·h。电池续航天数 = 1850 / 18.67 ≈ 99天。这个计算过程展示了从mA·h到mW·h换算的必要性——如果不考虑电压,直接用500mA·h除以平均电流,会得到错误的结果。

参数符号单位TinyML典型值换算关系
电流ImA1μA(待机)~ 200mA(峰值)1A = 1000mA
电压VV1.8V / 3.3V / 3.7V—
功率PmW0.003mW(RTC)~ 660mW(峰值)P = V × I
能量EmW·h 或 mJ0.1mJ(单次推理)~ 100mW·h(电池)1mW·h = 3.6J
电池容量CmA·h10mA·h(纽扣)~ 3000mA·h(18650)mW·h = mA·h × V
工程经验:当比较不同电压平台的电池时,务必统一换算为mW·h。例如,一颗3.7V/500mA·h的锂电池(1850mW·h)与一颗5V/300mA·h的电池(1500mW·h),前者能量更大,尽管其mA·h数值更高。在TinyML产品选型时,应优先关注mW·h而非mA·h。

3.3 功耗预算的表示方法与设计流程

功耗预算(Power Budget)是TinyML系统设计中的核心约束文档,它定义了系统在各种工作状态下允许消耗的电流、功率和能量上限。一个完整的功耗预算通常包含四个维度:峰值电流约束、平均功耗约束、能量约束和待机电流约束。峰值电流约束决定了电源芯片的瞬时输出能力和去耦电容的配置;平均功耗约束影响散热方案和电池容量选择;能量约束直接关联电池寿命;待机电流约束则决定了系统在休眠模式下的漏电预算。

构建功耗预算的流程通常分为五步:第一步,列出系统所有工作状态(推理、空闲、待机、外设激活等);第二步,从数据手册或实测获取每种状态的电流和持续时间;第三步,计算每种状态的平均功率和单次任务能量;第四步,根据目标电池容量和寿命要求,反推允许的最大平均电流;第五步,验证峰值电流是否在电源芯片和电池的承受范围内。这个流程需要反复迭代,因为实际测量值往往与数据手册标称值存在差异。

// 功耗预算计算示例(伪代码)
float battery_mah = 100.0;        // 电池容量 mA·h
float battery_voltage = 3.3;      // 电池电压 V
float battery_mwh = battery_mah * battery_voltage;  // 330 mW·h

float inference_current_ma = 15.0;  // 推理平均电流
float inference_time_s = 0.2;       // 推理时长
float inference_energy_mwh = (inference_current_ma * battery_voltage) * (inference_time_s / 3600.0);
// = 49.5 mW * 0.0000556 h ≈ 0.00275 mW·h

float sleep_current_ua = 5.0;       // 待机电流 μA
float sleep_current_ma = sleep_current_ua / 1000.0;
float sleep_power_mw = sleep_current_ma * battery_voltage;  // 0.0165 mW

// 假设每小时执行10次推理,其余时间待机
float hourly_energy = 10 * inference_energy_mwh + sleep_power_mw * 1.0;
float battery_life_hours = battery_mwh / hourly_energy;
常见误区:许多工程师在计算电池寿命时,直接用电池mA·h除以平均电流,忽略了电压换算。例如,100mA·h电池、平均电流5mA,计算得20小时,但实际系统电压为3.3V,平均功率为16.5mW,电池能量为330mW·h,寿命应为20小时——这里恰好一致是因为电压在计算中约去了。然而,当系统存在升压或降压转换时,转换效率会打破这种平衡,必须使用功率或能量进行核算。

3.4 案例拆解:智能传感器节点的功耗预算分配

以一个典型的TinyML振动监测节点为例,该节点使用STM32L4系列MCU(内置Cortex-M4),搭载加速度传感器,通过BLE定期上报推理结果。系统约束为:使用CR2032纽扣电池(标称容量220mA·h,电压3.0V,但实际可用容量随放电电流增大而下降),目标工作寿命6个月(约4380小时)。

初始设计参数如下:MCU在8MHz运行时的电流为2.5mA,传感器激活电流为0.5mA,BLE发射峰值电流为15mA(持续5ms),MCU待机电流为1.1μA(RTC开启)。系统每5分钟唤醒一次,执行一次推理(耗时100ms),然后通过BLE发送结果(耗时20ms),其余时间处于待机状态。初步计算:单次唤醒周期能耗 = 推理能耗(3.0V × 3.0mA × 0.1s = 0.9mJ)+ BLE发射能耗(3.0V × 15mA × 0.005s = 0.225mJ)+ 唤醒开销(约0.1mJ),合计约1.225mJ。每天唤醒288次,每日能耗 = 288 × 1.225mJ = 352.8mJ = 0.098mW·h。待机能耗 = 1.1μA × 3.0V × 24h = 0.0792mW·h。每日总能耗约0.177mW·h。电池总能量 = 220mA·h × 3.0V = 660mW·h。理论寿命 = 660 / 0.177 ≈ 3729天,远超6个月目标。

然而,实际测试发现CR2032电池在脉冲负载下(BLE发射15mA)电压跌落明显,且电池实际可用容量仅为标称的70%左右。修正后可用能量 = 660 × 0.7 = 462mW·h,理论寿命约2610天,仍然充裕。但进一步考虑电池自放电(每年约1-2%)和温度影响,最终设计将唤醒周期调整为10分钟一次,以降低电池脉冲频率,延长电池实际使用寿命。这个案例说明,功耗预算不仅要考虑理论计算,还要结合电池放电特性、脉冲负载影响和实际环境因素进行修正。

案例复盘:功耗预算的核心不是追求极致的低功耗,而是在满足功能需求的前提下,合理分配各模块的能耗占比。本案例中,待机能耗占总能耗的45%,推理占50%,BLE仅占5%。优化方向应优先降低待机电流(如使用外部唤醒引脚替代RTC定时唤醒),而非压缩BLE发射时间。

3.5 常见误区与设计复盘

在TinyML功耗预算实践中,工程师常犯的错误包括:第一,混淆峰值功率与平均功率,导致电源芯片选型过大或过小;第二,忽略电压转换效率,当系统使用LDO或DC-DC时,实际从电池取用的能量高于负载消耗的能量;第三,未考虑电池内阻导致的电压跌落,在脉冲电流下电池端电压可能低于MCU的最低工作电压,造成系统复位;第四,将数据手册中的典型值当作设计值,未考虑温度、工艺偏差等因素。

正确的做法是建立包含最坏情况的功耗预算表,标注每个参数的来源(数据手册、实测、估算),并预留至少20%的余量。同时,在原型阶段使用功耗分析仪(如Joulescope或Nordic PPK2)进行实测,验证理论计算的准确性。对于电池供电设备,还应进行脉冲放电测试,确认电池在最大脉冲电流下的电压跌落是否在系统允许范围内。

总结:mA·h描述的是电荷容量,mW·h描述的是能量容量,两者通过电压关联。在TinyML功耗预算中,始终以能量(mW·h或mJ)作为统一度量单位,以功率(mW)作为瞬时约束,以电流(mA)作为硬件选型依据。只有将这三个维度同时纳入设计考量,才能构建出既满足性能又满足续航的可靠系统。