

The INA226 is a high-side current shunt monitor with an integrated I2C interface, designed for precise measurement of voltage, current, and power. It features a built-in 16-bit analog-to-digital converter (ADC) for high-resolution measurements. The device is capable of operating with a supply voltage range of 2.7V to 5.5V, making it suitable for a wide variety of applications.








| Parameter | Value |
|---|---|
| Supply Voltage (Vcc) | 2.7V to 5.5V |
| Input Voltage Range | 0V to 36V |
| Current Measurement Range | Determined by external shunt resistor |
| ADC Resolution | 16-bit |
| Communication Interface | I2C (up to 1 MHz) |
| Operating Temperature | -40°C to +125°C |
| Power Consumption | 330 µA (typical) |
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | V+ | Positive supply voltage (2.7V to 5.5V) |
| 2 | IN+ | Positive input for current shunt voltage |
| 3 | IN- | Negative input for current shunt voltage |
| 4 | GND | Ground |
| 5 | SCL | I2C clock line |
| 6 | SDA | I2C data line |
| 7 | ALERT/RDY | Alert or Ready output (configurable) |
| 8 | ADDR | I2C address selection pin |
Below is an example of how to use the INA226 with an Arduino UNO to measure current and voltage:
#include <Wire.h>
// INA226 I2C address (default is 0x40, adjust if ADDR pin is configured differently)
#define INA226_ADDRESS 0x40
// INA226 register addresses
#define CONFIG_REGISTER 0x00
#define SHUNT_VOLTAGE_REGISTER 0x01
#define BUS_VOLTAGE_REGISTER 0x02
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Configure the INA226 (example configuration)
Wire.beginTransmission(INA226_ADDRESS);
Wire.write(CONFIG_REGISTER); // Point to the configuration register
Wire.write(0x45); // MSB of configuration (example value)
Wire.write(0x27); // LSB of configuration (example value)
Wire.endTransmission();
}
void loop() {
// Read bus voltage
Wire.beginTransmission(INA226_ADDRESS);
Wire.write(BUS_VOLTAGE_REGISTER); // Point to the bus voltage register
Wire.endTransmission();
Wire.requestFrom(INA226_ADDRESS, 2); // Request 2 bytes of data
if (Wire.available() == 2) {
uint16_t busVoltageRaw = (Wire.read() << 8) | Wire.read();
float busVoltage = busVoltageRaw * 1.25 / 1000; // Convert to volts
Serial.print("Bus Voltage: ");
Serial.print(busVoltage);
Serial.println(" V");
}
delay(1000); // Wait 1 second before the next reading
}
No I2C Communication:
Incorrect Voltage or Current Readings:
Alert Pin Not Functioning:
Q: Can the INA226 measure negative currents?
A: No, the INA226 is designed for high-side current sensing and cannot measure negative currents.
Q: What is the maximum current the INA226 can measure?
A: The maximum current depends on the value of the shunt resistor and the maximum input voltage range of the INA226.
Q: Can I use the INA226 with a 3.3V microcontroller?
A: Yes, the INA226 operates with a supply voltage range of 2.7V to 5.5V, making it compatible with 3.3V systems.