Uso del sensor de corriente DC/AC Allegro ACS712 con código de Arduino
En este tutorial aprenderemos a usar el sensor de corriente Allegro ACS712 para medir tanto corriente alterna (CA) como corriente continua (CC) con un Arduino. El sensor ACS712 entrega un voltaje proporcional a la corriente que lo atraviesa, lo que nos permite leer y mostrar fácilmente los valores de corriente en el monitor serial del Arduino. Este proyecto es ideal para quienes buscan monitorizar la corriente en diversas aplicaciones, como fuentes de alimentación o sistemas de baterías.

Construiremos un circuito sencillo que conecta el sensor ACS712 al Arduino y luego escribiremos un programa para leer la salida del sensor. El resultado esperado es tener lecturas de corriente en tiempo real mostradas en el monitor serial. Para aclarar la implementación, asegúrate de ver el video (en el minuto 02:00).
Hardware explicado
El sensor de corriente Allegro ACS712 es un módulo compacto que puede medir corrientes de hasta 30 A, dependiendo de la versión que elijas. Tiene tres pines: VCC para la alimentación, GND para tierra y un pin de salida que proporciona el voltaje correspondiente a la corriente medida. El sensor utiliza el principio del efecto Hall, en el que la corriente que pasa por un conductor genera un campo magnético. Ese campo es detectado y convertido en un voltaje, que a continuación se envía al Arduino.
El módulo está disponible en diferentes capacidades de corriente (5A, 20A y 30A) y entrega niveles de voltaje de 185 mV/A, 100 mV/A y 66 mV/A respectivamente. Esto significa que por cada amperio de corriente que fluya a través del sensor se obtiene una salida de voltaje correspondiente que se puede leer y procesar. Esta característica lo hace versátil para diversas aplicaciones.
Detalles de la ficha técnica
| Fabricante | Allegro Microsystems |
|---|---|
| Número de pieza | ACS712ELCTR-30A-T |
| Voltaje de lógica/E/S | 4.5-5.5 V |
| Tensión de alimentación | 5 V |
| Corriente de salida (por canal) | 30 A máx. |
| Orientación sobre la frecuencia PWM | No aplica |
| Umbrales de la lógica de entrada | No aplica |
| Caída de tensión / Rdrenador-fuente (en conducción)/ saturación | 1.2 mΩ |
| Límites térmicos | 150 °C máx. |
| Paquete | TO-220 |
| Notas / variantes | Disponible en 5 A, 20 A y 30 A |
- Asegúrese de que el cableado sea el adecuado para evitar cortocircuitos.
- Utilice un cable de calibre apropiado para las corrientes nominales (12 AWG para 30 A).
- Monitoree la temperatura del módulo durante su funcionamiento.
- Considere añadir un disipador de calor para aplicaciones de mayor corriente.
- Calibre la salida del sensor en función de su aplicación específica.
Instrucciones de cableado

Para cablear el sensor Allegro ACS712 a tu Arduino, comienza conectando el pin VCC del ACS712 al pin de 5V del Arduino. A continuación, conecta el pin GND del sensor a uno de los pines GND del Arduino. El pin de salida del ACS712 debe conectarse al pin de entrada analógica A0 del Arduino.
Para la medición de corriente, conecte la carga en serie con el sensor. Esto significa que el cable positivo de su fuente de alimentación debe ir a uno de los terminales de entrada del sensor de corriente, mientras que el otro terminal se conecta a la carga. El otro lado de la carga debe volver a la fuente de alimentación, completando el circuito. Asegúrese de usar un calibre de cable adecuado para la corriente que está midiendo para evitar el sobrecalentamiento.
Ejemplos de código y guía paso a paso
El siguiente fragmento de código inicializa el pin analógico y configura el monitor serie:
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage is from 4.5 to 5.5V. Normally 5V.
Aquí definimosVINcomo el pin de entrada analógica donde está conectada la salida del sensor. También establecemos la tensión de alimentaciónVCCa 5 V.

En la función loop(), leemos el voltaje del sensor ACS712 y calculamos la corriente:
float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
float current = voltage / sensitivity[model]; // Calculate current based on sensitivity
Aquí leemos el voltaje crudo del sensor y lo convertimos en la corriente real usando el arreglo de sensibilidad correspondiente al modelo del sensor.
Finalmente, imprimimos las lecturas de corriente en el monitor serie:
if (abs(current) > cutOffLimit) {
Serial.print("V: ");
Serial.print(voltage, 3); // print voltage with 3 decimal places
Serial.print("V, I: ");
Serial.print(current, 2); // print the current with 2 decimal places
Serial.println("A");
} else {
Serial.println("No Current");
}
Esta sección comprueba si la corriente supera un límite de corte definido e imprime las lecturas de voltaje y corriente en el monitor serie. Si la corriente está por debajo del umbral, muestra "Sin corriente".
Para ver el código completo, por favor consulte el código cargado debajo del artículo.
Demostración / Qué esperar
Cuando ejecutes el código y alimentes el circuito, deberías ver lecturas de corriente mostradas en el monitor serial. Al ajustar la carga, las lecturas deberían cambiar en consecuencia, siempre que la corriente esté por encima del límite de corte. Ten cuidado con la temperatura del sensor, especialmente al operar cerca de sus límites máximos.
Recursos y referencias
Aún no hay recursos.
Archivos📁
Hoja de datos (pdf)
-
Datasheet del sensor de corriente Allegro ACS712 AC/DC 4A, 20A, 30A
robojax-allegro_ACS712_current_sensor.pdf0.65 MB
Archivo de Fritzing
-
Sensor de corriente ACS712 Allegre
Allegreo ACS712 Current Sensor.fzpz0.03 MB