El circuito es muy sencillo; El programa grabado en el pic se encarga de leer los segundos, minutos, horas, día, mes y año mediante un bus bidireccional de "dos hilos" I2c, los datos del integrado DS1307.
Dicho integrado es un reloj en tiempo real (Real Time Clock) que se ocupa de contar el tiempo a partir del momento en que iniciemos dicho reloj. En otras palabras, ajustamos la hora, minutos, segundos y la fecha, se la comunicamos al DS1307, lo iniciamos, y a partir de ahí el microcontrolador pic 16F873A lo que hace es leer los datos que el integrado DS1307 le va pasando cada segundo. Aquí tienes el datasheet del DS1307.
La batería conectada entre los terminales 3 y el negativo, es una pila modelo CR2032 que se encarga de que el reloj siga funcionando aunque se vaya la alimentación del circuito. Dicha pila ha de ser de litio y la cambiaremos, por seguridad, cada cinco años aproximadamente para garantizar que el reloj siga funcionando si hay un corte de electricidad. El DS1307 posee una alta estabilidad y precisión. La precisión viene dada por la calidad del cuarzo conectado a sus terminales 1 y 2.
Nosotros hemos medido diferencias de unos 10 segundos al mes aproximadamente, lo que supone un adelanto, o atraso, de unos dos minutos al año, lo cual no está nada mal.
El integrado DS1307 tiene grabado en su memoria los años de este siglo hasta el 2100, incluyendo por supuesto los años bisiestos.
El esquema eléctrico es de lo más sencillo. Se compone del microcontrolador con sus componentes asociados, un cuarzo de 4Mhz con sus condensadores de 22pF, resistencia de 10K entre el pin 1 y el positivo de la alimentación, dos pulsadores conectados a las dos entradas RC2 y RC3, y el bus de datos de 4 bits para manejar el display.
La conexión del 16F873A con el integrado DS1307 la realizamos mediante un bus I2c con los puertos RC6 y RC7 del microcontrolador a los pines 5 y 6 del integrado DS1307.
La visualización será mediante un display lcd de 2x16. Cualquier display con un controlador Hitachi HD44780 o compatible, datasheet del controlador Hitachi HD44780, será válido para la visualización.
El contraste del display Lcd (V0) se hace mediante la resistencia ajustable R2 de 10K, con sus extremos conectados, uno al polo positivo, y otro al polo negativo.
Nuestra pantalla tiene luz de fondo, o backlight, por lo que el led, o leds que la iluminan están regulados por la resistencia variable de 470 ohmios, R3.
La resistencia R4 tiene como misión proteger los leds para prevenir que asuman más corriente de la necesaria, lo que podría llevar a su destrucción.
Los pulsadores S1 y S2 son lo que usaremos para el ajuste del reloj. El ajuste es muy sencillo. La primera vez que encendamos el circuito aparecerá la hora 00:00:00 y la fecha 1/1/2011.
Pulsamos durante un segundo aproximadamente el pulsador S1, marcado como SET en el esquema, al soltar aparecerá la palabra SET y un cursor debajo de las horas para su ajuste, pulsamos S2 y podemos avanzar las horas. Volvemos a pulsar S1 y el cursor se pondrá en los minutos, con S2 los ajustamos, y así hasta completar todos los ajustes.
Después de ajustar el año, que es el último en ajustar, al volver a pulsar S1 y mandamos al DS1307 los datos de nuestro ajuste, aparecerá en el display OK, y a partir de ahí empezará a contar el reloj.
El circuito se alimenta con 5 voltios de corriente continua y su consumo no supera los 100mA con la luz del display lcd encendida, por lo que la fuente de alimentación, que estará encendida 24 horas al día y 365 días al año, debería proporcionarnos 5V y 200mA.
Una recomendación. Según el datasheet del DS1307 el cuerpo del cristal de cuarzo ha de ir conectado a masa y sus terminales lo más cerca posible de los pines 1 y 2 del DS1307, según la siguiente foto.
El esquema eléctrico. Como veis es muy simple.
Una foto del prototipo de reloj calendario funcionando.