2、基础概念:电流(mA)、电压(V)、功率(mW)、能量(mWh)的定义及相互关系
TinyML 设备通常是电池供电的微控制器(MCU)系统,其功耗预算的起点并非复杂的算法优化,而是对四个基本电学物理量的准确理解:电流(I)、电压(V)、功率(P)和能量(E)。在嵌入式系统设计中,我们常以毫安(mA)、伏特(V)、毫瓦(mW)和毫瓦时(mWh)作为工程单位。这四个量构成了功耗分析的完整闭环:电压与电流的乘积决定瞬时功率,功率对时间的积分决定能量消耗,而能量与电池容量的比值直接决定续航时间。本节将系统梳理这些概念的定义、换算关系,并重点剖析它们在 TinyML 推理场景中的实际含义——尤其是“mA 电流”在数据手册中往往是一个动态变化的量,而非恒定值。
核心原理:从物理定义到工程单位
电流(I)表示单位时间内通过导体横截面的电荷量,国际单位是安培(A),在微控制器场景下更常用毫安(mA)表示。电压(V)是推动电荷移动的电势差,TinyML 设备常见工作电压为 1.8V、2.5V、3.3V 或 3.7V(锂电池标称值)。功率(P)是单位时间内做功的速率,直流电路中 P = V × I,当电压以伏特、电流以安培为单位时,功率单位为瓦特(W);若电流用毫安、电压用伏特,则功率单位为毫瓦(mW)。能量(E)是功率对时间的积分,表示累计消耗的总量,工程上常用毫瓦时(mWh)或毫安时(mAh)衡量电池容量。
这四个量的核心关系可归纳为三条基本公式:
- 瞬时功率:P(mW) = V(V) × I(mA)。例如 3.3V 下 MCU 工作电流为 5mA,则瞬时功耗为 16.5mW。
- 能量累计:E(mWh) = P(mW) × t(h)。若设备以 16.5mW 持续运行 2 小时,消耗能量为 33mWh。
- 电池容量换算:容量(mAh) = E(mWh) / V(V)。一块 100mAh 的锂电池在 3.7V 下存储能量为 370mWh。
在 TinyML 场景中,电流并非恒定值。MCU 在活跃模式(Active Mode)下执行浮点运算或卷积操作时,电流可能达到 10-50mA;进入睡眠模式(Sleep Mode)后电流可降至微安(μA)级别。因此,仅用单一电流值计算功耗会产生巨大误差,必须结合工作状态的时间占比进行加权估算。
判断方法:从数据手册提取关键参数
工程师在评估一颗 MCU 或传感器芯片的功耗时,需要从数据手册中提取以下关键电流参数,并理解其测试条件:
| 参数符号 | 典型名称 | 说明 | 典型值(以 Cortex-M4 为例) |
|---|---|---|---|
| Iactive | 活跃模式电流 | CPU 全速运行、Flash 读取、外设开启时的电流 | 5-15 mA @ 3.3V, 64MHz |
| Isleep | 睡眠模式电流 | CPU 停止、SRAM 保持、低功耗定时器运行 | 2-10 μA |
| Ideep-sleep | 深度睡眠电流 | 仅 RTC 和唤醒逻辑工作 | 0.5-2 μA |
| Ipeak | 峰值电流 | 无线发射或 Flash 写入时的瞬时最大电流 | 50-200 mA(若含 BLE) |
判断功耗水平时,应遵循以下操作流程:首先确定系统的工作电压范围,然后识别设备在推理、采样、通信、休眠四种状态下的典型电流,接着统计每种状态的持续时间占比,最后计算平均电流和总能量消耗。对于电池供电设备,还需考虑电池放电曲线——锂电池在 3.0V 以下时容量急剧下降,因此有效工作电压范围通常为 3.0-4.2V。
案例拆解:智能传感器节点的功耗估算
假设我们需要设计一个基于 TinyML 的振动异常检测节点,硬件包括:Cortex-M4 MCU(工作电压 3.3V)、加速度传感器(Iactive = 180μA,Isleep = 2μA)、以及一个可选 BLE 模块(仅在异常时开启,发射电流 15mA)。系统工作流程为:每 10 秒唤醒一次,读取 256 个加速度样本(耗时 20ms),运行一个轻量级 CNN 模型进行推理(耗时 35ms),然后回到睡眠状态。若检测到异常,则开启 BLE 发送报警数据(耗时 50ms)。
我们首先计算正常周期(无异常)的平均电流:
唤醒采样电流:180μA × 20ms = 3.6 μA·s
推理电流:8mA × 35ms = 280 μA·s
睡眠电流:2μA × (10s - 0.055s) ≈ 19.89 μA·s
总电荷:3.6 + 280 + 19.89 ≈ 303.5 μA·s
平均电流 = 303.5 μA·s / 10s ≈ 30.35 μA
若使用一块 200mAh 的 CR2032 纽扣电池(标称电压 3.0V),理论续航时间为:200mAh / 0.03035mA ≈ 6589 小时 ≈ 274 天。但实际续航会低于此值,因为电池自放电(每年约 1-2%)、电压下降导致电流上升、以及温度影响等因素。若每天发生 10 次异常报警,每次 BLE 发射消耗 15mA × 50ms = 0.75 μA·s,额外增加 7.5 μA·s/天,对整体续航影响不足 0.1%,可忽略不计。
这个案例揭示了 TinyML 功耗分析的核心逻辑:平均电流而非峰值电流决定续航。尽管推理时电流高达 8mA,但由于占空比极低(0.35%),其贡献仅占平均电流的 9.2%。相反,看似微小的 2μA 睡眠电流因占比 99.45% 的时间,贡献了 65.5% 的平均电流。因此,优化睡眠电流往往比优化推理速度更能延长续航。
常见误区与总结复盘
在功耗预算实践中,工程师常犯以下错误:
- 误区一:将峰值电流当作平均电流。例如直接使用 8mA 乘以 24 小时计算日耗电,导致续航估算严重偏小。正确做法是计算时间加权平均电流。
- 误区二:忽略电压变化对功率的影响。锂电池从 4.2V 放电至 3.0V 过程中,若 MCU 内部 LDO 输出固定 3.3V,则电池电流会随电压下降而上升,功率并非恒定。
- 误区三:混淆 mAh 和 mWh。mAh 是电荷量单位,mWh 是能量单位。在比较不同电压的电池时,必须统一换算为 mWh 才能公平对比。例如 3.7V/100mAh 的电池(370mWh)与 1.5V/200mAh 的电池(300mWh),前者能量更大。
- 误区四:忽视外设的静态电流。传感器、Flash 芯片、电平转换器在“关闭”状态下仍可能有 1-5μA 的漏电流,多个外设累计可能超过 MCU 的睡眠电流。
总结本节要点:电流、电压、功率、能量四者构成完整的功耗分析链条。在 TinyML 场景中,必须采用“状态-时间-电流”的加权平均法估算平均功耗,并注意电压波动、外设漏电和电池放电特性等二阶因素。掌握这些基础概念后,下一阶段才能准确评估推理周期对续航的具体影响,并制定有效的功耗优化策略。