Zbotic Logo Zbotic Logo
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

  • Shop
  • About Us
  • Contact Us
  • Reseller
  • Blogs
020 69134444
1800 209 0998
[email protected]
Help Desk
Facebook Twitter Instagram Linkedin YouTube
Zbotic Logo Zbotic Logo
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

All departments
  • 3D Print Service
  • 3D Printer
  • Batteries & Chargers
  • Development Boards
  • Drone Parts
  • EBike parts
  • Sensor Modules
  • Electronic Components
  • Electronic Modules
  • IoT and Wireless
  • Mechanical Parts and Workbench Tools
  • Motors & Drivers & Pumps & Actuators
  • DIY and Robot Kits
  • Show more
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
Return to previous page
Home Sensors & Modules

INA3221 Triple-Channel Power Monitor for Multi-Rail Systems

INA3221 Triple-Channel Power Monitor for Multi-Rail Systems

March 11, 2026 /Posted byJayesh Jain / 0

Managing power across multiple voltage rails simultaneously is a daily challenge in embedded systems, single-board computers, robotics, and industrial electronics. The INA3221 from Texas Instruments is a purpose-built three-channel power monitor that measures voltage, current, and calculates power on three independent rails with a single I2C connection. In this guide, you will learn everything about the INA3221 — its architecture, configuration, Arduino and Raspberry Pi integration, alert system, and practical multi-rail power monitoring projects.

Table of Contents

  1. What is the INA3221?
  2. Key Specifications
  3. INA3221 vs INA219: Which to Choose?
  4. Internal Architecture and Registers
  5. Wiring INA3221 with Arduino
  6. Arduino Code: Reading All Three Channels
  7. Using INA3221 with Raspberry Pi
  8. Alert and Warning System
  9. Multi-Rail Power Monitoring Projects
  10. Power Sequencing and Rail Supervision
  11. Troubleshooting Common Issues
  12. Frequently Asked Questions

What is the INA3221?

The INA3221 is a three-channel, high-side current and bus voltage monitor from Texas Instruments. It monitors shunt voltages across three external shunt resistors (one per channel) and three bus voltages, communicating all measurements over I2C with a single device address. The chip computes current from shunt voltage using Ohm’s law (V = IR) with 13-bit signed shunt voltage measurement and 13-bit bus voltage measurement per channel.

The INA3221 is designed for systems with multiple power rails — think a microcontroller board with 3.3V core, 5V peripheral, and 12V motor rails. Rather than using three separate INA219 chips (consuming 3 I2C addresses and requiring 3× the design effort), a single INA3221 handles all three channels with one device address, four configurable address pins, and a comprehensive alert system that can trigger on overvoltage, undervoltage, overcurrent, or power-sum limits.

You will find the INA3221 inside the NVIDIA Jetson Nano, inside many data center power management systems, and increasingly in high-end maker projects where detailed per-rail power budgeting is needed. It is also the sensor at the heart of several popular Raspberry Pi power management HATs.

Key Specifications

Parameter Value
Number of Channels 3
Bus Voltage Range 0 to 26V
Bus Voltage Resolution 8 mV LSB
Shunt Voltage Range ±163.8 mV
Shunt Voltage Resolution 40 µV LSB
Accuracy ±0.5% (gain error), ±10 µV (offset)
Supply Voltage (VS) 2.7V to 5.5V
Supply Current 350 µA (operating)
Interface I2C (100 kHz, 400 kHz, 1 MHz)
I2C Addresses 0x40, 0x41, 0x42, 0x43 (configurable via A0, A1)
Alert Pins 3 (ALERT1–3, open-drain, active-low)
Operating Temperature -40°C to +125°C
Package VSSOP-16

INA3221 vs INA219: Which to Choose?

The INA219 is widely used in maker projects for its simplicity and availability as breakout modules. Here is how the two compare:

Feature INA219 INA3221
Channels 1 3
Power Calculation Hardware (onboard) Software (compute V×I)
Bus Voltage Max 26V 26V
I2C Addresses Up to 16 (A0, A1) 4 (A0, A1)
Alert System None 3 independent alert pins + power-sum
Shunt Voltage ADC 12-bit 13-bit (signed)
Best For Single-rail, simple projects Multi-rail, production systems

Use INA219 when you have one rail to monitor and need a simple module with existing library support. Use INA3221 when you have two or more rails, need hardware alerts, or are building a system that needs to track power budget compliance across multiple supply domains.

INA219 Bi-directional Current Power Monitoring Module

CJMCU-219 INA219 I2C Bi-directional Current/Power Monitoring Module

Start with the INA219 for single-channel power monitoring — it is widely supported, easy to use with Arduino, and available as a ready-to-use module for immediate prototyping.

View on Zbotic

Internal Architecture and Registers

Understanding the INA3221 register map helps you use it effectively. Key registers:

  • Configuration Register (0x00): Enables/disables each channel, sets ADC resolution, sets operating mode (power-down, single-shot, continuous)
  • Shunt Voltage Registers (0x01, 0x03, 0x05): 13-bit signed raw shunt voltage for channels 1, 2, 3 respectively
  • Bus Voltage Registers (0x02, 0x04, 0x06): 13-bit unsigned raw bus voltage for channels 1, 2, 3
  • Critical Alert Limit Registers (0x07, 0x09, 0x0B): Threshold that triggers ALERT pins immediately
  • Warning Alert Limit Registers (0x08, 0x0A, 0x0C): Softer threshold for warning conditions
  • Shunt Voltage Sum (0x0D): Sum of all enabled channel shunt voltages — useful for total current monitoring
  • Shunt Sum Limit (0x0E): Threshold for total-power alert
  • Mask/Enable Register (0x0F): Controls which conditions generate alerts
  • Power Valid Upper/Lower (0x10, 0x11): Bus voltage thresholds for power-valid PV pin output

The shunt voltage LSB is 40 µV. For a 100 mΩ shunt resistor, the current resolution is 40 µV / 0.1 Ω = 400 µA per LSB, and full-scale (163.8 mV / 0.1 Ω) = 1.638A per channel. For higher current ranges, use a smaller shunt resistor (e.g., 10 mΩ gives 16.38A full-scale at 400 µA resolution).

Wiring INA3221 with Arduino

The INA3221 breakout board (available from Adafruit, SparkFun, or as a Jetson Nano accessory) connects to Arduino via I2C plus shunt resistors on each channel:

INA3221 Pin Arduino Connection
VCC 3.3V or 5V
GND GND
SDA A4 (SDA)
SCL A5 (SCL)
A0, A1 GND/GND → address 0x40
ALERT1–3 Optional: digital input with 10k pull-up to VCC

For each channel, place a shunt resistor (commonly 100 mΩ for low currents, 10 mΩ for higher currents) in series with the power rail being monitored. Connect the high side of the shunt to IN+ and the low side to IN-. Connect V- (bus voltage sense) to the load side of the shunt. The INA3221 needs to see a stable bus voltage at the V- pin — this is the load supply voltage measurement point.

Arduino Code: Reading All Three Channels

Install the INA3221 library by teddokano or the Adafruit INA3221 library from the Arduino Library Manager.

#include <Wire.h>
#include <INA3221.h>  // teddokano/INA3221 library

// INA3221 address 0x40 (A0=GND, A1=GND)
INA3221 ina(INA3221_ADDR40_GND);

// Shunt resistor values in ohms for each channel
const float SHUNT_CHANNEL1 = 0.1;   // 100 mΩ
const float SHUNT_CHANNEL2 = 0.1;   // 100 mΩ
const float SHUNT_CHANNEL3 = 0.01;  // 10 mΩ (higher current rail)

void setup() {
  Serial.begin(115200);
  Wire.begin();

  ina.begin();
  // Enable all three channels
  ina.setChannelEnable(INA3221_CH1, ENABLE);
  ina.setChannelEnable(INA3221_CH2, ENABLE);
  ina.setChannelEnable(INA3221_CH3, ENABLE);

  // Set averaging to reduce noise (16 samples)
  ina.setAveragingMode(INA3221_AVG16);

  Serial.println("INA3221 Triple-Channel Power Monitor Ready");
  Serial.println("Ch1: 3.3V Rail | Ch2: 5V Rail | Ch3: 12V Rail");
}

void loop() {
  Serial.println("n=== Power Monitor Reading ===");

  for (int ch = 1; ch <= 3; ch++) {
    INA3221_ch_t channel = (INA3221_ch_t)(ch - 1);
    float shuntV = ina.getShuntVoltage(channel);    // in V
    float busV = ina.getBusVoltage(channel);         // in V
    float shuntR = (ch == 1) ? SHUNT_CHANNEL1 :
                   (ch == 2) ? SHUNT_CHANNEL2 : SHUNT_CHANNEL3;
    float current = shuntV / shuntR;                 // Ohm's law
    float power = busV * current;                    // Watts

    Serial.print("Channel "); Serial.print(ch); Serial.println(":");
    Serial.print("  Bus Voltage: "); Serial.print(busV, 3); Serial.println(" V");
    Serial.print("  Shunt Voltage: "); Serial.print(shuntV * 1000, 3); Serial.println(" mV");
    Serial.print("  Current: "); Serial.print(current * 1000, 2); Serial.println(" mA");
    Serial.print("  Power: "); Serial.print(power * 1000, 2); Serial.println(" mW");
  }

  delay(1000);
}

Using INA3221 with Raspberry Pi

The INA3221 is native to the Jetson Nano where the Linux kernel includes a built-in driver. On Raspberry Pi, you can use it via Python:

pip3 install pi-ina3221

from ina3221 import INA3221

INA = INA3221(shunt_resistor=[0.1, 0.1, 0.01])
INA.configure(average=INA3221.AVERAGE_16_SAMPLES)

for ch in [1, 2, 3]:
    bus_v = INA.get_bus_voltage(ch)
    current_mA = INA.get_current(ch)
    power_mW = INA.get_power(ch)
    print(f"Channel {ch}: {bus_v:.3f}V | {current_mA:.1f}mA | {power_mW:.1f}mW")

On Jetson Nano, INA3221 data is exposed via the sysfs interface at /sys/bus/i2c/drivers/ina3221/. You can read it directly:

cat /sys/bus/i2c/drivers/ina3221/0-0040/iio:device0/in_voltage0_input
# Returns bus voltage in mV for channel 1

cat /sys/bus/i2c/drivers/ina3221/0-0040/iio:device0/in_current0_input
# Returns current in mA for channel 1

Alert and Warning System

The INA3221’s three ALERT pins (open-drain, active-low, require external pull-up) provide hardware-level power monitoring without MCU polling:

  • Critical Alert: Triggers when shunt voltage exceeds the Critical Alert Limit Register value. Latched — clears by reading the Mask/Enable register.
  • Warning Alert: Triggers when the rolling average of shunt voltage exceeds the Warning Alert Limit. Useful for sustained overcurrent detection (vs. brief transient spikes that trigger Critical).
  • Timing Alert: Triggers when the conversion time of any channel exceeds a configured timeout.
  • Power Valid (PV): Goes high when all enabled bus voltages are within the Power Valid Upper and Lower limit registers. Perfect for system power-good sequencing logic.
  • Sum Alert: Triggers when the sum of all enabled shunt voltages exceeds the Shunt Sum Limit register — effectively a total power budget alarm.

Example: Set Critical Alert Limit for channel 2 (5V rail) to protect a 2A-rated load. With a 100 mΩ shunt, 2A = 200 mV shunt voltage = 5000 raw counts (200 mV / 40 µV). Write 5000 to register 0x09. When the load draws more than 2A, ALERT2 goes low, waking your MCU via interrupt to take protective action (shut down the rail, log the event, send a notification).

ACS712 5A Current Sensor

5A Range Current Sensor Module ACS712

For lower-current isolated monitoring (up to 5A), the ACS712 5A module offers Hall-effect isolation — a great companion for the INA3221 in mixed-isolation power monitoring systems.

View on Zbotic

Multi-Rail Power Monitoring Projects

Raspberry Pi Cluster Power Monitor

A Raspberry Pi cluster running Docker or Kubernetes has multiple power domains: 5V main supply, PoE rail, and USB peripheral rail. Use an INA3221 on a HAT to monitor all three simultaneously. Log per-rail wattage to InfluxDB, visualize in Grafana, and set critical alerts to detect nodes with failing power supply units before they cause data corruption.

Robotics Servo and Motor Rail Monitor

A typical robot has 3.3V logic, 5V servo rail, and 12V motor driver rail. An INA3221 on the main controller board monitors all three rails continuously. When motor current spikes (stall detection), the ALERT3 interrupt fires and the MCU cuts power to the motor before the H-bridge overheats. Log energy per channel to compute battery state of charge for autonomous mission planning.

Solar MPPT System Multi-Rail Monitor

Monitor panel input current/voltage (CH1), battery charge current (CH2), and load output current (CH3) using INA3221. Calculate panel power, battery state of charge, and load power simultaneously. Use the Sum Alert to detect when total system power budget is exceeded (e.g., inverter overload condition). Display all three channels on a small LCD with trend graphs.

Development Board Power Profiling

During embedded firmware development, understanding which peripherals consume power is critical for battery life optimization. Use the INA3221 to break out the 3.3V, 5V, and VBat rails of your development board, then trigger firmware state transitions while logging per-rail current. Identify which code paths or peripheral activations cause unexpected power spikes.

Power Sequencing and Rail Supervision

One of the most valuable but underused INA3221 features is its Power Valid output. In multi-rail systems, power rails must often come up in a specific sequence — for example, VDDIO must be stable before VDD_CORE powers up, or the FPGA configuration RAM must see 3.3V before the FPGA itself gets 1.0V core power. Incorrect sequencing can damage ICs.

Configure the INA3221’s Power Valid Upper Limit registers to define the minimum acceptable voltage for each rail (e.g., 3.0V for a 3.3V rail, 4.7V for a 5V rail). When all three monitored rails are within their valid ranges, the PV pin goes high. Use PV as the enable signal for the next stage in your power sequencing tree — this creates hardware-enforced sequencing without complex supervisory MCU firmware.

Troubleshooting Common Issues

  • All channels read zero current: Check shunt resistors are actually in the current path. Verify IN+ is on the high side (supply side) and IN- is on the load side of the shunt.
  • Bus voltage reads correctly but current is wrong: Shunt resistor value in your code must exactly match the physical shunt installed. Double-check your shunt resistance and update the constant.
  • I2C device not found: Verify A0/A1 pin states match the address you are using. Check for 3.3V vs 5V compatibility — use logic level shifter if needed.
  • Negative current readings when expecting positive: You have IN+ and IN- swapped on that channel. Reverse the shunt resistor connection or negate the reading in software.
  • ALERT pins never trigger: Alert pins are open-drain — they need external pull-up resistors (typically 10kΩ to VCC). Also verify you have written the correct threshold values to the limit registers and enabled the alert in the Mask/Enable register.
  • Readings noisy on high-current channel: Increase averaging (16, 64, or 128 samples). Add a small capacitor (100 nF) across the shunt resistor to filter switching noise from DC-DC converters.

Frequently Asked Questions

Q: Can INA3221 monitor negative voltages (e.g., -12V rail)?

A: The INA3221 bus voltage input accepts 0–26V. For negative rails, the common approach is to measure the absolute value by placing the INA3221 between the negative rail and the most negative potential (GND), treating it as a positive voltage relative to its own reference. For true negative voltage monitoring, use the INA190 or add a voltage inversion circuit.

Q: What shunt resistor value should I use for each channel?

A: Calculate as: Shunt R = 163.8 mV (max shunt voltage) / Maximum expected current. For 1A max: 163.8 mΩ (use 100 mΩ for headroom). For 10A max: 16.38 mΩ (use 10 mΩ). Always use 1% tolerance or better resistors rated for the power dissipation (P = I² × R).

Q: Can I use INA3221 to monitor battery voltage?

A: Yes. Connect the battery’s positive terminal to IN+, a shunt resistor in the charge/discharge path, and the load side of the shunt to IN- and the Bus Voltage (V-) pin. You can monitor both charge current (positive) and discharge current — however the INA3221 shunt input is not bidirectional in the traditional sense; it only measures positive shunt voltage. For charge/discharge monitoring, pair with the INA219 which handles negative shunt voltages.

Q: How many INA3221 chips can share one I2C bus?

A: Up to 4 INA3221 chips (addresses 0x40, 0x41, 0x42, 0x43), giving you 12 total monitored channels on a single I2C bus. For more, use a TCA9548A I2C multiplexer to connect additional devices.

Q: What is the purpose of the INA3221 in the Jetson Nano?

A: The Jetson Nano uses an INA3221 to monitor three power rails: VDD_IN (main power), VDD_GPU (GPU core), and VDD_CPU (CPU core). NVIDIA’s power management framework reads these values to implement software-defined power limits (5W and 10W modes) and thermal throttling decisions based on actual measured power consumption.

Build Your Multi-Rail Power Monitoring System

Explore Zbotic’s full selection of power monitoring sensors, current sensors, and measurement modules — with fast shipping across India for your next electronics project.

Shop Power Monitoring Sensors

Tags: current voltage monitoring, I2C power sensor, INA3221, multi-rail power, power monitor
Share Post
  • Facebook
  • Linkedin
  • Whatsapp
Agricultural Sensors India: EC...
blog agricultural sensors india ec ph npk soil sensor buying guide 596372
blog lead acid vs lithium which battery for solar projects 596374
Lead Acid vs Lithium: Which Ba...

Related posts

Svg%3E
Read more

Encoder Module: Position and Speed Measurement with Arduino

April 1, 2026 0
A rotary encoder converts the angular position and rotation speed of a shaft into electrical signals that Arduino can count... Continue reading
Svg%3E
Read more

Infrared Obstacle Sensor: Line Follower and Object Detection

April 1, 2026 0
Infrared obstacle sensors are the building blocks of line-following robots, edge detection systems, and proximity triggers. These tiny modules emit... Continue reading
Svg%3E
Read more

Rain Sensor and Raindrop Detection Module: Arduino Guide

April 1, 2026 0
A rain sensor module detects the presence of water droplets on its surface, giving Arduino a simple signal to trigger... Continue reading
Svg%3E
Read more

LiDAR Sensor TFmini: Distance Measurement Beyond Ultrasonic

April 1, 2026 0
When ultrasonic sensors hit their limits — range too short, accuracy too coarse, outdoor sunlight causing interference — LiDAR sensors... Continue reading
Svg%3E
Read more

Pressure Sensor BMP280: Weather Station and Altitude Meter

April 1, 2026 0
The BMP280 barometric pressure sensor by Bosch measures atmospheric pressure with ±1 hPa accuracy and temperature with ±1°C precision. These... Continue reading

Add comment Cancel reply

Your email address will not be published. Required fields are marked

Facebook Twitter Instagram Pinterest Linkedin Youtube

Get the latest deals and more.

Download on Google Play Download on the App Store

Call us: 020 69134444 / 1800 209 0998

Monday - Saturday 09:30 AM - 06:00 PM
For Technical Supports Email: [email protected]
For Sales / Enquiries Email: [email protected]

  • My Account

    • Cart

    • Wishlist

    • Checkout

    • My Orders

    • Track Order

    • My Account

  • Information

    • FAQs

    • Blogs

    • Career

    • About Us

    • Contact Us

    • Payment Options

  • Policies

    • Privacy Policy

    • Terms & Conditions

    • GST Input Tax Credit

    • Shipping Return Policy

    • E-Waste Collection Points

    • Our Sitemap

© Zbotic.in is registered trademark of Moxie Supply Pvt Ltd – All Rights Reserved
Login
Use Phone Number
Use Email Address
Not a member yet? Register Now
Reset Password
Use Phone Number
Use Email Address
Register
Already a member? Login Now