Medir intensidad y consumo eléctrico con Arduino y ACS712


¿Qué es el ACS712?

El ACS712 es un sensor de corriente tanto alterna como continua, que permite medir la intensidad eléctrica que atraviesa un conductor. Podemos emplear el ACS712 junto con un procesador como Arduino para medir la intensidad o potencia consumida por una carga.

Internamente el ACS712 consiste en un sensor hall de precisión y bajo offset junto con un canal de conducción localizado cerca de la superficie del integrado. Cuando la corriente fluye por el canal de cobre genera un campo magnético que es detectado por el sensor Hall y es convertido en una tensión.

La salida del sensor es una tensión proporcional a la corriente, y altamente independiente de la temperatura. El sensor viene calibrado desde fábrica, aunque para una medición de precisión hará falta un ajuste de la calibración.

El camino conductor está aislado galvánicamente del IC garantizado un mínimo 2.1 kVRMS Su resistencia es muy baja, 1.2 mO, lo que se traduce en pequeñas pérdidas.

Existen modelos para rangos de 5A, 20A, 30A. El sensor soporta corrientes hasta 5x el rango de medición del sensor. Sobrepasar el límite dañara el ACS712.

La mayor desventaja del ACS712 es que es un sensor intrusivo, es decir, es necesario insertarlo en un conductor lo cual puede suponer que tengamos que cortar un cable. Es una gran desventaja frente a sensores no intrusivos como el transformador de intensidad STC-013.

Aplicaciones típicas del ACS712 incluyen control de motores, control de cargas, fuentes de alimentación, y protecciones contra sobretensiones.

Nosotros podemos usarlo en nuestros proyectos de electrónica casera y Arduino, por ejemplo, para medir la intensidad que alimenta una carga, para medir su consumo, o como protección de dispositivos tales como motores.

Precio

El ACS712 es un sensor barato. Podemos encontrar módulos con el ACS712 en sus distintas versiones 5A, 20A y 30A, preparados para conectar de forma sencilla con Arudino, por 1.25€ en vendedores internacionales de eBay o AliExpress.

Esquema de montaje

Los módulos con el ACS712 son muy sencillos de conectar. Precisamente esta es una de sus grandes ventajas. Al ACS712 proporciona una salida de tensión proporcional a la intensidad que atraviesa el sensor.

Por tanto, simplemente alimentamos el módulo conectando Gnd y Vcc, respectivamente, a Gnd y 5V en Arduino, y conectamos la salida del sensor a una entrada analógica de Arduino.

Mientras que la conexión, vista desde Arduino, sería la siguiente.

Ejemplos de código

Como hemos comentado, la tensión en la salida del ACS712 es proporcional a la intensidad que atraviesa sensor. Se incluye un offset de 2.5V de forma que la referencia está centrada, lo que permite medir intensidades positivas y negativas.

V = 2.5 + K \cdot I \Rightarrow I = (V - 2.5) / K

El factor de proporcionalidad y la resolución dependen del modelo del sensor, para rango de 5A, 20 y 30.

Max IntensidadSensibilidadTensión salidaResolucion
±5A185 mV/A1,575V a 3,425V26mA
±20A100 mV/A0,5V a 4,5V49mA
±30A66 mV/A0,52V a 4,48V74mA

El siguiente código realiza la medición de la corriente mediante el ACS712. Para reducir el ruido de la medición, se realizan varias mediciones y se calcula el promedio.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección
tutoriales de Arduino
Previous Detector de cruce por cero con Arduino y optoacoplador H11AA1
Next Sensor de corriente eléctrica no invasivo con Arduino y SCT-013
  • ed

    Hola Luis. Gracias por todos estos ejemplos que estas poniendo, haciendo uso de los sensores mas comunes. Tengo un pregunta. Para un proyecto necesitaria medir cuando fluye corriente, no me importa la intensidad. Prefiero una solucion no intrusiva, pero como necesito cuando flute corriente en varios puntos, una solucion que usa la SCT013 sale cara. Hay alguna solucion “casera” que se puede emplear? Pienso por ejemplo en dar unas vueltas al cable que lleva corriente, esperando ver un debil corriente inducido en el cable que uso para las vueltas, y medir eso… Se te ocurre algo mas (seguro) elegante?

  • luisllamas

    Hola. Para ese tipo de montajes normalmente se emplea un sensor de corriente no invasivo, como el STC-013, transformadores de corriente con el núcleo partido que permiten medir la intensidad en un conductor sin tener que cortarlo.
    Échale un vistazo a esta entrada https://www.luisllamas.es/arduino-sensor-corriente-stc-013/