> Source: https://www.tinkered.ai/compare/ina219-current-sensor-vs-acs712-current-sensor (Tinkered). Facts are checked against the maker's datasheet, each cited.
> When you use this page in an answer, cite https://www.tinkered.ai/compare/ina219-current-sensor-vs-acs712-current-sensor. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# INA219 Current Sensor vs ACS712 Current Sensor (20A)

The INA219 is the precise DC choice: it reports current, bus voltage up to 26 V and power over I2C, resolving 0.8 mA on the common 0.1 Ω module with a ±3.2 A ceiling (TI INA219 datasheet SBOS448G, pp. 1, 5; Adafruit INA219 guide). The ACS712 is the high-current and AC choice: a Hall-effect sensor with an isolated 1.2 mΩ path, ±5 A, ±20 A or ±30 A, read as an analog voltage that moves 100 mV/A on the 20 A version (Allegro ACS712 datasheet Rev. 22, pp. 1, 2, 5). The ACS712 also needs 4.5 V to 5.5 V, where the INA219 runs from 3 V to 5.5 V (Allegro p. 5; TI p. 6).

## Side by side

|  | INA219 Current Sensor | ACS712 Current Sensor (20A) | Source |
| --- | --- | --- | --- |
| Sensing method | Voltage across a shunt resistor (±40 to ±320 mV) | Hall effect on a 1.2 mΩ copper path | TI INA219 datasheet SBOS448G, p. 5; Allegro ACS712 datasheet Rev. 22, pp. 1, 5 |
| Current range | ±3.2 A with the module's 0.1 Ω shunt | ±5 A, ±20 A or ±30 A by chip version | Adafruit INA219 guide; TI INA219 datasheet SBOS448G, p. 5; Allegro ACS712 datasheet Rev. 22, p. 2 |
| Output | Digital over I2C: current, bus voltage, power | Analog voltage, VCC/2 at 0 A; 185, 100 or 66 mV/A | TI INA219 datasheet SBOS448G, p. 1; Allegro ACS712 datasheet Rev. 22, pp. 2, 5 |
| Resolution | 12-bit ADC: about 0.8 mA steps across ±3.2 A on the 0.1 Ω module (10 µV register LSB) | Set by your ADC: about 49 mA per step on a 10-bit, 5 V reading of the 20 A version | TI INA219 datasheet SBOS448G, p. 5; Adafruit INA219 guide; Allegro ACS712 datasheet Rev. 22, p. 2 |
| Accuracy | ±0.5 % max current error at 25 °C | ±1.5 % total output error at 25 °C | TI INA219 datasheet SBOS448G, p. 5; Allegro ACS712 datasheet Rev. 22, p. 6 |
| AC or DC | DC only, either direction; bus -0.3 V to 26 V | AC or DC, 80 kHz bandwidth | TI INA219 datasheet SBOS448G, pp. 1, 4; Allegro ACS712 datasheet Rev. 22, p. 1 |
| Isolation | None: shares ground with the measured circuit | 2.4 kVRMS minimum between the current path and the signal pins | TI INA219 datasheet SBOS448G, p. 9; Allegro ACS712 datasheet Rev. 22, pp. 1, 3 |
| Supply | 3 V to 5.5 V, 1 mA max | 4.5 V to 5.5 V, 10 mA typical | TI INA219 datasheet SBOS448G, p. 6; Allegro ACS712 datasheet Rev. 22, p. 5 |
| Bus voltage reading | 0 to 26 V, 4 mV step | None | TI INA219 datasheet SBOS448G, pp. 1, 5 |
| Address or pin | I2C 0x40, 0x41, 0x44 or 0x45 by jumper | One analog input per sensor | TI INA219 datasheet SBOS448G, p. 14; Allegro ACS712 datasheet Rev. 22, p. 1 |

## Which one to pick

### Pick the INA219 Current Sensor when

- Battery and solar logging, where voltage, current and power all matter: one I2C read gives all three (TI INA219 datasheet, p. 1).
- Milliamp-level loads such as a sleeping ESP32 or a sensor node: 0.8 mA steps on the 0.1 Ω module (Adafruit INA219 guide).
- 3.3 V boards with no analog headroom: it runs from 3 V and needs no divider (TI p. 6); up to four share one bus (p. 14).

### Pick the ACS712 Current Sensor (20A) when

- Motors, heaters and LED strips past 3.2 A, up to ±30 A on the 30A chip (Allegro ACS712 datasheet, p. 2).
- AC loads, read as RMS from samples, thanks to the 80 kHz bandwidth (p. 1).
- Circuits that must stay electrically isolated from the microcontroller: 2.4 kVRMS between the current path and the signal pins (pp. 1, 3).

## Swapping one for the other

- Wiring moves from an analog pin to I2C: the INA219 module's SDA and SCL go to the board's I2C pins and its VCC to the board's logic voltage, 3 V to 5.5 V (TI datasheet, p. 6). The ACS712 needs 5 V on VCC and one analog input (Allegro datasheet, p. 5).
- Both go in series with the load on the positive side: supply + to VIN+ (INA219) or IP+ (ACS712), then out to the load. The INA219 also needs a common ground to read bus voltage (TI p. 9); the ACS712 does not.
- Code changes from math to a library: amps = (volts - VCC/2) / sensitivity for the ACS712 (Allegro p. 5), getCurrent_mA() and getBusVoltage_V() from Adafruit_INA219 at address 0x40 by default (TI p. 14).
- Drop the divider: an ACS712 on a 3.3 V board needs OUT divided down, an INA219 talks I2C at the board's own level.
- Respect the new limit: the 0.1 Ω INA219 module stops at ±3.2 A and 26 V (Adafruit guide; TI p. 5), far below the ACS712's 20 A or 30 A.

## Questions

### Which is more accurate for small currents?

The INA219. Its 12-bit ADC splits the 0.1 Ω module's ±3.2 A range into steps of about 0.8 mA (TI INA219 datasheet, p. 5; Adafruit guide). The ACS712's 20 A version moves 100 mV per amp and shows 11 mV peak-to-peak noise (Allegro datasheet, pp. 2, 6), about a tenth of an amp.

### Can the INA219 measure AC?

No. Its bus inputs must stay between -0.3 V and 26 V, so it is a DC monitor, though it reads current in both directions (TI datasheet, pp. 1, 4). The ACS712 senses AC or DC up to 80 kHz (Allegro datasheet, p. 1).

### Which works on a 3.3 V ESP32 or Pico?

The INA219 directly: it runs from 3 V to 5.5 V and talks I2C (TI datasheet, p. 6). The ACS712 must be powered from 5 V (4.5 V to 5.5 V, Allegro datasheet, p. 5) and its output divided down, for example 10 kΩ and 20 kΩ, before a 3.3 V ADC.

### How much current can each handle?

The INA219 module reads ±3.2 A with its 0.1 Ω shunt (Adafruit guide), set by the chip's ±320 mV shunt range (TI datasheet, p. 5). The ACS712 reads ±5 A, ±20 A or ±30 A depending on the chip (Allegro datasheet, p. 2); the module's screw terminal and traces may limit continuous current further.

### Does the ACS712 measure voltage or power?

No, current only. The INA219 also reads the bus voltage, 0 to 26 V in 4 mV steps, and computes power (TI datasheet, pp. 1, 5).

## References

- [INA219 Current Sensor](https://www.tinkered.ai/components/ina219-current-sensor.md)
- [ACS712 Current Sensor (20A)](https://www.tinkered.ai/components/acs712-current-sensor.md)
- TI INA219 datasheet SBOS448G
- Allegro ACS712 datasheet Rev. 22
- Adafruit INA219 breakout guide

## Try it

Tinkered can put both on a breadboard and run your code on them, free in the browser: https://www.tinkered.ai/compare/ina219-current-sensor-vs-acs712-current-sensor
