功耗测量:基于INA226的功耗测量原理深度解析

1. 概述

本报告基于德州仪器(TI)INA226数据手册(SBOS547B),全面总结该36V、16位数字电流、电压和功率监测器的原理、配置与应用。报告核心在于严谨推导其内部计算公式 ,并阐明其通过可编程校准片上硬件计算,将复杂模拟测量转化为直接可读工程值的设计哲学。

2. 器件核心架构与测量原理

2.1 功能框图与核心特性

INA226集成了高精度16位Δ-Σ ADC、数字处理引擎及I²C接口。其核心是通过测量分流电阻电压总线电压 ,经内部计算直接输出电流、功率值。

  • 接口: I²C/SMBus,支持16个可编程地址
  • 量程: 总线电压 0-36V;分流电压(即采样电阻两端的电压) ±81.92mV
  • 精度: 增益误差最大 0.1%,失调电压最大 10µV
  • 供电: 单电源 2.7-5.5V

2.2 电流与功率测量基础

  • 电流 : 基于欧姆定律,间接测量分流电阻压降 VSHUNTV_{SHUNT}VSHUNT。
  • 功率 : 基于公式 P=I×VP = I \times VP=I×V,由内部计算得出,非直接测量
  • 关键前提 : 必须同时正确连接 VBUS 引脚和分流电阻,功率测量与高/低侧检测方式无关。

2.3 高侧与低侧检测

  • 高侧检测 : 电阻位于电源与负载间。
    • 优点: 可检测负载对地短路(通过检测共模电压接近0V来判断短路)。
    • 缺点: 共模电压高,对测量电路要求高。
  • 低侧检测 : 电阻位于负载与地间。
    • 优点: 电路简单,共模电压低。
    • 缺点: 无法检测对地短路,可能引入地平面噪声。
  • INA226优势: 支持 0-36V 宽共模电压范围,完美兼容两种配置。

3. 关键配置与参数设计

3.1 采样率与数据更新

内核ADC采样率固定为 500 kHz 。用户通过配置转换时间 (140 µs ~ 8.244 ms)和平均次数(1 ~ 1024),在精度、噪声抑制与数据更新率之间权衡:

更新周期=(分流转换时间+总线转换时间)×平均次数 \text{更新周期} = (\text{分流转换时间} + \text{总线转换时间}) \times \text{平均次数} 更新周期=(分流转换时间+总线转换时间)×平均次数

设计提示:更长的转换时间提供更强数字滤波,提高单次测量精度;更多的平均次数能进一步平滑随机噪声。

3.2 分流电阻 (RSHUNTR_{SHUNT}RSHUNT) 选型

选型是多重约束的权衡过程:

  1. 量程约束 : IMAX×RSHUNT≤81.92mVI_{MAX} \times R_{SHUNT} \le 81.92 \text{mV}IMAX×RSHUNT≤81.92mV (ADC满量程)。
  2. 精度考量 : 较大的 RSHUNTR_{SHUNT}RSHUNT 可产生更大的信号幅度,提高信噪比,并降低失调电压带来的相对误差。
  3. 功耗与温漂 : P=I2×RSHUNTP = I^2 \times R_{SHUNT}P=I2×RSHUNT,需确保电阻额定功率充足,防止温升导致阻值漂移引入误差。

4. 核心公式体系与详细推导

以下推导所用符号与常数定义如下:

  • SR,BR,CR,PWR,CALSR, BR, CR, PWR, CALSR,BR,CR,PWR,CAL: 分别对应分流电压、总线电压、电流、功耗、校准寄存器的十进制值
  • CurrentLSBCurrentLSBCurrentLSB: 电流LSB,用户定义。
  • RSHUNTR_{SHUNT}RSHUNT: 分流电阻值 (Ω\OmegaΩ)。
  • 固定常数
    • 分流电压 LSB = 2.5×10−6 V/bit2.5 \times 10^{-6} \text{ V/bit}2.5×10−6 V/bit
    • 总线电压 LSB = 1.25×10−3 V/bit1.25 \times 10^{-3} \text{ V/bit}1.25×10−3 V/bit
    • 功率 LSB = 25×CurrentLSB25 \times CurrentLSB25×CurrentLSB

4.1 公式(2)CR=SR×CAL2048CR = \frac{SR \times CAL}{2048}CR=2048SR×CAL 的推导

目标 : 建立电流寄存器值 CRCRCR 与原始分流电压 SRSRSR 及校准值 CALCALCAL 的关系。

推导步骤

  1. 物理关系 : 根据欧姆定律,实际电流 I=VSHUNTRSHUNTI = \frac{V_{SHUNT}}{R_{SHUNT}}I=RSHUNTVSHUNT。
  2. 寄存器转换 : 分流电压 VSHUNT=SR×2.5×10−6V_{SHUNT} = SR \times 2.5 \times 10^{-6}VSHUNT=SR×2.5×10−6。
  3. 用户输出定义 : INA226允许用户定义 CurrentLSBCurrentLSBCurrentLSB,使得 I=CR×CurrentLSBI = CR \times CurrentLSBI=CR×CurrentLSB。 (a)\quad \text{(a)}(a)
  4. 联立上述关系
    CR×CurrentLSB=SR×2.5×10−6RSHUNT CR \times CurrentLSB = \frac{SR \times 2.5 \times 10^{-6}}{R_{SHUNT}} CR×CurrentLSB=RSHUNTSR×2.5×10−6
  5. 引入校准寄存器 : 数据手册给出校准公式 CAL=0.00512CurrentLSB×RSHUNTCAL = \frac{0.00512}{CurrentLSB \times R_{SHUNT}}CAL=CurrentLSB×RSHUNT0.00512。 (b)\quad \text{(b)}(b)
    将公式 (b)\text{(b)}(b) 变形得 CurrentLSB×RSHUNT=0.00512CALCurrentLSB \times R_{SHUNT} = \frac{0.00512}{CAL}CurrentLSB×RSHUNT=CAL0.00512。
  6. 代入并求解 CRCRCR
    CR×CurrentLSB=SR×2.5×10−6×CAL0.00512×CurrentLSB CR \times CurrentLSB = SR \times 2.5 \times 10^{-6} \times \frac{CAL}{0.00512}\times CurrentLSB CR×CurrentLSB=SR×2.5×10−6×0.00512CAL×CurrentLSB
    注意到 0.00512=2048×2.5×10−60.00512 = 2048 \times 2.5 \times 10^{-6}0.00512=2048×2.5×10−6,代入上式:
    CR×CurrentLSB=SR×2.5×10−6×CAL2048×2.5×10−6×CurrentLSB=SR×CAL2048×CurrentLSB CR \times CurrentLSB = SR \times 2.5 \times 10^{-6} \times \frac{CAL}{2048 \times 2.5 \times 10^{-6}} \times CurrentLSB= \frac{SR \times CAL}{2048}\times CurrentLSB CR×CurrentLSB=SR×2.5×10−6×2048×2.5×10−6CAL×CurrentLSB=2048SR×CAL×CurrentLSB
    两边同时除以 CurrentLSBCurrentLSBCurrentLSB,即得到:
    CR=SR×CAL2048 \boxed{CR = \frac{SR \times CAL}{2048}} CR=2048SR×CAL
    结论 :此公式描述了芯片内部利用 CALCALCAL 将原始电压 SRSRSR 转换为电流比例值 CRCRCR 的固定算法。

4.2 公式(3)PWR=CR×BR20000PWR = \frac{CR \times BR}{20000}PWR=20000CR×BR 的推导

目标 : 建立功率寄存器值 PWRPWRPWR 与电流值 CRCRCR、总线电压 BRBRBR 的关系。

推导步骤

  1. 物理关系 : 实际功率 P=I×VBUSP = I \times V_{BUS}P=I×VBUS。
  2. 寄存器转换
    • 实际电流 I=CR×CurrentLSBI = CR \times CurrentLSBI=CR×CurrentLSB。
    • 总线电压 VBUS=BR×1.25×10−3V_{BUS} = BR \times 1.25 \times 10^{-3}VBUS=BR×1.25×10−3。
  3. 代入物理公式
    P=(CR×CurrentLSB)×(BR×1.25×10−3)=CR×BR×(CurrentLSB×1.25×10−3)(c) P = (CR \times CurrentLSB) \times (BR \times 1.25 \times 10^{-3}) = CR \times BR \times (CurrentLSB \times 1.25 \times 10^{-3}) \quad \text{(c)} P=(CR×CurrentLSB)×(BR×1.25×10−3)=CR×BR×(CurrentLSB×1.25×10−3)(c)
  4. 用户输出定义 : INA226定义 PowerLSB=25×CurrentLSBPowerLSB = 25 \times CurrentLSBPowerLSB=25×CurrentLSB,使得 P=PWR×PowerLSBP = PWR \times PowerLSBP=PWR×PowerLSB。 (d)\quad \text{(d)}(d)
  5. 联立 和
    PWR×(25×CurrentLSB)=CR×BR×(CurrentLSB×1.25×10−3) PWR \times (25 \times CurrentLSB) = CR \times BR \times (CurrentLSB \times 1.25 \times 10^{-3}) PWR×(25×CurrentLSB)=CR×BR×(CurrentLSB×1.25×10−3)
  6. 两边同时除以 CurrentLSBCurrentLSBCurrentLSB 并求解 PWRPWRPWR
    PWR×25=CR×BR×1.25×10−3 PWR \times 25 = CR \times BR \times 1.25 \times 10^{-3} PWR×25=CR×BR×1.25×10−3
    PWR=CR×BR×1.25×10−325=CR×BR20000 PWR = CR \times BR \times \frac{1.25 \times 10^{-3}}{25} = \frac{CR \times BR}{20000} PWR=CR×BR×251.25×10−3=20000CR×BR
    结论 :此公式描述了芯片内部执行功率乘法的固定算法。常数 200002000020000 来源于固定比率 25/0.0012525 / 0.0012525/0.00125。

4.3 完整公式总结

公式编号 公式 说明
(1) CAL=0.00512CurrentLSB×RSHUNTCAL = \frac{0.00512}{CurrentLSB \times R_{SHUNT}}CAL=CurrentLSB×RSHUNT0.00512 校准寄存器计算。用户初始化配置的核心。
(2) CR=SR×CAL2048CR = \frac{SR \times CAL}{2048}CR=2048SR×CAL 电流寄存器内部算法。芯片硬件自动执行。
(3) PWR=CR×BR20000PWR = \frac{CR \times BR}{20000}PWR=20000CR×BR 功率寄存器内部算法。芯片硬件自动执行。
(4) Iactual=CR×CurrentLSBI_{actual} = CR \times CurrentLSBIactual=CR×CurrentLSB 实际电流输出。用户读取后的一次乘法。
(5) Pactual=PWR×(25×CurrentLSB)P_{actual} = PWR \times (25 \times CurrentLSB)Pactual=PWR×(25×CurrentLSB) 实际功率输出。用户读取后的一次乘法。
(6) CurrentLSB≈Imax32768CurrentLSB \approx \frac{I_{max}}{32768}CurrentLSB≈32768Imax 电流LSB选择指南。最大化分辨率。
(7) CALcorrected=trunc[CAL×IactualIdevice]CAL_{corrected} = \text{trunc}[ CAL \times \frac{I_{actual}}{I_{device}} ]CALcorrected=trunc[CAL×IdeviceIactual] 系统级误差补偿。用于生产校准,提升绝对精度。

5. 设计流程与高级应用

5.1 初始化与使用流程

  1. 需求分析 : 确定 ImaxI_{max}Imax, 精度要求, 更新速率。
  2. 选型 RSHUNTR_{SHUNT}RSHUNT: 基于量程、精度、功耗权衡。
  3. 确定 CurrentLSBCurrentLSBCurrentLSB : 使用公式 (6) 计算并取整。
  4. 计算并写入 CALCALCAL : 使用公式 (1)
  5. 配置工作模式: 设置转换时间、平均次数等。
  6. (可选)系统校准 : 使用高精度基准和公式 (7) 修正 CALCALCAL。
  7. 读取与换算 : 读取 CR,PWRCR, PWRCR,PWR,通过公式 (4) , (5) 获得最终值。

5.2 动态量程切换实现

虽然INA226本身不支持,但可通过外部开关电路实现:

  • 方案: 使用MOSFET或继电器切换并联的不同阻值分流电阻。
  • 关键点
    1. 切换后必须重新计算并写入新的 CALCALCAL 值 (因 RSHUNTR_{SHUNT}RSHUNT 改变)。
    2. 需处理切换瞬态,等待测量稳定。
    3. 需考虑开关导通电阻引入的误差。

6. 设计哲学与总结

INA226的成功源于其清晰的功能划分用户友好设计

  1. 硬件化复杂计算 : 将高精度的 V/IV/IV/I 转换(公式2)和 I×VI \times VI×V 乘法(公式3)由专用硬件实时完成,解放MCU。
  2. 一次性系统标定 : 通过可编程的 CALCALCAL 寄存器(公式1),将模拟领域的误差补偿问题,转化为一次性的数字配置问题。经过系统校准(公式7)后,CALCALCAL 值蕴含了整个系统的增益误差补偿。
  3. 极致灵活性 : 用户定义的 CurrentLSBCurrentLSBCurrentLSB(公式6)允许为每个应用定制最佳的分辨率和量程,而非使用固定、可能不理想的刻度。
  4. 简单最终接口: 所有复杂计算在芯片内完成,最终呈现给用户的,仅是简单的寄存器读取和一次线性乘法(公式4, 5),极大降低了软件复杂度和开发门槛。

结论 :INA226通过精妙的公式体系(1-7),将高精度模拟测量、实时计算和系统校准的复杂性封装于芯片之内,最终为用户提供一个配置灵活、读数简单、结果精准的数字接口解决方案,是高性能电源监控系统的基石器件。

相关推荐
Strange_Head2 小时前
快速入门 MQTT:从 Broker、发布订阅到双机通信
嵌入式硬件
LCG元3 小时前
STM32实战:基于STM32F103的MQTT协议通信(EMQ X Broker)
stm32·单片机·嵌入式硬件
zmj3203243 小时前
51单片机
单片机·嵌入式硬件·51单片机
zmj3203243 小时前
MCS-51单片机
单片机·嵌入式硬件·51单片机
小柯博客3 小时前
从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(八)
c语言·git·stm32·单片机·嵌入式硬件·嵌入式·yocto
421!12 小时前
GPIO工作原理以及核心
开发语言·单片机·嵌入式硬件·学习
cmpxr_17 小时前
【单片机】STM32的启动流程(Keil)
stm32·单片机·嵌入式硬件
广药门徒17 小时前
嵌入式常用通信协议速率对比及布线要点全解析
单片机·嵌入式硬件
cmpxr_18 小时前
【单片机】RAM和ROM
单片机·嵌入式硬件