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 cuál 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, produzca algún tipo de señal que nos indique cuál 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, al tener un microcontrolador a cargo del circuito, el proyecto es mucho más interesante. Veámoslo.
El conversor analógico digital
Un conversor analógico digital o ADC (por Analogue to Digital Converter, en inglés) 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, 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 cuál 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 está a 0V, el valor entregado por el conversor analógico digital es 0. Cuando en la entrada se encuentra 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 más de 4.88 milésimos de voltio. 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, así 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 está 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 esté 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.
Lista de componentes
- 2 Borneras de 2 tornillos para circuito impreso.
- 2 Condensadores cerámicos de 0.1 microfaradios.
- 1 Condensador electrolítico de 470 microfaradios/16 voltios.
- 1 Resistor de 10K.
- 3 Resistores de 220 ohmios.
- 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.
El programa
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 está completamente comentado como para que se pueda entender su funcionamiento. Te recordamos que en nuestro Tutorial sobre programación de microcontroladores hemos explicado cómo 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