The INA 3221 is a high-precision power monitor designed to measure voltage and current in a system. It features three input channels, enabling simultaneous monitoring of multiple power rails. The device communicates digitally via the I2C interface, making it ideal for integration into microcontroller-based systems. Its compact design and versatile functionality make it suitable for applications such as power management, energy monitoring, and system diagnostics in embedded systems.
The INA 3221 offers robust performance and flexibility. Below are its key technical details:
Parameter | Value |
---|---|
Supply Voltage (Vcc) | 2.7V to 5.5V |
Input Voltage Range | 0V to 26V |
Maximum Current | Determined by external shunt resistor |
Communication Interface | I2C (up to 3.4 MHz) |
Number of Channels | 3 |
Operating Temperature | -40°C to +125°C |
Resolution | 12-bit ADC |
Power Consumption | 350 µA (typical) |
The INA 3221 is typically available in a 10-pin package. Below is the pinout description:
Pin | Name | Description |
---|---|---|
1 | GND | Ground connection |
2 | VCC | Power supply input (2.7V to 5.5V) |
3 | SDA | I2C data line |
4 | SCL | I2C clock line |
5 | ALERT1 | Alert output for channel 1 (programmable threshold) |
6 | ALERT2 | Alert output for channel 2 (programmable threshold) |
7 | ALERT3 | Alert output for channel 3 (programmable threshold) |
8 | VIN1+ | Positive input for channel 1 voltage measurement |
9 | VIN2+ | Positive input for channel 2 voltage measurement |
10 | VIN3+ | Positive input for channel 3 voltage measurement |
Below is an example of how to interface the INA 3221 with an Arduino UNO using the I2C protocol:
#include <Wire.h>
// INA 3221 I2C address (default is 0x40)
#define INA3221_ADDRESS 0x40
// Register addresses for INA 3221
#define REG_CONFIG 0x00
#define REG_SHUNT_VOLTAGE_CH1 0x01
#define REG_BUS_VOLTAGE_CH1 0x02
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Configure INA 3221 (example configuration)
Wire.beginTransmission(INA3221_ADDRESS);
Wire.write(REG_CONFIG); // Point to configuration register
Wire.write(0x71); // MSB: Enable all channels, set averaging mode
Wire.write(0x27); // LSB: Set conversion times
Wire.endTransmission();
}
void loop() {
// Read bus voltage from channel 1
Wire.beginTransmission(INA3221_ADDRESS);
Wire.write(REG_BUS_VOLTAGE_CH1); // Point to bus voltage register for channel 1
Wire.endTransmission();
Wire.requestFrom(INA3221_ADDRESS, 2); // Request 2 bytes of data
if (Wire.available() == 2) {
uint16_t rawData = (Wire.read() << 8) | Wire.read(); // Combine MSB and LSB
float busVoltage = rawData * 0.001; // Convert to volts (1 LSB = 1 mV)
Serial.print("Channel 1 Bus Voltage: ");
Serial.print(busVoltage);
Serial.println(" V");
}
delay(1000); // Wait 1 second before next reading
}
No I2C Communication:
Incorrect Voltage or Current Readings:
Alert Pins Not Functioning:
By following this documentation, you can effectively integrate the INA 3221 into your projects for accurate power monitoring and management.