

The INA219 is a high-side current shunt monitor with an integrated I2C interface, designed for precise measurement of current, voltage, and power. It is widely used in applications requiring accurate power monitoring, such as battery management systems, power supply monitoring, and energy-efficient devices. By measuring both the voltage across a shunt resistor and the bus voltage, the INA219 calculates power consumption with high accuracy.








The INA219 offers a range of features that make it suitable for various power monitoring applications. Below are its key technical details:
The INA219 is typically available in an 8-pin SOIC package. Below is the pinout and description:
| Pin | Name | Description |
|---|---|---|
| 1 | V+ | Positive input for the high-side shunt resistor. |
| 2 | V- | Negative input for the high-side shunt resistor. |
| 3 | GND | Ground connection. |
| 4 | SDA | I2C data line for communication. |
| 5 | SCL | I2C clock line for communication. |
| 6 | ALERT/RDY | Alert or Ready pin (optional, configurable for over-limit detection). |
| 7 | A0 | I2C address selection bit 0. |
| 8 | A1 | I2C address selection bit 1. |
The INA219 is straightforward to use in a circuit, thanks to its I2C interface and high-side current sensing capability. Below are the steps and considerations for using the INA219:
Below is an example of how to use the INA219 with an Arduino UNO to measure current, voltage, and power:
#include <Wire.h>
#include <Adafruit_INA219.h>
// Create an instance of the INA219 class
Adafruit_INA219 ina219;
void setup() {
Serial.begin(9600); // Initialize serial communication at 9600 baud
while (!Serial) {
delay(10); // Wait for the serial monitor to open
}
// Initialize the INA219 sensor
if (!ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) {
delay(10); // Halt execution if the sensor is not found
}
}
Serial.println("INA219 initialized successfully");
}
void loop() {
float shuntVoltage = ina219.getShuntVoltage_mV(); // Get shunt voltage in mV
float busVoltage = ina219.getBusVoltage_V(); // Get bus voltage in V
float current_mA = ina219.getCurrent_mA(); // Get current in mA
float power_mW = ina219.getPower_mW(); // Get power in mW
// Print the measurements to the serial monitor
Serial.print("Shunt Voltage: ");
Serial.print(shuntVoltage);
Serial.println(" mV");
Serial.print("Bus Voltage: ");
Serial.print(busVoltage);
Serial.println(" V");
Serial.print("Current: ");
Serial.print(current_mA);
Serial.println(" mA");
Serial.print("Power: ");
Serial.print(power_mW);
Serial.println(" mW");
Serial.println("-----------------------------");
delay(1000); // Wait 1 second before the next reading
}
Adafruit_INA219 library is used for easy communication with the INA219. Install it via the Arduino Library Manager.No Communication with the INA219:
Inaccurate Measurements:
Sensor Not Detected:
Q: Can the INA219 measure negative currents?
A: Yes, the INA219 can measure bidirectional currents if configured appropriately.
Q: What is the maximum current the INA219 can measure?
A: The maximum current depends on the shunt resistor value. For example, with a 0.1Ω resistor, it can measure up to ±3.2A.
Q: Can I use the INA219 with a 3.3V microcontroller?
A: Yes, the INA219 is compatible with both 3.3V and 5V logic levels.
By following this documentation, you can effectively integrate the INA219 into your projects for accurate power monitoring.