Hola de nuevo, en esta actualización os traigo una parte de lo que será mi futura fuente de alimentación de laboratorio. Se trata de un medidor de intensidad, utilizando para ello el módulo ACS712 y un display LCD 16x2. Para abrir boca, os dejo un video del montaje en funcionamiento.

 

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.

Medidor de intensidad ACS712

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

1
2
3
4
5
6
int Zero = 509;
 
long Sensor = 0;
for(int i = 0; i < 1000; i++) Sensor += analogRead(A0);
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:

 

Esquema de conexión del LCD

 

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

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.

 

Próximamente, más proyectos e ideas, nos vemos!