

The INA219 by LaskaKit is a high-side current shunt monitor with an integrated I2C interface. This versatile component is capable of measuring both current and voltage, making it ideal for accurate power monitoring in a wide range of applications. By combining precision measurements with a simple digital interface, the INA219 enables efficient power consumption analysis and management.








The INA219 is designed to provide precise measurements with minimal power consumption. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage (Vcc) | 3.0V to 5.5V |
| Bus Voltage Range | 0V to 26V |
| Current Measurement Range | ±3.2A (with default 0.1Ω shunt resistor) |
| Shunt Voltage Range | ±320mV |
| Communication Interface | I2C (7-bit address, configurable) |
| Resolution | 12-bit ADC |
| Accuracy | ±1% (typical) |
| Operating Temperature | -40°C to +125°C |
The INA219 module typically comes with the following pinout:
| Pin Name | Description |
|---|---|
| VCC | Power supply input (3.0V to 5.5V). Connect to the microcontroller's power pin. |
| GND | Ground connection. |
| SDA | I2C data line. Connect to the microcontroller's SDA pin. |
| SCL | I2C clock line. Connect to the microcontroller's SCL pin. |
| VIN+ | Positive input for the shunt resistor. Connect to the high-side of the load. |
| VIN- | Negative input for the shunt resistor. Connect to the low-side of the load. |
The INA219 is straightforward to use in a circuit, thanks to its I2C interface and high-side current sensing capability. Below are the steps to integrate and use 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 INA219 instance
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("Bus Voltage: ");
Serial.print(busVoltage);
Serial.println(" V");
Serial.print("Shunt Voltage: ");
Serial.print(shuntVoltage);
Serial.println(" mV");
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
}
No I2C Communication:
Incorrect Readings:
Sensor Not Detected:
Q: Can the INA219 measure negative currents?
A: Yes, the INA219 can measure bidirectional currents. Ensure the shunt resistor is connected correctly for accurate readings.
Q: What is the maximum current the INA219 can measure?
A: The maximum measurable current depends on the shunt resistor value. With the default 0.1Ω resistor, the range is ±3.2A. For higher currents, use a lower-value shunt resistor.
Q: Can I use the INA219 with a 3.3V microcontroller?
A: Yes, the INA219 operates with both 3.3V and 5V logic levels, making it compatible with most microcontrollers.
Q: How do I change the I2C address of the INA219?
A: The I2C address can be configured by adjusting the address pins (A0 and A1) on the module. Refer to the module's datasheet for specific address configurations.