This is an INA219 I2C/SMB DC Voltage/Current/Power sensor library for Arduino.
- High Accuracy: max 0.5%
- Measure Voltage 0..26V DC
- Measure Current 0..2000mA DC (with default 0.1 Ohm shunt)
- Measure Power in Watt (Software Voltage * Current calculation)
- Configurable shunt resistor value
- Configurable I2C address for multiple sensors
- Power-down / power-up control
- Low-level register access
Any Arduino hardware with a TWI interface and Wire.h
support.
Pins board - INA219 | VCC | GND | SDA | SCL |
---|---|---|---|---|
Arduino UNO (ATMega328 boards) | 5V | GND | A4 | A5 |
Arduino Mega2560 | 5V | GND | D20 | D21 |
Arduino Leonardo | 5V | GND | D2 | D3 |
Arduino DUE (ATSAM3X8E) | 3V3 | GND | 20 | 21 |
ESP8266 | 3V3 | GND | GPIO4 (D2) | GPIO5 (D1) |
ESP32 | 3V3 | GND | GPIO21 | GPIO22 |
- ErriezINA219AutoRange Auto range example.
- ErriezINA219GettingStarted Getting started example.
- ErriezINA219SerialPlotter Serial Plotter example.
Wire.h
#include <Arduino.h>
#include <Wire.h>
#include <ErriezINA219.h>
// Default I2C Address 0x40
#define INA219_I2C_ADDRESS 0x40
// 0.1 Ohm shunt resistor
#define INA219_SHUNT_RESISTOR 0.1
// Create INA219 sensor object
INA219 ina219 = INA219(INA219_I2C_ADDRESS, INA219_SHUNT_RESISTOR);
void setup()
{
// Initialize serial port
Serial.begin(115200);
while (!Serial) {
;
}
Serial.println(F("\nErriez INA219 voltage, current and power sensor example\n"));
// Initialize I2C
Wire.begin();
Wire.setClock(400000);
// Initialize INA219
while (!ina219.begin()) {
Serial.println(F("Error: INA219 not detected"));
delay(3000);
}
}
void loop()
{
// Read from sensor
if (!ina219.read()) {
Serial.println(F("Error: INA219 read failed"));
return;
}
// Check valid conversion
if (!ina219.available) {
Serial.println(F("Error: INA219 not available"));
return;
}
// Print result
Serial.println(F("INA219:"));
Serial.print(F(" Bus voltage: "));
Serial.print(ina219.busVoltage, 2);
Serial.println(F(" V"));
Serial.print(F(" Shunt voltage: "));
Serial.print(ina219.shuntVoltage / 1000, 1);
Serial.println(F(" V"));
Serial.print(F(" Current: "));
Serial.print(ina219.current / 1000, 1);
Serial.println(F(" A"));
Serial.print(F(" Power: "));
Serial.print(ina219.power / 1000, 1);
Serial.println(F(" W"));
// Wait some time
delay(1000);
}
Please refer to the Wiki page.