

The ACS712 is a Hall effect-based linear current sensor designed to measure both AC and DC currents. It provides an analog voltage output proportional to the current flowing through the sensor. The device is compact, easy to use, and highly accurate, making it ideal for a wide range of applications.








The ACS712 is available in different variants based on the current range: 5A, 20A, and 30A. Below are the key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage (Vcc) | 4.5V to 5.5V |
| Current Measurement Range | ±5A, ±20A, or ±30A (depending on model) |
| Sensitivity | 185 mV/A (5A), 100 mV/A (20A), 66 mV/A (30A) |
| Output Voltage | 2.5V at 0A (midpoint) |
| Response Time | 5 µs |
| Accuracy | ±1.5% |
| Operating Temperature | -40°C to 85°C |
The ACS712 is typically available in an 8-pin SOIC package. Below is the pinout:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1, 2, 3 | IP+ | Current input pin (positive terminal) |
| 4 | GND | Ground pin |
| 5 | VIOUT | Analog voltage output proportional to current |
| 6 | FILTER | External capacitor connection for noise filtering |
| 7, 8 | IP- | Current input pin (negative terminal) |
Below is an example of how to use the ACS712 with an Arduino UNO to measure AC current:
// Include necessary libraries
const int sensorPin = A0; // Connect VIOUT to Arduino analog pin A0
const float sensitivity = 185.0; // Sensitivity in mV/A for ACS712-05B
const float VREF = 2.5; // Reference voltage at 0A (midpoint)
void setup() {
Serial.begin(9600); // Initialize serial communication
}
void loop() {
int sensorValue = analogRead(sensorPin); // Read analog value from sensor
float voltage = (sensorValue / 1023.0) * 5.0; // Convert to voltage
float current = (voltage - VREF) * 1000 / sensitivity;
// Convert voltage to current in Amperes
Serial.print("Current: ");
Serial.print(current, 3); // Print current with 3 decimal places
Serial.println(" A");
delay(1000); // Wait for 1 second before next reading
}
No Output or Incorrect Readings:
High Noise in Output Signal:
Output Voltage Stuck at 2.5V:
Inaccurate Measurements:
Q: Can the ACS712 measure DC current?
A: Yes, the ACS712 can measure both AC and DC currents.
Q: How do I choose the correct ACS712 variant?
A: Select the variant based on the maximum current you need to measure. For example, use the 5A version for currents up to ±5A.
Q: What happens if I exceed the sensor's current rating?
A: Exceeding the current rating may damage the sensor or result in inaccurate readings. Always stay within the specified range.
Q: Can I use the ACS712 with a 3.3V microcontroller?
A: The ACS712 requires a 5V power supply, but its output can be read by a 3.3V microcontroller if the analog input pin supports 5V-tolerant signals.
Q: Is the ACS712 suitable for high-frequency AC signals?
A: The ACS712 has a bandwidth of approximately 80 kHz, making it suitable for most low- to medium-frequency AC signals.