El ACS712 es un sensor de corriente de efecto Hall de Allegro MicroSystems que genera una tensión analógica proporcional a la corriente AC o DC que circula por él. Conectarlo a un PLC basado en Arduino ofrece medición de corriente no invasiva con una sola entrada analógica y unas pocas líneas de sketch — sin resistencia shunt ni circuito de aislamiento.
Este post cubre las especificaciones del sensor, la conexión a un PLC M-Duino y un sketch Arduino funcional que lee y convierte la salida analógica a amperios. El mismo enfoque se aplica a cualquier PLC basado en Arduino con entradas analógicas.
Especificaciones del ACS712
El módulo ACS712 está disponible en tres rangos de corriente. Selecciona la variante que se adapte a la carga que vayas a monitorear:
| Variante | Rango de corriente | Sensibilidad | Salida a 0 A |
|---|---|---|---|
| ACS712-05B | ±5 A | 185 mV/A | 2.5 V |
| ACS712-20A | ±20 A | 100 mV/A | 2.5 V |
| ACS712-30A | ±30 A | 66 mV/A | 2.5 V |
Características comunes a todas las variantes: tensión de alimentación 5 VCC, ancho de banda 80 kHz, ruido de salida 21 mV RMS, error total de salida ±1,5% a 25 °C. La salida a 0 A es siempre VCC/2 = 2,5 V. La corriente positiva aumenta la salida por encima de 2,5 V; la corriente negativa la reduce por debajo de 2,5 V.
Requisitos
- PLC basado en Arduino con entradas analógicas (M-Duino 21+, 42+, 58+, o Ardbox Analog)
- Módulo sensor ACS712 — variante de 5 A, 20 A o 30 A según la carga
- Arduino IDE con la librería de placas Industrial Shields instalada
- Carga a monitorear: motor, resistencia calefactora, bomba o carga resistiva
No se requieren librerías adicionales. La conversión usa solo funciones integradas de Arduino.
Conexión
El módulo ACS712 tiene tres conexiones de señal — VCC, GND y OUT — más dos terminales de carga (IP+, IP−) a través de los cuales pasa el conductor monitorizado.
| Pin ACS712 | Conexión M-Duino |
|---|---|
| VCC | 5 V pin |
| GND | GND |
| OUT | I0.12 (analog input, pin A0) |
Las entradas analógicas del M-Duino están acondicionadas para señales industriales de 0–10 V. El ACS712 genera de 0–5 V (VCC/2 ± rango), por lo que el ADC usa la mitad de su rango — aceptable para la mayoría de tareas de monitoreo. Pasa el conductor de carga por la apertura del sensor ACS712; el sensor mide el campo magnético generado por la corriente sin interrumpir el circuito.
Sketch de Arduino
Ajusta SENSITIVITY según tu variante: 0,185 para 5 A; 0,100 para 20 A; 0,066 para 30 A.
// ACS712 current sensor — Arduino-based PLC
// Adjust SENSITIVITY: 0.185 (5A) / 0.100 (20A) / 0.066 (30A)
#define SENSOR_PIN A0 // I0.12 on M-Duino
#define V_REF 2.5 // Output voltage at 0 A (VCC/2)
#define SENSITIVITY 0.185 // V/A — change for your variant
#define NUM_SAMPLES 100 // Samples to average per reading
void setup() {
Serial.begin(9600);
}
void loop() {
long sum = 0;
for (int i = 0; i < NUM_SAMPLES; i++) {
sum += analogRead(SENSOR_PIN);
delay(1);
}
float avgADC = sum / (float)NUM_SAMPLES;
// M-Duino 0–10 V input: full ADC range (0–1023) = 10 V
float voltage = (avgADC / 1023.0) * 10.0;
// Convert voltage to current in amperes
float current = (voltage - V_REF) / SENSITIVITY;
Serial.print("Voltage: ");
Serial.print(voltage, 3);
Serial.print(" V | Current: ");
Serial.print(current, 3);
Serial.println(" A");
delay(500);
}El sketch promedia 100 muestras para reducir el ruido del ADC. A una sensibilidad de 185 mV/A, el ruido de salida del ACS712 de 21 mV RMS se traduce en un error de 0,11 A en pico — el promediado lo reduce significativamente antes de reportar.
Casos de uso industriales
El monitoreo de corriente no invasivo con el ACS712 cubre una amplia gama de tareas industriales:
- Monitoreo de carga de motores — detecta condiciones de sobrecarga o subcarga que indican problemas mecánicos
- Seguimiento del consumo energético — registra la corriente por máquina para OEE y auditorías energéticas
- Salud de bombas y compresores — los cambios en la firma de corriente señalan cavitación y desgaste de rodamientos
- Verificación de elementos calefactores — confirma que los elementos consumen la corriente esperada tras la actuación
- Alerta previa al disparo del disyuntor — avisa a los operadores antes de que la sobrecorriente alcance el umbral de disparo
Para aplicaciones que requieran una precisión superior al 1,5%, considera transductores de corriente de lazo 4–20 mA conectados a las entradas analógicas industriales del PLC. El ACS712 es adecuado para nodos de monitoreo embebidos de bajo coste donde una precisión moderada es suficiente.
Ejecutar esto en hardware de Industrial Shields
Las familias M-Duino y Ardbox de Industrial Shields son controladores programables basados en placas Arduino originales — el mismo hardware e IDE que ya estás utilizando. Los PLCs M-Duino (21+, 42+, 58+) son controladores en carril DIN basados en el Arduino Mega, con protección industrial de E/S, alimentación de 12–24 VCC y relés, E/S analógicas y digitales listos para instalación en panel. La serie Ardbox aporta el mismo endurecimiento industrial en un factor de forma más compacto basado en el Arduino Leonardo.
Ambas familias ejecutan sketches estándar de Arduino sin modificaciones. El ejemplo del ACS712 funciona tal cual — conecta el sensor a la entrada analógica, súbelo desde el Arduino IDE, y el PLC lee y reporta la corriente dentro de una envolvente IP20 diseñada para instalación en armarios industriales.



Sensor de corriente ACS712 con PLC basado en Arduino: conexión y sketch