ina226测电流的使用
·
INA226 高精度 I²C 电流/电压/功率监测芯片 —— 完整介绍与使用指南
制造商:Texas Instruments (TI)
器件型号:INA226
数据手册:TI 官方 SBOS547 / Rev. B
一、芯片概述
INA226 是 TI 推出的一款带有 I²C / SMBus 兼容接口的高精度电流分流器和功率监测器。它通过测量分流电阻(Shunt Resistor)两端的微小压降来计算电流,同时直接测量总线电压(Bus Voltage),并在芯片内部通过乘法器自动计算出功率值。
简单来说:你给它一个采样电阻的值,它帮你把电流、电压、功率都算好,吐出来给你。
二、关键特性一览
- 总线电压测量范围:0V ~ 36V(共模)
- 分流电压输入范围:±81.92 mV(差分)
- ADC 分辨率:16-bit Δ-Σ ADC(LSB = 2.5 μV / 1.25 mV)
- 供电电压 (VS):2.7V ~ 5.5V
- 接口:I²C / SMBus 兼容(100kHz / 400kHz)
- I²C 地址:最多 16 个可编程地址(通过 A0、A1 引脚配置)
- Alert 功能:可编程过流/过压/过功率报警(开漏输出)
- 平均功能:可选 1 / 4 / 16 / … / 1024 次均值
- 封装:10-Pin VSSOP
三、引脚定义(10-Pin VSSOP)
┌─────────────┐
A1 ─┤ 1 10 ├─ IN+
A0 ─┤ 2 9 ├─ IN−
ALERT ─┤ 3 8 ├─ VBUS
SDA ─┤ 4 7 ├─ GND
SCL ─┤ 5 6 ├─ VS
└─────────────┘
| Pin | 名称 | 类型 | 说明 |
|---|---|---|---|
| 1 | A1 | 输入 | I²C 地址选择位 1 |
| 2 | A0 | 输入 | I²C 地址选择位 0 |
| 3 | ALERT | 输出 | 报警输出(开漏) |
| 4 | SDA | I/O | I²C 数据线 |
| 5 | SCL | 输入 | I²C 时钟线 |
| 6 | VS | 电源 | 芯片供电 (2.7-5.5V) |
| 7 | GND | 地 | 电源地 |
| 8 | VBUS | 输入 | 总线电压 (0-36V) |
| 9 | IN− | 输入 | 分流电阻负载侧 |
| 10 | IN+ | 输入 | 分流电阻电源侧 |
四、测量原理
4.1 核心公式
- 分流电压:V_shunt = I_load × R_shunt
- 电流计算:I = V_shunt / R_shunt
- 功率计算:P = V_bus × I
4.2 校准寄存器 (Calibration Register)
为了让芯片直接输出工程单位(安培/瓦特),需要配置校准寄存器 (05h):
Cal = 0.00512 / (R_shunt × Current_LSB)
五、内部寄存器速查
| 地址 | 名称 | 读写 | 说明 |
|---|---|---|---|
| 00h | Configuration | R/W | 配置模式、ADC时间、平均次数 |
| 01h | Shunt Voltage | RO | 分流电压 (LSB = 2.5 μV) |
| 02h | Bus Voltage | RO | 总线电压 (LSB = 1.25 mV) |
| 03h | Power | RO | 功率值 |
| 04h | Current | RO | 电流值 |
| 05h | Calibration | R/W | 校准值 |
| 06h | Mask/Enable | R/W | 报警使能 |
| 07h | Alert Limit | R/W | 报警阈值 |
六、典型应用电路
推荐高侧检测(High-Side Sensing):
V_SUPPLY (+) ────┬────[IN+] INA226
[R_shunt]
│
Load ──────────────┴────[IN−]
VBUS ──→ V_SUPPLY(+)
VS ────→ 3.3V
GND ───→ GND
SCL ───→ MCU SCL (加上拉)
SDA ───→ MCU SDA (加上拉)
七、分流电阻选型
公式:R_shunt ≤ 0.08192 / I_max
| 最大电流 | 推荐阻值 | 备注 |
|---|---|---|
| ≤ 3A | 0.02 Ω (20mΩ) | 常用 |
| ≤ 10A | 0.005 Ω (5mΩ) | 大电流 |
| ≤ 20A | 0.002 Ω (2mΩ) | 需考虑散热 |
八、Arduino 示例代码
include <Wire.h>
define INA226_ADDR 0x40
define REG_CONFIG 0x00
define REG_SHUNT_V 0x01
define REG_BUS_V 0x02
define SHUNT_OHM 0.02
void writeReg(uint8_t reg, uint16_t val) {
Wire.beginTransmission(INA226_ADDR);
Wire.write(reg);
Wire.write(val >> 8);
Wire.write(val & 0xFF);
Wire.endTransmission();
}
uint16_t readReg(uint8_t reg) {
Wire.beginTransmission(INA226_ADDR);
Wire.write(reg);
Wire.endTransmission();
Wire.requestFrom(INA226_ADDR, 2);
return (Wire.read() << 8) | Wire.read();
}
void setup() {
Wire.begin();
Serial.begin(115200);
writeReg(REG_CONFIG, 0x4127); // 连续测量模式
}
void loop() {
int16_t rawShunt = (int16_t)readReg(REG_SHUNT_V);
float vShunt_mV = rawShunt * 2.5 / 1000.0;
float current_A = vShunt_mV / 1000.0 / SHUNT_OHM;
uint16_t rawBus = readReg(REG_BUS_V);
float vBus_V = (rawBus >> 3) * 1.25 / 1000.0;
Serial.print("Vbus="); Serial.print(vBus_V, 3);
Serial.print("V I="); Serial.print(current_A * 1000.0, 2);
Serial.println("mA");
delay(1000);
}
九、注意事项
- IN+ 和 IN− 必须采用开尔文连接(Kelvin Connection)。
- 确保分流电压不超过 ±81.92mV。
- 总线电压 VBUS 不要超过 36V。
- 芯片供电 VS 旁务必放置 0.1μF 退耦电容。
十、总结
INA226 是一款高精度、工业级的电流/功率监测芯片,相比 INA219 具有更高的分辨率和更多的功能,非常适合用于电池管理系统、服务器电源监控及精密能耗测试。
更多推荐


所有评论(0)