Arduino LCD Battery tester

18 12 2009

Ayer se me encomendó la tarea de medir y clasificar un montón de veintitantas pilas, para ver cuales son para tirar, y cuales siguen sirviendo. Esto se puede hacer con un simple polímetro, pero ¿qué diversión habría en eso?

Así que como (por fin!!!) he terminado las clases en la universidad y tengo que perder el máximo tiempo posible, me dio por probar el arduino y la LCD que compré hace un par de meses, y que todavía estaba sin probar.

El resultado ha sido bastante satisfactorio, la librería LiquidCrystal de Arduino funciona perfectamente, y editando el ejemplo “helloWorld” hice que en la LCD apareciese el voltaje de la pila (Medido en analog(0)), y conforme a esta medida, que describa el estado de la pila.

El código (como todos los que escribo) es muy simple:

/*
   Battery Tester
   
   Prints in the LCD Screen (16x2) the voltage of a battery connected between GND and Analog0. Don't forget to put the pull-down resistor (about 10k)
   If the battery is AA or AAA type (1.5V), it displays its status (Perfect, Good, Weak and Bad)
 
 The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 2009 Created by Sergio Vilches using the Hello World LiquidCristal example:
 
   Library originally added 18 Apr 2008
   by David A. Mellis
   library modified 5 Jul 2009
   by Limor Fried (http://www.ladyada.net)
   example added 9 Jul 2009
   by Tom Igoe
   modified 25 July 2009
   by David A. Mellis
 
 
 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of rows and columns: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("2009 VlxsLAB");
  delay(1000);
  lcd.clear();

}

void loop() {
  lcd.clear();
  lcd.setCursor(0, 0);                              //Print in the first line:
  lcd.print("Battery Tester");
  lcd.setCursor(0, 1);                              //Now in the second line
  lcd.print(analogRead(0)*5.00/1023.00);            //we print the voltage
  lcd.print("V =>");
  lcd.setCursor(9,1);
  if ((analogRead(0)*5.00/1023.00) > 1.40)          //And choose what is the battery status
  {
    lcd.print("Perfect");
  }
  else if ((analogRead(0)*5.00/1023.00) > 1.20)
  {
    lcd.print("Good");
  }
  else if ((analogRead(0)*5.00/1023.00) > 1.20)
  {
    lcd.print("Weak");
  }
  else if ((analogRead(0)*5.00/1023.00) > 0.30)
  {
    lcd.print("Bad");
  }
  else
  {
  lcd.print("");
  }
  delay(250);
}
About these ads

Acciones

Information

13 responses

19 12 2009
zhonnetiks

Sencillo, efectivo y útil; buena entrada ;)

20 01 2010
Andres Guitarra

como es el conexionado, ¿podrias publicar el esquema?
Muy buen trabajo

2 02 2010
vilxes91

Para conectar la LCD se usa el conexionado estándard: http://vlxs.files.wordpress.com/2009/12/lcd_schem.png?w=150&h=96

En cuanto a la pila: polo negativo a GND, polo positivo a la entrada analog(0), y para quitar ruido, una resistencia de 10k entre GND y analog(0).

2 02 2010
Rubén

Con este programa puedes ver la tensión de una pila sin carga. Puede marcarte como buena pero al ponerle una carga caer la tensión a p.e. 0.8v y ser incapaz de dar más un unos pocos mAh. Como voltimetro esta bien el programa ;)
Saludos

2 02 2010
vilxes91

Oye, muy buen consejo, se nota dónde hay experiencia…
Supongo que una buena mejora sería conectar durante un corto intervalo de tiempo una resistencia de valor conocido, ver la caída de tensión y determinar el estado de la pila. Interesante, me lo guardo para la próxima!!
Gracias!

2 02 2010
Rubén

Buena idea, también se puede enfocar el proyecto añadiendole a lo que propones un amperímetro no invasivo http://openenergymonitor.org/emon/node/28 … es lo que estoy tratando de hacer cuando lo tenga lo posteo en mi blog http://atsea.wordpress.com

Saludos.

18 11 2010
alex

yo veo algo que no me cuadra si compruebo el voltaje con el polimetro me dice 4,50 y el arduino me dice 4,94 entonces la pregunta es como de preciso es el arduino? (el tester no es de los chinos… me costo una pasta y es nuevo…) y entonces me surge la duda de cual de los 2 esta indicando mal… ya que el polimetro raro seria que marcase medio voltio de menos en una escala tan pequeña y respecto al arduino pues si marca medio voltio de mas menuda risa…. onque en caso de ser asi cual seria la solucion…

13 08 2013
Jose Maria Gatica

hola como estas alex a mi me pasa lo mismo pudistes ajustar el valor del ardu al tester?

4 05 2011
enrizer

una pregunta, en el caso de good o weak no es lo mismo?

11 10 2011
ruben

Podrias poner un pequeño dibujo esquematico de el total de las conexiones?

23 02 2014
Vader1135

Hola, es un genial post el código me sirvió mucho, pero tengo una duda en esta instrucción (analogRead(0)*5.00/1023.00) por que lo multiplicas por 5.00/1023.00 tal vez sea muy tonta la pregunta pero no me queda claro, alguien que me pueda explicar por favor???

6 03 2014
Juan

El dato analogico que leas (analogRead(0)) multiplicado por el valor que tiene cada intervalo que cada intervalo sera 5 volt de arduino dividido 1023 partes(este intervalo es fijo y lo variable sera lo que leas)

15 08 2014
Kodigo 36

Hola oye podrias poner el esquema vien o si le pudieras aser un tuto de como lo isiste pork no puedo conectar algunos cables si serias tan amable

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

A %d blogueros les gusta esto: