Sensor de Corriente ACS712 de 5, 20 y 30 A
Publicado por Victor Arrieta en
El módulo sensor de corriente ACS712 es un módulo que consta de un sensor de efecto hall con el cual es capaz de medir el campo magnético que fluye alrededor del conductor y así, de hacernos saber la cantidad de corriente que fluye por el conductor. La medida de la cantidad de corriente que fluye por los bornes del conductor se da a través de una señal análoga en la salida del módulo, la cual es proporcional a la corriente que fluye. Debido a su forma de funcionamiento, el sistema es tan capaz de medir corriente DC como AC,ya que internamente se hace la conversión a valor rms, sin embargo debe mencionarse que esta cualidad también lo hace propenso al ruido electromagnético.
Esquema de conexión con Arduino UNO
Código Arduino
int LedPin = 13;
int Sensor = A0;
void setup() {
pinMode(LedPin, OUTPUT);
}
float medir(void) // esta funcion toma el promedio de 100 mediciones
{
float corriente = 0;
for (int i = 0; i < 100 ; i++) {
float voltage = (float) analogRead(A0) * 5.0 / 1023.0;
corriente += (float) 1000*(voltage - 2.5) / 0.185;
//para el sensor de 5A es 0.185, para el de 20A es 0.1
//y para el de 30A es 0.066
delay(1);
}
return (corriente / 100);
}
void loop() {
float medicion = medir();
if (medicion > 15) { //en 15 mA para evitar errores por el ruido
digitalWrite(LedPin, HIGH);
delay(3000);
}
else
{
digitalWrite(LedPin, LOW);
}
}
Una vez subido el código, el led interno de la placa Arduino, el del pin 13, se encenderá cada vez que se mida una corriente mayor a 15mA fluyendo hacia la carga.
En este código, la fórmula para hallar la corriente está relacionada con la lectura del sensor de corriente que mide corriente alterna o continua. El sensor convierte la corriente medida en un voltaje analógico, el cual es leído por el Arduino a través del pin A0.
Aquí te explico paso a paso la fórmula que se usa en el código para calcular la corriente:
Fórmula:
corriente += (float) 1000*(voltage - 2.5) / 0.185;
Esta fórmula se utiliza para convertir la lectura de voltaje (obtenida del sensor) en una medición de corriente. Desglosémosla:
Lectura del voltaje analógico:
float voltage = (float) analogRead(A0) * 5.0 / 1023.0;
analogRead(A0)
: Lee el valor analógico del pin A0
, que estará entre 0 y 1023 (representando 0V a 5V).5.0/1023.0
se convierte este valor en un voltaje real, entre 0 y 5V.
Offset de 2.5V: El sensor ACS712 tiene un punto de referencia de 2.5V cuando no hay corriente fluyendo. Esto significa que, si no hay corriente, el sensor dará una salida de aproximadamente 2.5V.
- Entonces, para calcular la corriente real, se resta 2.5V de la lectura obtenida
(voltage - 2.5)
Factor de sensibilidad: La sensibilidad del sensor ACS712 depende de su rango de corriente:
- Para un sensor de 5A, la sensibilidad es de 185 mV/A o 0.185 V/A.
- Para un sensor de 20A, es 0.1 V/A.
- Para un sensor de 30A, es 0.066 V/A.
Este valor se usa para convertir el voltaje medido en corriente:
/ 0.185
Si el sensor es de 5A, el valor 0.185 convierte el voltaje en corriente. Para otros sensores, cambiarías este valor según su sensibilidad.
Conversión a mA:
1000*(voltage - 2.5) / 0.185
-
Multiplicando por 1000, se convierte la corriente medida en mA.
Proceso de medición:
- La función
medir()
toma 100 muestras para suavizar el valor medido. - En cada ciclo, se mide el voltaje analógico, se convierte a corriente y se acumula.
- Al final, se devuelve el promedio de las 100 mediciones.