The ACS724 is a high-precision current sensor manufactured by Allegro Microsystems. It is designed to measure current in a circuit, with a maximum current handling capacity of 30 amperes. The sensor outputs an analog voltage signal proportional to the current flowing through it, making it ideal for interfacing with microcontrollers, such as Arduino, for real-time current monitoring.
The ACS724 is a Hall-effect-based current sensor with the following key specifications:
Parameter | Value |
---|---|
Supply Voltage (Vcc) | 4.5V to 5.5V |
Current Measurement Range | ±30A |
Sensitivity | 40mV/A (typical) |
Output Voltage Range | 0.5V to 4.5V |
Zero Current Output Voltage | ~2.5V |
Bandwidth | 120 kHz |
Operating Temperature Range | -40°C to 150°C |
Package Type | SOIC-8 |
The ACS724 comes in an 8-pin SOIC package. Below is the pinout and description:
Pin Number | Pin Name | Description |
---|---|---|
1 | IP+ | Positive current input terminal |
2 | IP- | Negative current input terminal |
3 | VIOUT | Analog voltage output proportional to current |
4 | GND | Ground connection |
5 | NC | No connection (leave unconnected) |
6 | NC | No connection (leave unconnected) |
7 | VCC | Supply voltage (4.5V to 5.5V) |
8 | FILTER | Optional external capacitor for noise filtering |
VCC
pin to a 5V power supply and the GND
pin to ground.IP+
and IP-
terminals. Ensure the current does not exceed the ±30A rating.VIOUT
pin to an analog input pin of a microcontroller (e.g., Arduino) to read the voltage proportional to the current.FILTER
pin and ground.FILTER
pin to reduce noise in the output signal.The following code demonstrates how to interface the ACS724 with an Arduino UNO to measure current:
// Define the analog pin connected to the ACS724 VIOUT pin
const int currentSensorPin = A0;
// Define the sensitivity of the ACS724 (40mV/A for ±30A version)
const float sensitivity = 0.04; // Sensitivity in V/A
// Define the zero-current output voltage (2.5V for ACS724)
const float zeroCurrentVoltage = 2.5; // Zero current voltage in volts
void setup() {
Serial.begin(9600); // Initialize serial communication
}
void loop() {
// Read the analog value from the sensor
int sensorValue = analogRead(currentSensorPin);
// Convert the analog value to voltage (5V reference, 10-bit ADC)
float sensorVoltage = sensorValue * (5.0 / 1023.0);
// Calculate the current in amperes
float current = (sensorVoltage - zeroCurrentVoltage) / sensitivity;
// Print the current to the Serial Monitor
Serial.print("Current: ");
Serial.print(current);
Serial.println(" A");
delay(500); // Wait for 500ms before the next reading
}
No Output Signal:
IP+
and IP-
.Inaccurate Readings:
FILTER
pin to reduce noise.Output Voltage Stuck at 2.5V:
Overheating:
Q: Can the ACS724 measure both AC and DC currents?
A: Yes, the ACS724 can measure both AC and DC currents, as it outputs a voltage proportional to the instantaneous current.
Q: What happens if the current exceeds 30A?
A: The sensor may become damaged or provide inaccurate readings. Always ensure the current stays within the specified range.
Q: Can I use the ACS724 with a 3.3V microcontroller?
A: The ACS724 requires a 5V supply, but its output can be read by a 3.3V microcontroller if the output voltage does not exceed the ADC input range. Use a voltage divider if necessary.
Q: How do I improve measurement accuracy?
A: Use a high-resolution ADC, calibrate the sensor, and add a filtering capacitor to reduce noise.