IN INA226 测试指南
ESP32 2.8寸屏 · I²C 0x44

INA226 电压电流功率
快速测试资料

用一只 100Ω / 1W 电阻即可完成稳定、可复现的检测。包含接线、ZERO 操作、万用表复核,以及故障处理。

0 ~ 36V 测量电压 I²C 通信接口 16 位 分辨率 1% 精度
INA226 红色电压电流检测模块正面

INA226 模块主要参数

数据来自厂家详情页和 TI 数据手册。标注冲突的条目以实物为准。

主控芯片INA226
功能电压/电流/功率监测
通信接口I²C / SMBus
I²C 地址0x40 ~ 0x4F (16个)
电源电压2.7V ~ 5.5V
测量电压0V ~ 36V
测量电流-20A ~ +20A 注: ≤10A
精度1%
分辨率16 位 (1.25mA / 1.25mV)
输入失调电压±10µV
分流电阻 (标称)R010 = 0.010Ω
工作温度-40°C ~ 125°C
板尺寸27mm × 20.1mm
固定孔3mm
静态电流< 1mA (典型 330µA)
本项目 I²C 地址0x44

两组线路,地线全部共地

小排针负责给芯片供电和通信;VIN/VOUT 负责让被测电流经过板载分流电阻。

ESP32 与 INA226

INA226 VCCESP32 3V3
INA226 GNDESP32 GND
INA226 SDAGPIO 27
INA226 SCLGPIO 22
ALERT不用接
注意 模块 VCC 接 3.3V;外部负载电源不要接到 VCC。

模块背面端子

INA226 模块背面

背面从左到右:VIN · GND · GND · VOUT

负载测试接法

外部电源正极 +
→
INA226VIN
板内 R010
INA226VOUT
→
测试负载100Ω / 1W
→
公共端GND
重要 外部电源负极、INA226 GND、ESP32 GND 必须连接在一起。

先看接线,再看真实测试

接线动画用于认清每根线的去向;实拍视频记录可调电源、ESP32 屏幕和负载电流随电压变化的过程。

Fritzing 动画

完整接线顺序

包含 ESP32 的 3V3、GND、GPIO27、GPIO22,以及外部电源、VIN、VOUT、100Ω 负载和公共地。

实物演示

可调电源测试

观察电压、电流和功率同步变化。实测前仍要空载归零。

不用 LED 和电机,先用纯电阻

LED 电流受正向压降影响,电机启动和转动电流会变化。100Ω 电阻更适合判断模块是否正常。

1

先断负载电源

ESP32 和 INA226 保持通信,VOUT 暂不接负载。

2

空载按一次 ZERO

按钮变色并显示 ZERO OK,表示零点已经记录。

3

接 100Ω / 1W

VOUT → 电阻 → GND,再接通外部电源。

4

核对电流

用 I = V ÷ R 计算,显示值应接近理论值。

快速计算器

理论电流 50.00 mA
电阻功耗 0.250 W

100Ω 负载参考值

电阻两端电压理论电流功耗
3.58 V35.8 mA0.128 W
5.00 V50.0 mA0.250 W
6.00 V60.0 mA0.360 W
7.42 V74.2 mA0.551 W
提示 7.42V 时约 0.55W,必须使用 1W 或更高功率电阻。
0.034 A 等于 34mA,不是 3.4mA

使用万用表串联复核

红表笔插 10A 孔,黑表笔插 COM,选择直流电流 10A 档。

VOUT → 红表笔 → 万用表 → 黑表笔 → 100Ω → GND

简单显示,功能完整

7.42 V 电压 VOLTAGE

INA226 测得的 VOUT 母线电压。

74.2 mA 电流 CURRENT

取样压降换算后的负载电流。

0.551 W 功率 POWER

实时电压乘以实时电流。

mAh / mWh 累计数据

电量、能量、峰值和运行时间。

ZERO

只在空载时操作,用于消除约 ±1mA 的零漂。可触摸屏幕 ZERO,或短按 BOOT。

RESET

长按 BOOT 约 1.5 秒,清除累计 mAh、mWh、峰值和计时。不用于校准实时电流。

有电压,电流一直约 3mA

不是芯片真假问题,也不是 ESP32 不会计算,而是板上分流取样线路开路。

现象

电压正常变化

外部电压变化时,ESP32 电压读数同步变化,I²C 通信和母线电压通道正常。

证据

原始压降几乎不变

负载电流变化时,shunt_mV 仍约 0.020 ~ 0.025mV,程序只能算出约 3mA。

根因

取样线开路

更换原装 INA226 仍无改善;补通取样线路后,电流立即开始随负载变化。

处理

补线并两点校准

修复后使用 3.58V 和 7.42V 两点复核,校准为 0.00807Ω。

不要直接给程序乘固定倍数 如果万用表电流变化而 ESP 读数完全不变,先查 R010 两端、IN+、IN− 的连通性。补线位置必须按照 PCB 网络确认。
关于 0.010Ω 与 0.00807Ω 板上 R010 = 0.010Ω 为标称值;0.00807Ω 是修复样板的校准值,只适用于当前样板。其他模块必须单独核对。

测试电压怎么选?

INA226 芯片的母线共模范围为 0 ~ 36V,逻辑供电为 2.7 ~ 5.5V。实际使用范围还受端子、PCB 和分流电阻功耗限制。

客户演示建议使用 3 ~ 7.5V 和 100Ω / 1W,安全、直观。
查看 TI INA226 官方资料 ↗

不能直接使用 INA226 程序

INA228 使用不同的寄存器和换算方式,支持温度、能量和电荷累计。可以复用 ESP32 屏幕和 I²C 接线框架,但传感器驱动必须单独编写。

INA228 母线范围最高 85V,但实际耐压需满足 PCB 和外围器件要求。
查看 TI INA228 官方资料 ↗

核心初始化与采样

以下为 ESP32 + INA226 的关键代码片段,完整源码可在下载区获取。

main.cpp — INA226 初始化与采样
constexpr uint8_t I2C_SDA = 27;
constexpr uint8_t I2C_SCL = 22;
constexpr uint8_t INA_ADDR = 0x44;
constexpr float   SHUNT_OHMS = 0.00807f;  // 本样板校准值

static bool initIna226() {
  uint16_t manufacturer = 0, dieId = 0;
  if (!readRegister(REG_MANUFACTURER, manufacturer)) return false;
  if (!readRegister(REG_DIE_ID, dieId)) return false;
  if (manufacturer != 0x5449 || (dieId & 0xFFF0) != 0x2260) return false;
  // AVG=16, bus/shunt 1.1ms, continuous mode
  return writeRegister(REG_CONFIG, 0x0527);
}

static bool sampleIna226(Reading &out) {
  uint16_t rawBus = 0, rawShunt = 0;
  if (!readRegister(REG_BUS_V, rawBus)) return false;
  if (!readRegister(REG_SHUNT_V, rawShunt)) return false;
  out.busV     = rawBus * 0.00125f;
  out.shuntMv  = (int16_t)rawShunt * 0.0025f;
  out.currentA = ((out.shuntMv - zeroOffsetMv) / 1000.0f) / SHUNT_OHMS;
  out.powerW   = out.busV * out.currentA;
  return true;
}

网页、程序与说明放在一起

下载的是副本,项目中的原始照片、程序和 Fritzing 文件均保持原位。