Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Component Documentation

How to Use INA219: Examples, Pinouts, and Specs

Image of INA219
Cirkit Designer LogoDesign with INA219 in Cirkit Designer

Introduction

The INA219 is a high-side current shunt monitor with an I2C interface, designed to measure both current and voltage with high precision. It is widely used in applications requiring accurate power consumption monitoring, such as battery management systems, energy monitoring, and industrial automation. By integrating a shunt resistor and leveraging its I2C communication capabilities, the INA219 simplifies the process of measuring power in embedded systems.

Explore Projects Built with INA219

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
ESP32-Based Solar Power Monitoring System with MPPT and INA219
Image of lapmag: A project utilizing INA219 in a practical application
This circuit is designed to monitor the voltage and current of a solar panel using an ESP32 Devkit V1 microcontroller and an INA219 current sensor. The ESP32 reads data from the INA219 via I2C communication (using pins D21 and D22 for SDA and SCL, respectively) and reports voltage, current, and power measurements over a serial connection. The solar panel is connected to an MPPT solar charge controller, which is in turn connected to the INA219 for monitoring its output.
Cirkit Designer LogoOpen Project in Cirkit Designer
Multi-Sensor Monitoring System with INA219, Hall Sensor, and OLED Display
Image of R8 Charger: A project utilizing INA219 in a practical application
This circuit is designed for monitoring and displaying sensor data. It includes three INA219 current sensors, a GH1248 Hall sensor, and an SSD1306 OLED display, all interfaced with a Seeed Studio RP2350 microcontroller. The microcontroller reads data from the sensors and controls the display and three LEDs.
Cirkit Designer LogoOpen Project in Cirkit Designer
ESP32-Based Motor Control System with INA219 Current Sensor and ST7735S Display
Image of test1: A project utilizing INA219 in a practical application
This circuit is a motor control system using an ESP32 microcontroller, an INA219 current sensor, and a BTS7960 motor driver. The ESP32 reads current data from the INA219 and controls the motor driver, while a display module shows relevant information. A pushbutton is included for user interaction.
Cirkit Designer LogoOpen Project in Cirkit Designer
Arduino Mega 2560 and INA219 Sensor for Current and Voltage Measurement
Image of INA219_Mega2560: A project utilizing INA219 in a practical application
This circuit connects an Arduino Mega 2560 to an INA219 sensor for current and voltage measurement. The INA219 sensor communicates with the Arduino via the I2C protocol, and the Arduino reads and prints the current, bus voltage, shunt voltage, and power values to the Serial Monitor.
Cirkit Designer LogoOpen Project in Cirkit Designer

Explore Projects Built with INA219

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of lapmag: A project utilizing INA219 in a practical application
ESP32-Based Solar Power Monitoring System with MPPT and INA219
This circuit is designed to monitor the voltage and current of a solar panel using an ESP32 Devkit V1 microcontroller and an INA219 current sensor. The ESP32 reads data from the INA219 via I2C communication (using pins D21 and D22 for SDA and SCL, respectively) and reports voltage, current, and power measurements over a serial connection. The solar panel is connected to an MPPT solar charge controller, which is in turn connected to the INA219 for monitoring its output.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of R8 Charger: A project utilizing INA219 in a practical application
Multi-Sensor Monitoring System with INA219, Hall Sensor, and OLED Display
This circuit is designed for monitoring and displaying sensor data. It includes three INA219 current sensors, a GH1248 Hall sensor, and an SSD1306 OLED display, all interfaced with a Seeed Studio RP2350 microcontroller. The microcontroller reads data from the sensors and controls the display and three LEDs.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of test1: A project utilizing INA219 in a practical application
ESP32-Based Motor Control System with INA219 Current Sensor and ST7735S Display
This circuit is a motor control system using an ESP32 microcontroller, an INA219 current sensor, and a BTS7960 motor driver. The ESP32 reads current data from the INA219 and controls the motor driver, while a display module shows relevant information. A pushbutton is included for user interaction.
Cirkit Designer LogoOpen Project in Cirkit Designer
Image of INA219_Mega2560: A project utilizing INA219 in a practical application
Arduino Mega 2560 and INA219 Sensor for Current and Voltage Measurement
This circuit connects an Arduino Mega 2560 to an INA219 sensor for current and voltage measurement. The INA219 sensor communicates with the Arduino via the I2C protocol, and the Arduino reads and prints the current, bus voltage, shunt voltage, and power values to the Serial Monitor.
Cirkit Designer LogoOpen Project in Cirkit Designer

Common Applications:

  • Battery management systems
  • Energy monitoring in IoT devices
  • Solar power systems
  • Industrial automation and control
  • Robotics and motor control

Technical Specifications

The INA219 offers a range of features that make it versatile and reliable for power monitoring applications. Below are its key technical details:

Key Technical Details:

  • Supply Voltage (Vcc): 3.0V to 5.5V
  • Bus Voltage Range: 0V to 26V
  • Current Measurement Range: ±3.2A (with default 0.1Ω shunt resistor)
  • Resolution: 12-bit ADC
  • Communication Protocol: I2C (up to 3.4 MHz)
  • Default I2C Address: 0x40 (modifiable via address pins)
  • Operating Temperature Range: -40°C to +125°C
  • Power Consumption: 1 mA (typical)

Pin Configuration and Descriptions:

The INA219 module typically comes with the following pins:

Pin Name Description
VCC Power supply input (3.0V to 5.5V).
GND Ground connection.
SCL I2C clock line. Connect to the SCL pin of the microcontroller.
SDA I2C data line. Connect to the SDA pin of the microcontroller.
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).
A0, A1 Address pins for configuring the I2C address (optional, depending on the module).

Usage Instructions

The INA219 is straightforward to use in a circuit, thanks to its I2C interface and integrated shunt resistor. Below are the steps and considerations for using the INA219 effectively:

Steps to Use the INA219:

  1. Connect the Power Supply:

    • Connect the VCC pin to a 3.3V or 5V power source.
    • Connect the GND pin to the ground of your circuit.
  2. Connect the I2C Lines:

    • Connect the SCL and SDA pins to the corresponding I2C pins on your microcontroller.
    • Use pull-up resistors (typically 4.7kΩ) on the SCL and SDA lines if not already present.
  3. Connect the Load:

    • Connect the VIN+ pin to the positive side of the load.
    • Connect the VIN- pin to the negative side of the load.
  4. Configure the I2C Address (if needed):

    • Use the A0 and A1 pins to set a custom I2C address if multiple INA219 modules are used.
  5. Write Code to Read Data:

    • Use an appropriate library (e.g., Adafruit INA219 library) to communicate with the INA219 and retrieve voltage, current, and power readings.

Example Code for Arduino UNO:

Below is an example of how to use the INA219 with an Arduino UNO:

#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 readings 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
}

Important Considerations:

  • Ensure the shunt resistor is appropriate for the expected current range. The default 0.1Ω resistor supports up to ±3.2A.
  • Avoid exceeding the maximum bus voltage of 26V to prevent damage to the INA219.
  • Use proper decoupling capacitors (e.g., 0.1µF) near the VCC pin for stable operation.
  • If using multiple INA219 modules, configure unique I2C addresses using the A0 and A1 pins.

Troubleshooting and FAQs

Common Issues:

  1. No Communication with the INA219:

    • Cause: Incorrect I2C wiring or address mismatch.
    • Solution: Verify the SCL and SDA connections and ensure the I2C address matches the code.
  2. Incorrect Current or Voltage Readings:

    • Cause: Improper shunt resistor value or loose connections.
    • Solution: Check the shunt resistor and ensure all connections are secure.
  3. INA219 Not Detected:

    • Cause: Faulty module or incorrect power supply voltage.
    • Solution: Ensure the module is powered correctly and test with another INA219.

FAQs:

  • Q: Can the INA219 measure negative currents?
    A: Yes, the INA219 can measure bidirectional currents if configured appropriately.

  • Q: What is the maximum sampling rate of the INA219?
    A: The INA219 supports a maximum sampling rate of approximately 12-bit resolution at 532µs per conversion.

  • 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 precise power monitoring and management.