4. 实验室功耗测量

TinyML 项目从开发板上的“能跑”到电池供电场景下的“能扛”,中间最关键的一道坎就是功耗测量。很多工程师在实验室里测出的待机电流是 20µA,一到现场却变成 2mA,原因往往不是硬件坏了,而是测量环境不标准、测量方法有漏洞。本章围绕“如何搭建一套可信的实验室功耗测量环境”,系统讲解测量链路设计、三种核心状态(空闲、运行、睡眠)的测量方法、功耗曲线的解读方式,以及从实验室数据推算真实场景续航的折算逻辑。

实验室功耗测量环境与状态测量链路 精密直流电源 4.0V / 限流 500mA 输出纹波 < 5mV 采样电阻 10mΩ / 0.1% 四线开尔文接法 待测 TinyML 设备 传感器 + MCU + 无线 电池接口处断开 高精度数字万用表 6.5 位 / 100k 采样率 或 高分辨率示波器 电压监测通道 状态切换控制(串口命令 / GPIO 触发) 空闲 → 运行 → 睡眠 → 空闲 循环 典型功耗曲线(电流-时间) 空闲 50µA 运行 15mA 睡眠 5µA 唤醒恢复

上图展示了实验室功耗测量的完整链路:精密直流电源为待测设备供电,采样电阻串联在电源与设备之间,高精度万用表或示波器跨接在采样电阻两端测量电压降,从而换算电流。同时,电压监测通道直接并联在设备供电端,用于确认设备工作电压是否稳定。整个测量系统由上位机通过串口或 GPIO 控制设备状态切换,记录不同状态下的电流波形。

4.1 核心原理:为什么不能直接用万用表测电池端电流

直接拿万用表串联在电池和开发板之间测电流,是初学者最常用的方法,但这种方法在 TinyML 场景下存在三个致命问题。第一,万用表的电流档内阻通常在 1Ω 到 10Ω 之间,当设备睡眠电流只有几微安时,这个内阻上的压降虽然不大,但会改变设备的实际供电电压,导致测量结果偏离真实值。第二,万用表的采样率通常只有每秒几次到几十次,而 TinyML 设备在运行推理时电流可能在毫秒级内从 5µA 跳到 20mA,万用表根本捕捉不到瞬态峰值。第三,万用表电流档的保险丝和分流器会引入额外的寄生电容和电感,在设备快速切换状态时可能引发电源振荡。

正确的做法是采用“采样电阻 + 差分电压测量”的方案。在电源和待测设备之间串联一个低阻值、高精度的采样电阻(通常 10mΩ 到 100mΩ),然后用示波器或高精度万用表测量电阻两端的电压差。根据欧姆定律 I = V/R,即可得到实时电流。这种方法的优势在于:采样电阻的阻值极小,对供电回路的影响可以忽略;示波器的高采样率(1MS/s 以上)能够完整记录电流瞬态;差分测量方式消除了共模干扰,测量精度远高于直接串联电流表。

关键参数选择:采样电阻的阻值需要在“可测量性”和“侵入性”之间权衡。10mΩ 电阻在 5µA 睡眠电流下只能产生 50nV 压降,普通示波器根本测不到;而 100Ω 电阻虽然能放大信号,但会引入 500mV 压降,严重影响设备工作。工程上常用的折中方案是:睡眠状态用 1kΩ 电阻配合高精度万用表测量,运行状态用 10mΩ 电阻配合示波器测量,两者通过继电器切换。

4.2 操作流程:搭建标准测量环境的五个步骤

搭建一套可信的实验室功耗测量环境,需要按照以下五个步骤逐步实施,每一步都有明确的验收标准。

  1. 断开电池,接入测量回路:将设备原有的电池或 USB 供电断开,在供电端串联采样电阻。注意要使用四线开尔文接法,即电流线和电压线分开,避免导线电阻引入误差。验收标准:用万用表测量设备供电端电压,与电源设定值偏差小于 1%。
  2. 配置精密直流电源:设置电源输出电压为设备标称电压(如 3.3V 或 4.2V),限流设置为设备最大电流的 1.5 倍(如 500mA)。开启远程感应(Remote Sense)功能,补偿线缆压降。验收标准:电源显示电压与设备端实测电压差小于 10mV。
  3. 连接测量仪器:示波器探头使用 1:1 衰减比(或 10:1 但需校准),差分探头或两通道相减模式测量采样电阻两端电压。设置示波器采样率为 1MS/s,时基根据测量状态调整(睡眠态用 100ms/div,运行态用 1ms/div)。验收标准:示波器能清晰显示 1mA 级别的电流变化,噪声底小于 0.1mA。
  4. 编写状态切换脚本:通过串口向设备发送命令,控制设备依次进入空闲、运行、睡眠状态。每个状态保持 10 秒以上,确保波形稳定。脚本同时记录时间戳,便于后续与示波器波形对齐。验收标准:设备能按脚本指令准确切换状态,串口日志无报错。
  5. 采集并保存数据:示波器使用“单次触发”模式,触发源设置为运行状态的电流上升沿,捕获完整的状态切换周期。将波形数据导出为 CSV 格式,同时记录环境温度、湿度、电源电压等参数。验收标准:CSV 文件包含至少 3 个完整的状态切换周期,数据无丢包。
测量状态 采样电阻 测量仪器 采样率/精度 持续时间
空闲(Idle) 100mΩ 6.5 位万用表 10 次/秒,0.1µA 分辨率 60 秒
运行(Active) 10mΩ 示波器 1MS/s 1mA 分辨率,瞬态捕捉 30 秒(含推理循环)
睡眠(Sleep) 1kΩ 6.5 位万用表 1 次/秒,1nA 分辨率 120 秒

上表列出了三种核心状态的标准测量配置。需要注意的是,睡眠状态的测量对仪器精度要求最高,1kΩ 采样电阻在 5µA 电流下产生 5mV 压降,6.5 位万用表可以轻松分辨。而运行状态的瞬态电流峰值可能达到 50mA,10mΩ 电阻上的压降只有 0.5mV,需要示波器的高采样率才能捕捉到完整的波形轮廓。

4.3 案例拆解:智能门锁振动传感器的功耗测量实战

某智能门锁项目采用 Nordic nRF52840 作为主控,外接加速度传感器 LIS2DH12,通过 TinyML 模型识别敲门和撬锁动作。项目要求使用 CR2032 纽扣电池供电,目标续航 12 个月。初始阶段,工程师直接用万用表串联电池测量,得到“待机电流 3µA”的结论,认为续航无忧。但实际装机后仅 3 周电池即耗尽。

重新搭建标准测量环境后,发现真实情况远非如此。使用 1kΩ 采样电阻和 6.5 位万用表测量睡眠状态,得到基础电流 2.8µA,与之前测量一致。但改用示波器 + 10mΩ 采样电阻测量唤醒过程时,发现每次传感器数据读取会产生一个 12ms 宽、峰值 8mA 的电流脉冲。更严重的是,设备每 500ms 唤醒一次读取传感器数据,而不是设计文档中声称的“每 10 分钟唤醒一次”。

进一步分析发现,问题出在传感器配置上。LIS2DH12 被设置为“高分辨率模式”而非“低功耗模式”,导致每次读取需要 12ms 的转换时间。同时,固件中的定时器没有正确进入低功耗状态,导致唤醒周期从预期的 600 秒缩短到 0.5 秒。通过示波器波形可以清晰看到:每个 500ms 周期内包含一个 12ms 的 8mA 脉冲,平均电流达到 8mA × 12ms / 500ms + 2.8µA ≈ 194µA。按照 CR2032 的 220mAh 容量计算,理论续航仅为 220mAh / 0.194mA ≈ 1134 小时,约 47 天,与实际 3 周耗尽基本吻合。

修复措施包括:将传感器切换到低功耗模式(转换时间降至 1.5ms),修正定时器配置使唤醒周期恢复为 600 秒,并在每次读取后立即进入 System OFF 模式。修复后重新测量,平均电流降至 2.9µA,理论续航达到 7.6 年,满足 12 个月的设计要求。这个案例说明,实验室测量必须覆盖完整的唤醒-读取-睡眠周期,仅测稳态电流会严重低估实际功耗。

风险提示:在测量睡眠电流时,务必确认设备所有外设(传感器、LED、无线模块)都已正确关闭。很多 MCU 的 GPIO 在悬空状态下会通过内部上拉/下拉电阻产生额外漏电流,导致睡眠电流比数据手册标称值高 10 倍以上。测量前应检查所有未使用的引脚是否配置为高阻输入或输出低电平。

4.4 常见误区与总结复盘

在实验室功耗测量中,以下五个误区最容易导致数据失真,需要特别注意。

  • 误区一:只测平均电流,不测瞬态峰值。TinyML 设备在无线发射或推理加速时,电流峰值可能达到平均值的 100 倍。如果电源或电池无法提供峰值电流,设备会复位或电压跌落。必须用示波器记录峰值电流和持续时间。
  • 误区二:忽略电源纹波对测量结果的影响。开关电源的纹波会叠加在采样电阻上,造成虚假的电流波动。建议使用线性电源或电池供电,并在采样电阻两端并联 10µF 陶瓷电容滤除高频噪声。
  • 误区三:测量时间过短,未覆盖完整工作周期。如果设备每 10 分钟才执行一次无线发送,而测量只持续了 1 分钟,就会漏掉最大的功耗事件。测量时间至少应覆盖 3 个完整的工作周期。
  • 误区四:忽略温度对功耗的影响。锂电池在低温下内阻增大,实际可用容量下降;MCU 的漏电流随温度升高而指数增长。实验室测量应在 25°C 恒温环境下进行,并记录温度数据。
  • 误区五:用数据手册参数代替实测。芯片数据手册中的睡眠电流通常是在理想条件下测得的,实际 PCB 上的漏电流、外部传感器的静态电流、电源转换器的静态损耗都会显著增加总功耗。一切以实测为准。

总结复盘时,建议将测量结果整理为“状态-电流-持续时间-占比”四元组表格,计算每个状态对总功耗的贡献率。例如:睡眠状态虽然电流只有 5µA,但如果占 99% 的时间,其功耗贡献为 5µA × 0.99 = 4.95µA;运行状态电流 15mA,但只占 0.5% 时间,贡献为 75µA。显然,优化睡眠电流比优化运行电流更有效。这种量化分析方法能够帮助团队聚焦最关键的功耗优化点。

经验之谈:在正式测量前,先用一个已知阻值的精密电阻(如 1kΩ 0.1%)代替待测设备,验证整个测量链路的准确性。如果测得的电流值与理论值偏差超过 2%,说明测量系统本身存在问题,需要先校准再测设备。

最后,实验室测量数据只是续航估算的输入之一。真实场景中,电池的老化、环境温度变化、无线信号的强弱都会影响实际功耗。建议在实验室测量基础上,预留 20% 的功耗余量,再进行现场实测验证。只有将实验室测量与现场数据相互印证,才能建立可信的续航模型。