Electrical / Current
Interfacing ACS712 Electrical / Current with Arduino Uno
What is the ACS712?
The ACS712 is a Hall-effect based linear current sensor IC that measures AC or DC current by sensing the magnetic field generated as current flows through an internal low-resistance conductor, with the input and output sides fully isolated. It outputs a simple analog voltage proportional to current, centered at half of the supply voltage, making it a popular building block for energy monitors, overcurrent protection circuits, and battery/motor current logging in maker projects.
Specifications
| Sensor type | Hall-effect linear current sensor with internal galvanic isolation |
| Operating voltage | 5 V DC |
| Output | Analog voltage centered at Vcc/2 (~2.5V at 5V), scaling up or down with current direction |
| Current range variants | ±5A, ±20A, or ±30A, selected by the specific ACS712 part number |
| Sensitivity | 185 mV/A (5A version), 100 mV/A (20A version), 66 mV/A (30A version) |
| Bandwidth | 80 kHz typical, suitable for both AC and DC current sensing |
| Internal resistance | ~1.2 mΩ conductor path, minimal voltage drop and power loss |
| Interface | Analog output — read directly with an ADC / analogRead() |
ACS712 Pinout
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power, 5V DC |
| 2 | GND | Ground |
| 3 | OUT | Analog output voltage, proportional to sensed current |
| 4 | IP+ | Current path input terminal — wire in series with the load/source being measured |
| 5 | IP- | Current path output terminal — completes the series current loop |
IP+ and IP- carry the actual load current and must be wired in series with the circuit being measured (not in parallel like a voltmeter); VCC/GND/OUT are the separate low-power signal side. Because the output rides on a Vcc/2 offset, most projects calibrate the zero-current reading in software before scaling by the sensitivity constant for their specific part variant.
Setting Up ACS712 with Arduino Uno
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| VCC | 5V | — |
| GND | GND | — |
| OUT | A0 | Analog voltage output, centered at ~2.5V with no current flowing |
| IP+ / IP- | In series with the load — not connected to the Arduino | The current to be measured flows through these two screw terminals, in series with the load's supply wire |
Example code
ACS712 comes in 5A, 20A, and 30A variants with different sensitivity constants — check which one you have and update SENSITIVITY accordingly, or every reading will be wrong by a fixed ratio. The 2.5V zero-point drifts slightly per unit; for accurate work, measure your specific module's output with 0A flowing and use that instead of the datasheet value.
Related Guides & Projects

Arduino Uno R3 Pinout: Every Pin Explained (Digital, Analog, PWM, Power)
Complete Arduino Uno R3 pinout reference: all 14 digital pins, 6 analog inputs, PWM, UART, SPI, I2C, AREF, and power rails explained with wiring tips and common mistakes.

Ultimate Arduino Mega 2560 Pinout Guide: Complete Power & I/O Reference
Master the Arduino Mega 2560 pinout. Detailed reference for all 54 digital pins, 16 analog inputs, PWM, UARTs, SPI, I2C, interrupts, and power. Includes a printable table and practical wiring tips.

Interfacing HC-SR04 Ultrasonic Sensor with Arduino
Measure distance accurately using ultrasonic sound waves and an Arduino Uno — no complex math, no expensive hardware.
HC‑SR04 Ultrasound Distance Measurement with Arduino – Parking Alert (LCD & Buzzer)
Learn HC‑SR04 ultrasound distance measurement with Arduino Uno. Build a parking alert system with 16x2 LCD and buzzer – shows distance and beeps faster as you approach.