

The Adafruit INA3221 (Manufacturer Part ID: 6062) is a highly versatile power monitoring module designed to measure voltage and current across three independent channels. With a measurement range of 0-26 VDC and ±3.2 Amps per channel, this component is ideal for monitoring multiple power sources or loads in a single project. It communicates via the I2C protocol and features STEMMA QT / Qwiic connectors for seamless integration into modern electronics projects.








The following table outlines the key technical details of the Adafruit INA3221:
| Parameter | Value |
|---|---|
| Operating Voltage | 3.3V or 5V (via I2C bus) |
| Voltage Measurement Range | 0-26 VDC |
| Current Measurement Range | ±3.2 Amps per channel |
| Communication Protocol | I2C |
| Default I2C Address | 0x40 |
| Channels | 3 |
| Connectors | STEMMA QT / Qwiic |
| Dimensions | 25mm x 25mm x 4mm |
| Weight | 2g |
The Adafruit INA3221 features the following pins:
| Pin Name | Description |
|---|---|
| VIN+ (x3) | Positive voltage input for each of the three channels. |
| VIN- (x3) | Negative voltage input for each of the three channels. |
| SDA | I2C data line for communication. |
| SCL | I2C clock line for communication. |
| GND | Ground connection. |
| VCC | Power input for the module (3.3V or 5V, typically supplied by the I2C master). |
Below is an example of how to use the Adafruit INA3221 with an Arduino UNO to read voltage and current from all three channels:
#include <Wire.h>
#include "Adafruit_INA3221.h"
// Create an instance of the INA3221 class
Adafruit_INA3221 ina3221;
// Setup function to initialize the INA3221
void setup() {
Serial.begin(115200); // Start serial communication for debugging
while (!Serial) delay(10); // Wait for Serial Monitor to open
// Initialize the INA3221
if (!ina3221.begin()) {
Serial.println("Failed to find INA3221 chip");
while (1) { delay(10); } // Halt if initialization fails
}
Serial.println("INA3221 initialized successfully");
}
// Loop function to read and display data
void loop() {
for (int i = 0; i < 3; i++) {
// Read voltage and current for each channel
float busVoltage = ina3221.getBusVoltage_V(i);
float current = ina3221.getCurrent_mA(i);
// Print the results to the Serial Monitor
Serial.print("Channel ");
Serial.print(i + 1);
Serial.print(": Bus Voltage = ");
Serial.print(busVoltage);
Serial.print(" V, Current = ");
Serial.print(current);
Serial.println(" mA");
}
delay(1000); // Wait 1 second before the next reading
}
Module Not Detected on I2C Bus:
Incorrect Voltage or Current Readings:
Overheating or Damage:
Q: Can I use the INA3221 with a Raspberry Pi?
A: Yes, the INA3221 is compatible with Raspberry Pi. Use the I2C pins on the Raspberry Pi and install the appropriate Python libraries (e.g., Adafruit CircuitPython INA3221).
Q: How do I change the I2C address?
A: The INA3221 supports multiple I2C addresses. Refer to the datasheet for instructions on configuring the address pins to set a new address.
Q: Can I measure negative voltages?
A: No, the INA3221 is designed to measure positive voltages only (0-26 VDC). However, it can measure bidirectional currents (±3.2 Amps).
Q: What is the accuracy of the measurements?
A: The INA3221 provides high accuracy, but the exact values depend on the shunt resistor used and the calibration settings. Refer to the datasheet for detailed accuracy specifications.