Measuring Current with ACS712 and Arduino: Wiring and Calibration

Measuring Current with ACS712 and Arduino: Wiring and Calibration

Measuring voltage with Arduino is straightforward with a simple voltage divider, but measuring current needs a different approach — the ACS712 hall-effect sensor handles that by detecting the magnetic field a current creates rather than touching the circuit's conductors directly.

How it works

The original ACS712 is commonly available in ±5 A, ±20 A, and ±30 A ranges, with nominal sensitivities of about 185, 100, and 66 mV/A respectively. Current flows through an internal copper path and its magnetic field is measured with galvanic isolation inside the IC.

An important distinction

Unlike a non-invasive clamp meter that simply wraps around a wire from outside, the ACS712 is an in-line sensor: the circuit being measured has to be broken and routed through the module itself. That makes it better suited to a permanent installation — a home automation panel or a remote power-monitoring project — than a quick one-off measurement.

Wiring and reading it

The sensor's analog output pin connects to one of Arduino's analog input pins. At zero current, the output sits at a voltage offset around 2500mV (roughly half of a 5V supply); current in either direction shifts that voltage up or down from the offset.

The conversion math

Measure the zero-current offset on the actual board and use the sensitivity of the installed variant: approximately 100 mV/A for the 20 A part, not 185. Calibrate offset and gain, and sample over complete cycles when calculating AC RMS current. IC isolation alone does not make every low-cost breakout safe for mains; PCB spacing, terminals, enclosure, and installation still matter.

Engineering review: verify the library version, module operating voltage, and the actual board pinout before wiring; visually similar breakout boards can differ.

You can find ACS712 current sensor modules at Juthour Tech.

Leave your comment

*
*
Only registered users can leave comments.