INFORMACIÓN
El Sensor de Corriente ACS712 soporta mediciones de corriente de hasta 30 A en AC o DC. Internamente trabaja con un sensor de efecto Hall que detecta el campo magnético surgido de el paso de la corriente por un alambre de cobre interno y convirtiendo este campo en un voltaje variable. Esto significa que a mayor cantidad de corriente que tengamos, mayor voltaje vamos a tener en un pin.
Es ideal para proyectos mecatrónicos ya sea en ambientes industriales o comerciales, el módulo es de fácil conexión ya que traen una bornera para conectar la línea que queremos medir y 3 pines más, dos para conectar la alimentación y un pin para la salida analógica.
ESPECIFICACIÓN Y CARACTERÍSTICAS
- Modelo: ACS712ELCTR-30A-T
- Sensor de corriente: ACS712
- Voltaje de Trabajo: 5V
- Rango Máximo: (+/-) 30 A
- Salida análoga: 100mV/A
- Salida cuando no detecta corriente: 2 VCC
- Sensibilidad: 66 mV/A
- Resistencia interna: 1.2 mΩ
- Indicador : LED
- Mínimo voltaje de aislamiento entre pines 1-4 a pines 5-8: 2.1 kVRM
- Dimensiones: 31mm x 13mm x 11.8 mm
Nota: La PCB puede variar (pistas, orificios o color) pero no impacta en el funcionamiento del módulo.
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Conexión básica del ACS712 con Arduino para medir la corriente en un conductor
El siguiente circuito convierte la señal del sensor en una señal analógica compatible con una tarjeta de desarrollo y posteriormente el código convierte la información en una lectura de corriente que se muestra por el puerto serie.
Componentes necesarios
- Una tarjeta de desarrollo compatible con la IDE Arduino
- Cables dupont H-H
- Pinzas para abrir tu circuito a medir
Paso 1: Realización las conexiones
El ACS712 es un sensor basado en el efecto Hall, donde la corriente aplicada (sea de CA o CD) que fluye a través de esta pista de conducción de cobre genera un campo magnético que es detectado por el IC integrado Hall y convertida en un voltaje de CD que va de 0 V – 5 V que se puede obtener en su terminal «OUT» .
Paso 2: Cargando el Código
El sensor nos da idealmente un valor de 2.5 V para una corriente de 0 A y de ahí incrementa proporcionalmente dependiendo de la sensibilidad, manteniendo una relación lineal entre la tensión de salida del sensor y la corriente.
a) Código para Corriente Directa «CD»
El siguiente código de ejemplo convierte los datos del sensor que ingresan por la entrada analógica A0 en el valor de corriente correspondiente a la medición.
/* Codigo para medir CD */ float Sensibilidad=0.066; /* en (V/A) Según las especificaciones de este modelo */ void setup() { Serial.begin(9600); /* Establecemos la comunicación serial a 9600 baudios */ } void loop() { /* obtenemos la corriente promedio de 200 muestras */ float I=obten_corriente(200); Serial.print("Corriente: "); Serial.println(I,3); delay(100); } float obten_corriente(int n_muestras) { float voltajeSensor; float V0 = 2.460; //voltaje en OUT cuando la corriente a medir es 0A (varia de dispositivo a dispositivo) float corriente=0; for(int i=0;i<n_muestras;i++) { voltajeSensor = analogRead(A0) * (5.0 / 1023.0); //lectura del sensor corriente=corriente+(voltajeSensor-V0)/Sensibilidad; //Ecuación para obtener la corriente } corriente=corriente/n_muestras; return(corriente); }
Es importante recordar que en la mayoría de las ocasiones es necesario realizar una calibración del sensor.
b) Código para Corriente Alterna «CA»
/* Código para medir CA */ float Sensibilidad=0.066; /* Según las especificaciones de este modelo */ float offset=0.100; //Buscamos que sea un valor aproximado a la amplitud del ruido float voltajeRed = 127.0; //Comun en Mexico pero es necesario un ajuste void setup() { Serial.begin(9600); /* Establecemos la comunicación serial a 9600 baudios */ } void loop() { float Ip=get_corriente(); /* obtenemos la corriente pico */ float Irms=Ip*0.707; //Intensidad RMS = Ipico/(2^1/2) float P=Irms*VoltajeRed; // P=IV watts //Serial.print("Ip: "); //Serial.print(Ip,3); //Serial.print("A, Potencia: "); //Serial.print(P,3); //Serial.print("W"); Serial.print("Irms: "); Serial.print(Irms,3); Serial.println("A"); delay(500); } float get_corriente() { float voltajeSensor; float corriente=0; long tiempo = millis(); float Imax=0; float Imin=0; float V0 = 2.460; //voltaje en OUT cuando la corriente a medir es 0A (varia de dispositivo a dispositivo) while(millis()-tiempo<500) //realizamos mediciones durante 0.5 segundos { voltajeSensor = analogRead(A0) * (5.0 / 1023.0); //lectura del sensor /* para disminuir un poco el ruido aplicamos un filtro pasa bajos, que es similar a realizar un promedio de 10 muestras*/ corriente=0.9*corriente+0.1*((voltajeSensor-V0)/Sensibilidad); //Ecuación para obtener la corriente if(corriente>Imax)Imax=corriente; if(corriente<Imin)Imin=corriente; } return(((Imax-Imin)/2)-offset); }
¿Cómo se calibra el sensor?
En ocasiones se pueden tener errores de medición en las lecturas para estos casos debemos de re-calibrar y hallar los valores reales puesto que los valores que nos da el fabricante no son exactos.
Para ello recordamos la relación lineal entre la tensión de salida del sensor y la corriente
V = mI + 2.5
Donde m es la pendiente de la recta y equivale a la Sensibilidad
La ecuación que usamos para hallar la corriente es:
En esta ecuación solo tenemos dos constantes: los 2.5 que es el voltaje del sensor cuando la corriente es 0V y la sensibilidad, que en este caso es de 66 mV/A. Al ser una recta, basta con obtener dos puntos y con estos podemos calcular constantes.
Para esto necesitamos un multitester o amperímetro, el cual debe ser de buena precisión, ya que este será la herramienta para calibrar. El amperímetro, el ACS712 y la carga deben de conectarse en serie.
Te recomendamos medir V cuando I=0, y ese será tu valor de V0 en código, posteriormente mide otro punto conocido y utilizando la ecuación de la pendiente para recalcular la sensibilidad especifica de tu sensor, obteniendo los valores (V1, I1) y (V2, I2).
sensibilidad= m = (V2 – V1)/(I2 – I1)
Finalmente, realiza una lectura sin carga y si tu valor aun esta alejado de 0, ajusta el valor de la variable offset.
Valoraciones
No hay valoraciones aún.