Encaramos en este artículo la construcción de una herramienta que nos permitirá determinar la tensión presente en los bornes de una pila o batería, indicando su estado mediante tres diodos LEDs. Al estar basado en un microcontrolador, es posible modificar su comportamiento a gusto del usuario.
Muchas veces queremos determinar cual es la tensión presente en los bornes de una batería o pila, antes de proceder a recargarla o descartarla definitivamente. No hace mucho habíamos desarrollado un circuito que era capaz de efectuar esta tarea, pero solo funcionaba con baterías de un determinado voltaje.
El circuito que hoy les proponemos incluye un pequeño y muy económico microcontrolador que contiene en su interior un conversor analógico digital, capaz de transformar el valor de la tensión presente en uno de sus pines en un valor numérico que puede ser evaluado. Esto significa que, si somos capaces, podemos construir un programa que en base a ese valor se produzca algún tipo de señal que nos indique cual es el estado de la batería o pila bajo prueba.
El microcontrolador elegido es un PIC12F675, de Microchip, de solo 8 pines. Este micro cuesta menos de dos euros, y es ideal para este tipo de aplicaciones: tiene conversor analógico digital y hasta 6 pines de entrada/salida.
Ya habíamos abordado este problema antes. Pero en este caso, el tener un microcontrolador a cargo del circuito, este proyecto es mucho más interesante. Veamoslo.
El conversor analógico digital
Un conversor analógico digital o DAC (ADC, por Analogue to Digital Converter, en ingles) es un dispositivo que permite convertir datos analógicos (básicamente señales de corriente o de tensión) en valores digitales capaces de ser procesados por un ordenador o un microcontrolador.
Si bien existen circuitos integrados específicos para estas tareas, dada la frecuencia con la que se emplean junto a microcontroladores ha hecho que muchos de estos directamente los incorporen en su interior, de forma que se simplifique el diseño de los circuitos a la vez que se disminuye el costo y tamaño final de los mismos. Uno de los más pequeños que cae dentro de esta categoría es el PIC12F675.
Este microcontrolador puede convertir una tensión de entre 0 y 5V presente en su entrada en un valor de 0 a 1023. Eso significa que nuestro programa, analizando este valor numérico, puede ser capaz de saber cual es la tensión digitalizada. Si dicha tensión proviene de la pila o batería que estamos ensayando, tenemos el problema prácticamente resuelto.
Cuando la entrada del ADC esta a 0V, el valor entregado por el conversor analógico digital es 0. Cuando en la entrada se encuentran presente 5V, el valor devuelto es 1023. Para los valores de tensión intermedios el conversor entrega valores numéricos proporcionales, por lo que resulta muy simple determinar mediante una regla de tres simple el voltaje medido.
Si realizamos la división de 5V entre los 1024 pasos del conversor ADC, tenemos que cada paso de este equivale a poco mas de 4.88 milésimos de Volt. Si la tensión presente en la entrada del ADC es de 3.5V, la salida será 3.5V/ 0,0048828125 = 716.8. Como solo se trabaja con números enteros, el valor leído será de 716. ¿Sencillo, verdad?
Con todo esto en mente, analicemos el proyecto.
El proyecto
Como siempre lo hacemos, te proporcionamos todos los datos como para que puedas modificar el proyecto y adecuarlo a tus necesidades. El circuito propuesto consta de una etapa destinada a obtener los 5V perfectamente regulados que necesita el microcontrolador para funcionar. Esta parte ya la hemos analizado antes, asi que no profundizaremos en su análisis.
El PIC12F675 tiene la entrada correspondiente al conversor analógico digital conectada a uno de los bornes (el positivo) de la bornera en la que se debe conectar la pila o batería a medir. El otro borne esta unido al negativo. Es muy importante no conectar la pila o batería al revés, ya que hay una buena posibilidad de que esto termine con la vida del PIC. Tal como está diseñado el circuito, solo pueden medirse tensiones entre 0 y 5V.
Tres de las salidas del microcontrolador se encargan de controlar tres LEDs, que serán nuestra indicación del estado de la tensión analizada. Hemos previsto un LED rojo, uno amarillo y uno verde. En el programa que proporcionamos como ejemplo, el LED verde encenderá cuando la entrada este sobre los 3.5V, el amarillo cuando se encuentre entre 2.5V y 3.5V, y el rojo encenderá cuando la tensión presente en la entrada del ADC sea menor a 2.5V. Estos valores son totalmente arbitrarios, y el usuario puede elegir los que desee, modificando el programa.
La lista de componentes necesaria para este proyecto es la siguiente:
2 Borneras de 2 tornillos para circuito impreso.
2 Condensadores cerámicos de 0.1 microfaradios.
1 Condensador electrolítico de 470 microfaradios/16Volt.
1 Resistor de 10K.
3 Resistores de 220 ohms.
1 Microcontrolador PIC12F675 con su zócalo.
1 Diodo 1N4007.
1 Diodo LED rojo.
1 Diodo LED verde.
1 Diodo LED amarillo.
1 Regulador de voltaje LM7805 o LM78L05
El circuito impreso es de una sola cara, y puede construirse como ya se ha explicado.
En la página siguiente puedes ver el programa sugerido.
Este programa se ha confeccionado utilizando el BASIC del PIC SIMULATOR IDE, elegido como siempre por su excelente desempeño, bajo costo y la disponibilidad de una versión demo que puede descargarse desde la Web del autor.
No hay mucho para agregar al listado que proporcionamos, ya que esta completamente comentado como para que se pueda entender su funcionamiento. Te recordamos que en nuestro Tutorial sobre programación de microcontroladores hemos explicado como realizar un programa en BASIC.
Simplemente, compilaremos el listado en BASIC y grabaremos el archivo .HEX generado en el PIC12F675.
‘——————————————–
‘NEOTEO.COM
‘Medidor de tensión con 12F675
‘Versión 1.0, Mayo/2008
‘——————————————–
‘Declaro los nombres de los pines de salida
Symbol rojo = GPIO.2
Symbol amarillo = GPIO.1
Symbol verde = GPIO.0
‘Macro para el ADC
Symbol ad_action = ADCON0.GO_DONE
‘Configuro puertos y ADC
TRISIO = %111000 ‘GPIO 0,1,2 salidas; 3 y 4 entradas
CMCON = 0x07 ‘comparator off
VRCON = 0x00 ‘vref off
ANSEL = %00111000 ‘GPIO.4 A/D en W/Frc
‘Activo VREF, Selecciono canal 0, Justifico a la derecha
ADCON0 = %00001111
High ADCON0.ADON
‘Variable que contiene el valor del ADC
Dim valor As Word
GPIO = %110000 ‘todas las salidas a 0
‘Bucle principal
loop: Adcin 3, valor ‘Si es mayor a 3.5V, enciendo verde If valor > 716 Then rojo = 0 ‘Apago LED rojo amarillo = 0 ‘Apago LED amarillo verde = 1 ‘Enciendo LED verde Endif
‘Si es mayor a 2.5V y menor a 3.5V, enciendo amarillo If valor > 512 And valor < 717 Then rojo = 0 ‘Apago LED rojo amarillo = 1 ‘Enciendo LED amarillo verde = 0 ‘Apago LED verde Endif
‘Si es menor a 2.5V, enciendo el rojo If valor <= 512 Then rojo = 1 ‘Enciendo LED rojo amarillo = 0 ‘Apago LED amarillo verde = 0 ‘Apago LED verde Endif
Goto loop
End