Skip to content
Arnd edited this page Feb 3, 2019 · 26 revisions

INA2xx Devices
Build Status DOI arduino-library-badge

Arduino library to access multiple INA2xx High-Side/Low-Side Bi-Directional I2C Current and Power Monitors at the same time. Details of the library methods and example programs are to be found at the INA wiki pages. Arduino library to access multiple INA2xx High-Side/Low-Side Bi-Directional I2C Current and Power Monitors. Texas Instruments produces this family of power monitors and the library supports the following devices:

Device Max V Package Shunt mV Description Tested
INA219 (datasheet) 26V SOT-23 8p ±40,±80,±160,±320mV Yes
INA220 (datasheet) 26V VSSOP 10p ±40,±80,±160,±320mV identical to INA219 INA219
INA220-Q1 (datasheet) 26V VSSOP 10p ±40,±80,±160,±320mV Identical to INA219 INA219
INA226 (datasheet) 36V VSSOP 10p ±81.92mV Yes
INA230 (datasheet) 28V QFN 16p ±81.92mV Identical to INA226 INA226
INA231 (datasheet) 28V DSBGA-12 ±81.92mV Identical to INA226 INA226
INA260 (datasheet) 36V TSSOP 16p n.a. 2 mΩ shunt, ±15A Yes
INA3221 (datasheet) 26V VQFN(16) ±163.8mV 3 concurrent circuits Yes

Texas Instruments has a document which documents and details additional differences between the various INA-devices, this PDF document can be read at Digital Interfaces for Current Sensing Devices

Hardware layout

The packages are quite small and unwieldy to solder, but fortunately there are several sources for breakout boards for the various devices which are worth their cost in time savings to prototype. My first test with a INA226 involved a blank breakout board, some solder paste, a frying pan, desoldering braid, a magnifying glass and far too much time spent to set up the first breadboard.

Library description

The library locates all INA2xx devices on the I2C chain. The address and configuration information for each located device is stored in EEPROM and the maximum number of devices that the library supports depends upon how much EEPROM is available on the Atmel device used to compile. Currently each device uses 6 bytes of storage. Each device detected can be individually configured with 2 setup parameters describing the expected maximum amperage and the shunt/resistor values. Since the INA2xx devices only measure bus and shunt voltages, these two parameters allow the library to set up the device's internal configuration so that computed amperage and watts can also be retrieved. These wiki pages describe the library calls and usage of the example programs.

Avoiding Floating Point

Since the Arduino Atmel-based microprocessors do not have built-in floating point, any use of floating point variables will require software emulation which is rather slow and increases program size significantly. Therefore great lengths have been taken to avoid the use of floating point arithmetic in the library. In order to keep the original level of precision without loss yet to allow the full range of voltages and amperes to be returned, the amperage results are returned as 32-bit integers.

Since the functionality differs between the supported INA2xx devices there are some functions which will only work for certain devices.

DOI