ACS712 Current Sensor Module

ACS712 5A Current Sensor Module
Hall-Effect Based AC/DC Current Measurement for Arduino Projects
Introduction
The ACS712 is a hall-effect based current sensor that can measure both AC and DC currents up to ±5A. It provides analog output proportional to the measured current, making it ideal for energy monitoring, motor control, and over-current protection applications.
Key Features
Bidirectional
Measures both AC and DC currents
Easy Interface
Analog output (66mV/A sensitivity)
Isolated
2.1kV RMS voltage isolation
Low Noise
80mA output noise typical
Technical Specifications
Current Range | ±5A |
---|---|
Sensitivity | 185-190mV/A (typical) |
Zero Current Output | VCC/2 (2.5V at 5V supply) |
Operating Voltage | 4.5V – 5.5V DC |
Bandwidth | 80kHz |
Isolation Voltage | 2.1kV RMS |
Accuracy | ±1.5% at 25°C |
Dimensions | 31mm × 13mm × 10mm |
Pin Configuration
Pin | Function | Arduino Connection |
---|---|---|
VCC | Power Supply (5V) | 5V |
GND | Ground | GND |
OUT | Analog Output | A0 |
IP+ | Current Input + | Load positive |
IP- | Current Input – | Load negative |
Warning: Do not exceed 5A current or connect directly to mains voltage
Wiring Diagram
// Basic Connections: // VCC → 5V // GND → GND // OUT → A0 // IP+ → Load positive // IP- → Load negative
Basic Current Measurement
const int sensorPin = A0; const float mVperAmp = 185.0; // Sensitivity for 5A model const float vRef = 5.0; // Arduino reference voltage const int adcResolution = 1023; // 10-bit ADC void setup() { Serial.begin(9600); } void loop() { float voltage = (analogRead(sensorPin) * vRef) / adcResolution; float zeroVoltage = vRef / 2; // 2.5V at no current float current = (voltage - zeroVoltage) * 1000 / mVperAmp; Serial.print("Voltage: "); Serial.print(voltage, 3); Serial.print("V\tCurrent: "); Serial.print(current, 2); Serial.println("A"); delay(1000); }
AC Current Measurement
const int samples = 200; float offset = 2.5; // Zero current voltage (VCC/2) void setup() { Serial.begin(9600); // Calibrate zero offset float sum = 0; for(int i=0; i<samples; i++) { sum += analogRead(A0); delay(1); } offset = (sum / samples) * (5.0 / 1023.0); } void loop() { float maxI = 0, minI = 0; for(int i=0; i<samples; i++) { float voltage = (analogRead(A0) * 5.0) / 1023.0; float current = (voltage - offset) * 1000 / 185.0; if(current > maxI) maxI = current; if(current < minI) minI = current; delay(1); } float peakToPeak = maxI - minI; float rmsCurrent = peakToPeak / (2 * sqrt(2)); Serial.print("RMS Current: "); Serial.print(rmsCurrent, 2); Serial.println("A"); }
Advanced Features
Current Threshold Alert
void checkOverCurrent() { float current = getCurrent(); if(current > 4.0) { // 4A threshold digitalWrite(13, HIGH); // Alert LED Serial.println("OVER CURRENT!"); } else { digitalWrite(13, LOW); } }
Power Calculation
float calculatePower(float voltageSupply) { float current = getCurrent(); return voltageSupply * current; }
Moving Average Filter
#define FILTER_SIZE 10 float filterBuffer[FILTER_SIZE]; int filterIndex = 0; float filteredCurrent(float rawCurrent) { filterBuffer[filterIndex] = rawCurrent; filterIndex = (filterIndex + 1) % FILTER_SIZE; float sum = 0; for(int i=0; i<FILTER_SIZE; i++) { sum += filterBuffer[i]; } return sum / FILTER_SIZE; }
Troubleshooting
Zero Current Output Not 2.5V
- Check power supply voltage (must be 5V)
- Allow sensor to warm up for 5 minutes
- Calibrate zero offset in software
Noisy Readings
- Add 0.1μF capacitor between VCC and GND
- Implement software filtering (moving average)
- Keep wires short and away from noise sources
Incorrect Current Values
- Verify sensitivity value (185mV/A for 5A model)
- Check load connections (current must flow through IP+ to IP-)
- Ensure proper ground connections
Related Posts
MG90S Mini Digital 180° Servo
MG90S Mini Digital 180° Servo
Metal Gear, 2.2kg·cm Torque for RC and Robotics
Introduction
The MG90S is a compact di...
XKC-Y25-V Non-Contact Water Liquid Level Sensor
XKC-Y25-V Non-Contact Water Liquid Level Sensor
Capacitive Detection Without Physical Contact
Introduction
The XKC-Y...
Waterproof Ultrasonic Obstacle Sensor, Sensor with Separate Probe
+
Waterproof Ultrasonic Obstacle Sensor
Distance Measurement with Separate Waterproof Probe
Introduction
The Wa...
Water Level Depth Detection Sensor
Water Level Depth Detection Sensor
Liquid Measurement for Arduino and IoT Projects
Introduction
The Water Level Dept...
VL53L0X Purple Laser Distance Sensor Module
VL53L0X Laser Distance Sensor Module
High-Speed, High-Precision Time-of-Flight Distance Measurement
Introduction
The...
TCS34725 RGB Color Sensor Module
TCS34725 RGB Color Sensor Module
High-Accuracy Digital Color Detection with IR Filter
Introduction
The TCS34725 is a...
TCS3200 Color Sensor Module
TCS3200 Color Sensor Module
Precise RGB Color Detection for Arduino and Embedded Projects
Introduction
The TCS3200 C...
PN532 NFC RFID Read/Write Module V3 Kit
PN532 NFC RFID Read/Write Module V3 Kit
Advanced Near Field Communication for Arduino and Embedded Systems
Introducti...
HC-SR501 PIR Motion Sensor Module
HC-SR501 PIR Motion Sensor Module
Passive Infrared Detection for Security and Automation Projects
Introduction
The H...
Flex Sensor 5.6 cm (Detect Bending Motion)
Flex Sensor 5.6cm
Bend Detection Sensor for Arduino and Wearable Electronics Projects
Introduction
The 5.6cm...
AS608 Optical Fingerprint Sensor Module
AS608 Optical Fingerprint Sensor Module
High-Precision Biometric Recognition for Arduino and Microcontroller Projects
...
DHT11 Temperature and Humidity Sensor Module
DHT11 Temperature & Humidity Sensor
Basic Environmental Sensing with Status LED for Arduino Projects
Introduction...
Recent Comments