This is an improved version of the commonly available INA3221 3-channel voltage and current sensor breakout board.

This version has unpopulated sense resistors (no resistors) so you can solder on your own resistors with the value you prefer, or you can use external (high current) shunts.
See here for the version with 0.1 Ohm (R100) sense resistors and here for the version with 0.01 Ohm (R010) sense resistors.



The main problem with the original breakout board is that all 3 channels use the same power supply. This version implements the example circuit from the INA3221 datasheet and therefore allows 3 different power supplies; one per channel. All 3 power supplies must have a common ground (GND).

This version also has much larger power tracks and a smaller PCB size (30x26mm). The interface header pin-out is the same as on the original module and adds the VPU pin and the A0 address pin to the header. The latter can be used to set the I2C address of the module externally. This version does not have the LEDs of the original module to save power and PCB space. This can be implemented externally, if required.

The INA3221-RNONE version comes with no sense resistors. You will need to solder on your own sense resistors. The footprint is SMD 2512 (imperial) / 6332 (metric). I recommend resistors with 1% tolerance or less for more accurate measurements, but this is, of course, up to you.

The resistor value to choose depends on the current range you want to measure. You need to calculate the resistor value so that you end up with a voltage drop across each resistor between –163.84mV and +163.8mV. A higher resistor value will give you a lower current range, higher current resolution and higher voltage drop at the same current. A lower resistor value will give you a higher current range, lower current resolution and lower voltage drop at the same current.


0.01 Ohm resistors would give you a current measurement range of ±16A with a resolution of 4mA and a voltage drop of 0.01V at 1A
0.10 Ohm resistors would give you a current measurement range of ±1.6A with a resolution of 0.4mA and a voltage drop of 0.10V at 1A

Make sure the power rating of the resistors is high enough. A 0.01 Ohm resistor measuring a current of 16A would dissipate about 2.56Watt (160mV voltage drop across the resistor multiplied by 16A = 2.56Watt). So you need to use a 3Watt resistor.

Also keep in mind that the PCB tracks between the sense resistors and solder points can only handle about 8-10A. I have removed the solder mask from the tracks. If you measure higher currents, add a thick layer of solder to these tracks and/or solder a thick, short piece of bare solid copper wire onto the track to handle the extra current.

I'm also offering models with populated sense resistors. The INA3221-R100 model has 0.1 Ohm resistors, just like the original module, and the INA3221-R010 model has 0.01 Ohm resistors. Otherwise these models are identical.



Size 30 x 26mm
Supply Voltage 2.7 - 5.5V
Supply Current 350 µA typical (INA3221)
Sense Voltage 0 - 26V, 8mV resolution
Sense Current depends on sense resistor / shunt values
Sense Resistors unpopulated, 3 resistors (SMD 2512 (imperial) / 6332 (metric)) or external shunts required
I2C Adresses 4 (0x40 (default) - 0x43) selectable by solder jumper or A0 pin, see INA3221 datasheet







Thanks to Jesus Garcia there is now an EasyEDA library for this module. You can get it form here:


Where to buy

You can buy this module from my Tindie store

I sell on Tindie

Direct link to this product:




The interface side can be used exactly the same way as the original module. There is an I2C bus and 4 status output pins. In addition to the header on the original module, this version also has the A0 address pin on the header. To set the I2C address use either the solder jumpers on the module or the A0 pin on the header to set the address externally. Please refer to the INA3221 datasheet for more information on the status pins and I2C addresses.

Texas Instuments INA3221 datasheet

For Arduino the SDL_Arduino_INA3221 library can be used. The library includes sample code. If you are not using the default 0.1 Ohm sense resistors, you need to modify the code to pass 2 parameters when instantiating the SDL_Arduino_INA3221 class.


SDL_Arduino_INA3221 ina3221;


SDL_Arduino_INA3221 ina3221(INA3221_ADDRESS, resistor_valueF);

Example: SDL_Arduino_INA3221 ina3221(INA3221_ADDRESS, 0.01F); for 0.01 Ohm sense resistors

The first parameter is the I2C address of the INA3221. The second parameter is the value of the sense resistors in Ohms (the 'F' forces it to be a float value).


Example Circuit

One example use case for this breakout board is to monitor charging / discharging of a Lithium battery by a small solar panel. The following circuit allows to monitor voltage and current from a solar panel, battery voltage and charging/discharging current (positive current = discharging, negative current = charging), and load voltage and current. Please note that the charging module needs to have common ground reference for Vin, Vout and battery.




Here are some more photos of the INA3221-RNONE breakout board.

INA3221-RNONE_front_400.png   INA3221-RNONE_back_400.png


Size comparison original module and INA3221-R010 breakout board (images of original module partially blurred to avoid any copyright issues).

INA3221-R010_size_front_400.png   INA3221-R010_size_back_400.png


Screw terminals are not included, but this image shows that they do fit.