

The INA226 is a high-side current shunt and voltage monitor with an integrated I2C interface. It is designed to measure both current and voltage with high precision, making it ideal for power monitoring applications. The device is widely used in battery management systems, energy monitoring, and industrial equipment where accurate power measurement is critical. Its ability to measure shunt voltage, bus voltage, and calculate power makes it a versatile component for a variety of electronic projects.








The INA226 offers a range of features and specifications that make it a reliable and efficient choice for power monitoring applications.
The INA226 is available in a small 10-pin VSSOP package. Below is the pinout and description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VBUS | Bus voltage input (0V to 36V) |
| 2 | GND | Ground |
| 3 | SCL | I2C clock line |
| 4 | SDA | I2C data line |
| 5 | ALERT | Alert output (programmable threshold) |
| 6 | NC | No connection |
| 7 | NC | No connection |
| 8 | VSHUNT+ | Positive input for shunt voltage measurement |
| 9 | VSHUNT- | Negative input for shunt voltage measurement |
| 10 | VCC | Power supply input (2.7V to 5.5V) |
The INA226 is straightforward to use in a circuit, but proper configuration and calibration are essential for accurate measurements.
Below is an example of how to use the INA226 with an Arduino UNO to measure voltage and current:
#include <Wire.h>
#include <Adafruit_INA226.h>
// Create an INA226 object
Adafruit_INA226 ina226;
void setup() {
Serial.begin(9600); // Initialize serial communication
while (!Serial) {
delay(10); // Wait for Serial Monitor to open
}
// Initialize the INA226 sensor
if (!ina226.begin()) {
Serial.println("Failed to find INA226 chip");
while (1) {
delay(10); // Halt if sensor initialization fails
}
}
Serial.println("INA226 initialized successfully");
// Configure the INA226
ina226.setCalibration_32V_2A(); // Set calibration for 32V bus and 2A max current
}
void loop() {
// Read bus voltage
float busVoltage = ina226.getBusVoltage_V();
// Read shunt voltage
float shuntVoltage = ina226.getShuntVoltage_mV();
// Calculate current
float current = ina226.getCurrent_mA();
// Calculate power
float power = ina226.getPower_mW();
// Print the measurements
Serial.print("Bus Voltage: ");
Serial.print(busVoltage);
Serial.println(" V");
Serial.print("Shunt Voltage: ");
Serial.print(shuntVoltage);
Serial.println(" mV");
Serial.print("Current: ");
Serial.print(current);
Serial.println(" mA");
Serial.print("Power: ");
Serial.print(power);
Serial.println(" mW");
delay(1000); // Wait 1 second before the next reading
}
Adafruit_INA226 library is used in this example. Install it via the Arduino Library Manager.setCalibration_32V_2A) based on your specific application.No I2C Communication:
Inaccurate Measurements:
Sensor Not Detected:
Alert Pin Not Functioning:
Q: Can the INA226 measure negative currents?
A: Yes, the INA226 can measure bidirectional currents if configured appropriately.
Q: What is the maximum current the INA226 can measure?
A: The maximum current depends on the shunt resistor value and the shunt voltage range (±81.92mV). For example, with a 0.01Ω shunt resistor, the maximum current is ±8.192A.
Q: Can I use the INA226 with a 5V microcontroller?
A: Yes, the INA226 supports a supply voltage range of 2.7V to 5.5V, making it compatible with both 3.3V and 5V systems.
Q: How do I change the I2C address of the INA226?
A: The I2C address is determined by the A0 and A1 pins. Refer to the datasheet for the address configuration table.
By following this documentation, you can effectively integrate the INA226 into your projects for precise voltage, current, and power measurements.