Hace algún tiempo quise hacer este proyecto para contar el tiempo de encendido de la lampara para revelar las mallas de serigrafía que uso para hacer los circuitos impresos.
Anteriormente lo hacía con el clásico timer 555 pero obviamente no es nada preciso.
Como verán, 100 horas es mucho tiempo, pero aprovechando que se hace uso de un microcontrolador, decidí que contara hasta 100 horas y así poderle dar otros usos al mismo, que dejo a su imaginación.
Características:
Para ingresar el tiempo se hace uso de un teclado matricial 3x4.
El formato del tiempo está basado en horas y mostrado como HH:MM:SS
Así que al contrario de otros temporizadores basados en segundos/minutos, en este se pueden ingresar las horas, los minutos y los segundos, mostrando un conteo descendente.
Se pueden contar hasta un máximo de 100 horas. (99H+59M+59S)
El tiempo requerido se puede guardar en la memoria interna del microcontrolador. (PIC16F88)
Tiene aviso sonoro, salida para un relevador, (adaptable a otro tipo) y pantalla LCD 16x2 estándar.
El programa está escrito en C (PCWHD Compiler v5) y adjunto también el código fuente.
Espero sea de su agrado y utilidad.
Saludos y suerte.
Bugs encontrados:
25/03/2014
El PIC16F88 cuenta con un sistema de detección ante una falla del oscilador primario llamado FCMEN (Fail-Safe Clock Monitor)
El programa está diseñado para trabajar con cristal de cuarzo para mayor precisión, y en caso de fallar se activa el oscilador interno.
Al estar trabajando cristal y oscilador interno a la misma frecuencia, (4MHz) en caso de alguna falla del cristal,
no se pierde sincronía y el cambio de uno a otro no se nota. (Solo en precisión)
Esta función está declarada en el programa, sin embargo no funciona.
Los valores agregados por el compilador al registro OSCCON no son los que se requieren para esta función.
Para solucionar este problema, que aunque no es común que un cristal falle, puede suceder y se debe hacer lo siguiente:
Agregar esto en la cabecera del programa: #byte OSCCON = getenv("SFR:OSCCON")
Y dentro del bloque main configurar el registro OSCCON con este agregado: OSCCON = 0b01100110;
Con eso se soluciona este bug que es uno de tantos que tiene el compilador PCWHD.
Nota: También se debe omitir la librería stdlib.h ya que no se está usando en el programa.
14/10/2014
* Corrección para versiones de PICC Compiler superiores a la v5.020 (Actual: v5.027)
* Se agregó la posibilidad de reingresar el tiempo sin presionar reset y otras mejoras.
Anteriormente lo hacía con el clásico timer 555 pero obviamente no es nada preciso.
Como verán, 100 horas es mucho tiempo, pero aprovechando que se hace uso de un microcontrolador, decidí que contara hasta 100 horas y así poderle dar otros usos al mismo, que dejo a su imaginación.
Características:
Para ingresar el tiempo se hace uso de un teclado matricial 3x4.
El formato del tiempo está basado en horas y mostrado como HH:MM:SS
Así que al contrario de otros temporizadores basados en segundos/minutos, en este se pueden ingresar las horas, los minutos y los segundos, mostrando un conteo descendente.
Se pueden contar hasta un máximo de 100 horas. (99H+59M+59S)
El tiempo requerido se puede guardar en la memoria interna del microcontrolador. (PIC16F88)
Tiene aviso sonoro, salida para un relevador, (adaptable a otro tipo) y pantalla LCD 16x2 estándar.
El programa está escrito en C (PCWHD Compiler v5) y adjunto también el código fuente.
Espero sea de su agrado y utilidad.
Saludos y suerte.
Bugs encontrados:
25/03/2014
El PIC16F88 cuenta con un sistema de detección ante una falla del oscilador primario llamado FCMEN (Fail-Safe Clock Monitor)
El programa está diseñado para trabajar con cristal de cuarzo para mayor precisión, y en caso de fallar se activa el oscilador interno.
Al estar trabajando cristal y oscilador interno a la misma frecuencia, (4MHz) en caso de alguna falla del cristal,
no se pierde sincronía y el cambio de uno a otro no se nota. (Solo en precisión)
Esta función está declarada en el programa, sin embargo no funciona.
Los valores agregados por el compilador al registro OSCCON no son los que se requieren para esta función.
Para solucionar este problema, que aunque no es común que un cristal falle, puede suceder y se debe hacer lo siguiente:
Agregar esto en la cabecera del programa: #byte OSCCON = getenv("SFR:OSCCON")
Y dentro del bloque main configurar el registro OSCCON con este agregado: OSCCON = 0b01100110;
Con eso se soluciona este bug que es uno de tantos que tiene el compilador PCWHD.
Nota: También se debe omitir la librería stdlib.h ya que no se está usando en el programa.
14/10/2014
* Corrección para versiones de PICC Compiler superiores a la v5.020 (Actual: v5.027)
* Se agregó la posibilidad de reingresar el tiempo sin presionar reset y otras mejoras.
Adjuntos
Última edición: