Está en la página 1de 3

Medidor de intensidad ACS712

Se trata de un pequeño sensor que mide la corriente utilizando el efecto Hall, y nos devuelve un
valor de tensión entre 0V y 5V, proporcional a la intensidad que circula. Lo podéis conseguir
online en webs como DealExtreme, Banggood o Sparkfun, por muy poco. En mi caso, estoy
utilizando el modelo de menor rango de intensidad, de -5A a +5A. Si no circula corriente, la
tensión será de 2.5V, y ésta varía 185 mV por cada amperio que circule.

El código usado para medir la salida de este sensor, y convertirla en el valor de intensidad,
quedaría algo así:

1
2 int Zero = 509;
3
4 long Sensor = 0;
5 for(int i = 0; i < 1000; i++) Sensor += analogRead(A0);
6 Sensor /= 1000;
double Intensidad = (5.0*(double)(sensor-Zero)/1024.0)/0.185;

Es importante medir y ajustar el offset del cero, puesto que puede no coincidir exactamente con
los 2.5V (512/1024). Utilizando esta configuración, tendremos una precisión de unos 26 mA, que
no está nada mal.

Manejo del display LCD

El LCD requiere algo más de preparación para utilizarlo, pero es igual de sencillo de manejar. El
esquema de conexión quedaría tal como se muestra:
La resistencia variable nos permite regular el contraste del display. Además, la conexión de la
iluminación es opcional. En este montaje son necesarios 6 pines del Arduino para conectar con
el LCD. Existen otras configuraciones en las que son necesarios menos hilos, y que exploraremos
próximamente.

El código necesario para manejar el display hace uso de una de las librerías incluidas en el
entorno de desarrollo del propio Arduino, lo que facilita en gran medida su manejo. Podéis
probar cualquier ejemplo de la Liquid Crystal Library.

1 #include <LiquidCrystal.h>
2
3 // Initializa la librería
4 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
5 int Zero = 509;
6
7 void setup() {
8 // Define el número de columnas y filas del display
9 lcd.begin(16, 2);
10 }
11
12 void loop() {
13 // Preparamos el display
14 lcd.setCursor(0,0);
15 lcd.print("Current meter");
16
17 // Realizamos la medida
18 long Sensor = 0;
19 for(int i = 0; i &lt; 1000; i++) Sensor += analogRead(A0);
20 Sensor /= 1000;
21 double Intensidad = (5.0*(double)(sensor-Zero)/1024.0)/0.185;
22
23 // Escribimos el valor
24 lcd.setCursor(0,1);
25 lcd.print("I = ");
26 lcd.setCursor(4,1);
27 lcd.print(intensidad, 3);
28 lcd.setCursor(10,1);
29 lcd.print("A");
30
31 // Esperamos 100 ms
32 delay(100);
33 }

Como ya he comentado al principio, este montaje es parte del futuro diseño de una fuente de
alimentación. La idea es tener una fuente de tensión variable, entre 0-24V que proporcione
hasta 5A, e integrar un Arduino como medidor de tensión e intensidad, facilitando así el uso de
la fuente. De otro modo siempre tenemos que estar con un multímetro midiendo dichos
valores, por lo que esta solución reducirá el número de cables y cachivaches encima de nuestra
mesa.

https://www.hispavila.com/sensor-de-corriente-asc712/

También podría gustarte