I2Cbeginner

INA219 Current Monitor

A 100 milliohm resistor in the positive wire and a chip that reads the millivolts across it. Current, voltage and power over I²C, up to 3.2 A on a rail of up to 26 V.

Specifications

ChipTexas Instruments INA219AIDCNR in a SOT-23-8 package — the A grade, so ±0.5% on the current reading at room temperature and ±1% over −25 to 85 °C
Shunt100 mΩ, 1%, rated 2 W. Yageo PT2512FK-7W0R1L, in the positive wire between the POWER terminal and the LOAD terminal
Current range±0.4, ±0.8, ±1.6 or ±3.2 A, chosen in software by the chip's gain setting. Above the setting you picked the reading sits at full scale and stops moving
ResolutionOne count is 0.1 mA — 10 µV of shunt voltage across 100 mΩ. The fixed zero-point error is larger than that: up to ±1 mA on the narrowest setting and ±2 mA on the widest
Bus voltage0 to 26 V, measured from the LOAD + screw down to the board's ground. 26 V is an absolute maximum on the chip, not a recommendation
Supply3 to 5.5 V on the hole marked 3V3 — the chip's own supply, separate from the rail being measured. Feed it the same rail your microcontroller's logic runs at
Header4 pins on 2.54 mm pitch, right-angle, printed GND, 3V3, SCL, SDA. Note that SCL comes before SDA on this board
Terminals2 KF301-5.0 screw terminals on 5 mm pitch: a red one marked POWER and a black one marked LOAD, each with a + and a − screw
IsolationNone. Both − screws, the GND pin and the chip's ground are one net, so the supply you are measuring has to share a ground with the board reading it
I²C address0x40 out of the box. Two solder pads on the back, A1 and A0, give 0x40, 0x41, 0x44 and 0x45 — A1 is worth four and A0 is worth one
Pull-ups10 kΩ on SDA and on SCL, to the 3V3 rail. Fitted, and not removable — so this board sets the bus levels for anything sharing them
Power LEDRed, from the 3V3 rail through 5.1 kΩ — about a quarter of a milliamp at 3.3 V. On whenever the board has power, and on no GPIO
Size22.4 × 30.4 mm TinkerBlock board, two LEGO-compatible holes 16 mm apart
In the box1 × TK119 INA219 block, screw terminals and header fitted

What it does

A resistor and a chip that reads it. The resistor, 100 milliohms, sits in the positive wire between your supply and your load, so everything the load draws goes through it: at 500 mA that makes 50 millivolts across it, and the INA219 beside it measures exactly that. It also measures the voltage the load is getting, and works out current in milliamps and power in milliwatts.

Drag to turn it
The TK119: the rail at the back, the microcontroller at the front. Turn it over for the back.

Two things to know before wiring

  • SCL comes before SDA. The header reads GND, 3V3, SCL, SDA, the reverse of most I²C boards. Swapped, the block is simply not found.
  • The block goes in the positive wire: supply into POWER, load out of LOAD. Both minus screws are the header's GND, so it can go nowhere else.

Wiring, in six lines

  1. GND to GND.
  2. 3V3 to your board's logic supply: 3V3 on an ESP32 or a Pico, 5V on an Uno.
  3. SCL to SCL, SDA to SDA (GPIO 9 and 8 on the book's ESP32-S3).
  4. Load + to LOAD +, load − to LOAD −.
  5. Supply + to POWER +, supply − to POWER −, last.
  6. The rail stays within 0 to 26 V, and the current within 3.2 A.

Where to start

The handbook below is eleven short articles. Read Current through a resistor for what the block measures, POWER in, LOAD out and SCL comes first before wiring, and Four ranges, one step before choosing a calibration. The first reading is the ESP32-S3 sketch that prints all four numbers. For three rails at once, the INA3221 has a book of its own, which compares the two boards.

When it doesn’t work

My current reading is negative.
The supply and the load are in the wrong terminals. Current is meant to flow POWER → LOAD, which is the direction the two arrows printed between them point. Swap the two pairs of wires and the sign comes right. Nothing is damaged either way round, but with them swapped the voltage the board reports is the supply's rather than the load's.
A scan finds nothing at 0x40.
Almost always SCL and SDA. This board prints GND, 3V3, SCL, SDA — the clock before the data, which is the opposite of the other I²C blocks and of the INA3221 sold beside it. Check the silkscreen rather than the wire colours, then check that the red power LED is lit.
The voltage looks right but the current is out by a factor of two.
The chip does not measure current. It measures millivolts and divides by a resistance your sketch told it about, so a wrong shunt value or a wrong calibration number scales the current by exactly that ratio while leaving the voltage perfect. Set 0.1 Ω and the maximum current you expect, and nothing else.
Can it measure my board's sleep current?
No. One count is 0.1 mA and the zero-point error is worth about ±1 mA, while a sleeping ESP32 draws tens of microamps. This board shows you a rail at work — a Wi-Fi transmit burst, a motor starting, an LED strip at full brightness. Sleep current needs a meter with a microamp range.
Can I put two of these on one bus?
Up to four. The two pads on the back are A1 and A0, and bridging one joins that pin to the supply against a 10 kΩ pull-down. A1 is worth four and A0 is worth one, so the four addresses are 0x40, 0x41, 0x44 and 0x45 rather than four in a row. Write the address on the board with a marker once you have soldered it.
How much current can it actually take?
The chip stops reporting above 3.2 A, which is the limit that matters. The resistor is rated 2 W and dissipates about 1 W at 3.2 A, so it will be hot to the touch at the top of the range and is past its rating a little over 4 A. A 5 mm screw terminal of this size is normally rated for several times that, so neither the terminals nor the resistor is the limit you meet first.

The INA219 monitor handbook

11 articles · about 60 minutes

This page is the reference: what the part is, what it is made of, and the questions people arrive already asking. The handbook is the walk — the same part in the order somebody actually meets it.

What it measures

2 articles

A tenth of an ohm in the positive wire, and the chip that reads the millivolts across it.

Wiring it

3 articles

Where the block goes in a circuit, the header that puts the clock first, and the two pads that move its address.

The numbers

3 articles

Which two numbers are measured, the four ranges and what they cost, and how far off a reading can be.

Using it

3 articles

A first reading on an ESP32-S3, catching a motor starting, and where to look when the number is wrong.

Edit this page — content/modules/ina219.mdx

Community

Questions about this product

See what other owners have asked, and read their solutions.

Ask a question ↗

TK119 INA219 Current and Voltage Monitor

Loading discussions…

Discuss this article

Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.

Browse Modules and blocks on the forum →