in

Medidor de tensión con PIC12F675

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.

Este es el microcontrolador elegido.

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.

Aspecto del PCB ya terminado.

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.

Posición de los componentes sobre el PCB.

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.

Podemos comprobar pilas y baterías de hasta 5V.

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                          

Reportar

¿Qué te pareció?

Escrito por Ariel Palazzesi

10 Comments

Leave a Reply
  1. Hola, quiero comprar el PIC por internet, pero me salen varias clases de ese modelo, cual de todos estos es el que necesito:

    PIC12F675-E/MD
    PIC12F675-E/MF
    PIC12F675-E/P
    PIC12F675-E/SN
    PIC12F675-I/MD
    PIC12F675-I/MF
    PIC12F675-I/P
    PIC12F675-I/SN
    PIC12F675T-E/MF 8
    PIC12F675T-E/SN 8
    PIC12F675T-I/MF 8
    PIC12F675T-I/SN

    Gracias.

  2. Bueno he encontrado otra tienda, donde solo tienen dos clases para ese modelo, cual de estos dos es el que me vale para este circuito?

    PIC12F675-E/P
    PIC12F675-I/P

    Gracias.

    • #8 que linda escritura denle el premio nobel que recibio el hijo de puta del malparido de la remilputa que la pario de mario pinda llosa ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ajjjjjjjajajaaaaaaaajjjjjjjjjjjaaaaaaxD:)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Phun, un muy buen simulador de física en 2D

XNeat Windows Manager: Mejora el explorador de Windows