

The ACS 712 is a Hall effect-based 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 highly versatile, offering electrical isolation between the measured current and the output signal, making it ideal for applications requiring safety and precision.








The ACS 712 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 |
| Output Voltage Range | 0V to Vcc |
| Sensitivity (±5A version) | 185 mV/A |
| Sensitivity (±20A version) | 100 mV/A |
| Sensitivity (±30A version) | 66 mV/A |
| Measurement Range | ±5A, ±20A, or ±30A (depending on model) |
| Response Time | 5 µs |
| Isolation Voltage | 2.1 kV RMS |
| Operating Temperature | -40°C to 85°C |
The ACS 712 is typically available in an 8-pin SOIC package. Below is the pinout description:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1, 2, 3 | IP+ | Current input terminal (positive side) |
| 4, 5, 6 | IP- | Current input terminal (negative side) |
| 7 | Vcc | Power supply (4.5V to 5.5V) |
| 8 | OUT | Analog voltage output proportional to current |
Below is an example code to measure current using the ACS 712 sensor with an Arduino UNO:
// Define the analog pin connected to the ACS 712 OUT pin
const int sensorPin = A0;
// Define the sensitivity of the ACS 712 (e.g., 185 mV/A for ±5A version)
const float sensitivity = 0.185; // in volts per ampere
// Define the supply voltage (Vcc) and the zero-current offset
const float Vcc = 5.0; // in volts
const float zeroCurrentOffset = Vcc / 2; // 2.5V for a 5V supply
void setup() {
Serial.begin(9600); // Initialize serial communication
}
void loop() {
// Read the analog value from the sensor
int sensorValue = analogRead(sensorPin);
// Convert the analog value to voltage
float sensorVoltage = (sensorValue / 1023.0) * Vcc;
// Calculate the current in amperes
float current = (sensorVoltage - zeroCurrentOffset) / sensitivity;
// Print the current value to the Serial Monitor
Serial.print("Current: ");
Serial.print(current);
Serial.println(" A");
delay(1000); // Wait for 1 second before the next reading
}
sensitivity value in the code with the appropriate value for your ACS 712 variant.Incorrect Current Readings
No Output Signal
Noisy Output
Overheating
Q1: Can the ACS 712 measure both AC and DC currents?
Yes, the ACS 712 can measure both AC and DC currents. The output voltage varies proportionally with the instantaneous current.
Q2: How do I select the correct ACS 712 variant?
Choose the variant based on the maximum current you need to measure. For example, use the ±5A version for small currents and the ±30A version for larger currents.
Q3: What is the accuracy of the ACS 712?
The typical accuracy is ±1.5% of the full-scale reading, but this may vary depending on the operating conditions and calibration.
Q4: Can I use the ACS 712 with a 3.3V microcontroller?
Yes, but ensure the sensor's output voltage does not exceed the ADC input range of the microcontroller. You may need a voltage divider or level shifter.
By following this documentation, you can effectively integrate the ACS 712 into your projects for accurate current measurement.