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); }




Sencillo, efectivo y útil; buena entrada 😉
como es el conexionado, ¿podrias publicar el esquema?
Muy buen trabajo
Para conectar la LCD se usa el conexionado estándard: https://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).
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
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!
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.
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…
hola como estas alex a mi me pasa lo mismo pudistes ajustar el valor del ardu al tester?
una pregunta, en el caso de good o weak no es lo mismo?
Podrias poner un pequeño dibujo esquematico de el total de las conexiones?
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???
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)
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
this is a good circuit for the same work but for higher dc http://arduiny.com/how-to-measure-high-voltage-with-arduino/
disculpa tendras el diagrama de las conexiones del circuito
como podria leer de 0 a 12v con este mismo sistema? y que otros componentes necesitaria?
mamense una bola derecha
Oye tengo la inquietud de hacer lo mismo que tu pero en mi caso no tengo ni idea de que hacer me podrías ayudar jairo_angel17@hotmail.com si me pudieras orientar aqui esta mi correo
hola k tal, disculpa k resitencia debemos de ocupar
Tengo un problema y es que cuando enciendo el arduino pero alimentándose con una pila de 9v, el voltaje que marca de una pila va subiendo, si en un momento me decía que era 1.48v, después de un rato me dice que tiene 1.60v, ¿como puedo solucionarlo?