DS1307: Reloj en tiempo real con 18F2550

El DS1307 de Dallas Semiconductor (Maxim) es una solución muy interesante cuando necesitamos trabajar con eventos que requieren puntualidad y exactitud a lo largo del tiempo. Este pequeño circuito integrado es uno de los más populares relojes RTC (Real Time Clock) del mercado por su sencillez de uso y por su confiabilidad a largo plazo. Preparado para ofrecerte la hora hasta el año 2100, esta semana agregamos a la entrenadora NeoTeo esta útil aplicación con la explicación en detalle de su construcción, características y ajustes. El DS1307 a fondo en este artículo.

La flexibilidad de trabajo que nos ofrece el bus I2C hoy nos trae una aplicación muy útil e importante para los momentos en que necesitamos controlar dispositivos o aplicaciones en las que la exactitud horaria es un factor fundamental. El DS1307 de Dallas Semiconductor (Maxim) es un dispositivo que se conoce como “Reloj de Tiempo Real” (Real Time Clock – RTC) que opera a través del bus I2C y que, además de brindarnos la hora con minutos y segundos, posee un calendario que contempla los años bisiestos hasta fin de siglo, es decir, hasta el año 2100.

Entre las características destacadas, posee una salida (configurable por software) que, en nuestro caso, la utilizamos como “segundero luminoso”, y la posibilidad de trabajar con una pequeña batería para almacenar los datos mientras el sistema se encuentra desconectado de la alimentación. Además, esta pequeña alimentación de respaldo permite mantener funcionando el oscilador maestro del reloj con un consumo ínfimo de 300nA, según su hoja de datos. Una simple batería de Litio CR2032 puede brindarnos un funcionamiento satisfactorio durante 10 años. ¿Te parece poco? Conectar un artefacto que construimos hace tres años y que siga estando siempre ajustado en fecha y hora es algo muy interesante de experimentar.

DS1307: Un completo reloj de precisión en un encapsulado de 4 pines por lado

Este curioso circuito integrado es mucho más que un simple segundero o un contador de minutos: es un reloj que podemos incorporar a nuestros desarrollos para que, además de informar la hora en un visor, sea capaz de activar periféricos o recordar actividades con absoluta precisión. Un ejemplo: que nos recuerde que cada día a determinada hora se ponga en marcha un motor, una luz o cualquier dispositivo externo que realice un trabajo por nosotros, o también que el día 15 de agosto de cada año nos recuerde el cumpleaños de algún amigo. Por supuesto que para el desarrollo de este artículo y la explicación paso a paso de cómo aprender a utilizar este genial reloj utilizaremos la placa entrenadora NeoTeo y el súper-cómodo sistema de carga de archivos por USB con el método de BootLoader desarrollado en el artículo anterior. No más palabras, observa este video. Esto haremos hoy:

Lo primero que haremos entonces es construir el hardware. Habrás notado en las imágenes una memoria EEPROM 24C04, compartiendo la placa con el DS1307. Por el momento no utilizaremos este dispositivo, pero tuvimos la idea de colocarlo en la placa para futuras aplicaciones gracias a que este tipo de memorias también trabajan con el protocolo de comunicaciones I2C. En próximos montajes combinaremos el uso del reloj con eventos grabados en la memoria, como pueden ser alarmas múltiples seleccionadas por el mismo PIC o para utilizarla como banco de datos generales que pueda conservar información a pesar de que el equipo conectado pierda el suministro de energía. Por ejemplo, podemos citar el caso de un sistema de semáforos sincronizados que deben manejar un tráfico variable, es decir, variar sus tiempos de operación de acuerdo a las horas de mayor tránsito. A esto podemos sumarle la posibilidad de dejar liberada la circulación vehicular a partir de un horario determinado durante la noche hasta las primeras horas del día siguiente, y todos estos datos deben ser almacenados en un lugar seguro, a prueba de cortes energéticos y con la seguridad de inicializar su funcionamiento en perfecta sincronía horaria. Para eso, nada mejor que una EEPROM 24Cxx.

El circuito de conexiones para la placa del DS1307

El circuito es muy sencillo de organizar y comprender. Tanto el DS1307 como la memoria 24C04 comparten las conexiones SDA y SCL, respectivamente, mientras que la tensión de alimentación es filtrada C2 – L1 – C1 para eliminar ruidos extraños en el circuito que pudieran llegar a corromper las tramas de datos. Esta prevención la incrementamos con el diseño de un circuito impreso generoso en planos de tierra. La salida SQW/OUT necesita una resistencia “Pull-Up” para su funcionamiento y a la vez se encarga de excitar a T1 para que el LED nos sirva de “segundero luminoso”. Recordemos que esta salida del DS1307 es programable y pueden obtenerse allí otros submúltiplos de 32768Khz para otras aplicaciones específicas. Por su parte, en el pin 3 conectaremos una batería de Litio tipo CR2032 que nos permitirá el funcionamiento del DS1307 cuando la tensión de alimentación Vcc no esté presente. No dejes de colocar un receptáculo apropiado para permitir una remoción cómoda de la batería cuando sea necesario cambiarla. Además, si te decides soldarle pequeños terminales para conectarla a la placa, debes tener mucho cuidado de no pasarte de temperatura para no provocar un accidente y la rotura de la batería.

Una pequeña batería puede conservar el ajuste del DS1307 durante muchos años

Una consideración especial se debe tener a la hora de montar el cristal de 32768Khz. Primero debes saber que será muy difícil lograr un circuito impreso óptimo para obtener una precisión ideal en el funcionamiento del reloj. Luego, debes comprender también que es de suma rareza encontrar cristales que resuenen a la frecuencia exacta que indica su nomenclatura. Es decir, lo normal será encontrar cristales con una “tolerancia” de error que a lo largo de los días (o meses) se haga notable en algunos segundos de atraso o adelanto de la hora grabada. Si las variaciones son de muchos minutos en pocas semanas, sin dudas debemos cambiar el cristal por otro de mejor calidad. Pero si optas por un cristal común (sin demasiada selección especial), con un lazo de alambre conectado a GND (como ves en la imagen superior), con un buen plano de tierra en los alrededores de su conexión (tal como indica la hoja de datos del DS1307) y con un largo adecuado de los pines de conexión, debes lograr una pequeña variación de pocos segundos en uno o dos meses. NUNCA obtendrás una precisión absoluta pero al menos puedes aproximarte mucho a un excelente funcionamiento. Observa los planos de tierra en el circuito impreso.

La placa terminada vista desde el lado del circuito impreso (lado solder)

En el párrafo anterior mencionamos que entre los puntos destacados para obtener un correcto funcionamiento del DS1307 está el largo de los pines de conexión desde el cristal hasta el IC. Esto significa dos cosas: en primer lugar, que las vías de cobre del impreso entre un dispositivo y el otro DEBEN ser lo más cortas posibles y, en segundo lugar, que los pines del cristal NO DEBEN ser tan cortos como sea posible (en su conexión hacia el impreso). Parece una contradicción, pero la explicación está en que al acercar o alejar los pines del cristal entre sí, estamos provocando variaciones de capacidad parásita entre ambos conductores. En la práctica y en los instrumentos de medición de frecuencia, esto puede ser despreciable y no afectar en nada al oscilador maestro. Pero en los meses de funcionamiento de nuestro reloj, unos pocos Hertz de variación pueden significar varios segundos (o minutos) de desfasaje horario. Observa la imagen anterior para apreciar el largo aconsejado para los pines del cristal. No hay que exagerar, ya que con un milímetro de variación podemos resolver todo nuestro problema. De lo que puedes estar seguro es que conocerás la posición exacta de estos pines luego de algunas semanas de funcionamiento del equipo.

La placa instalada sobre la entrenadora y lista para comenzar a funcionar

El resto del montaje no merece mayores comentarios. En nuestro ejemplo utilizado para la entrenadora NeoTeo con el PIC 18F2550, hemos empleado el conector específico que dejamos reservado para las conexiones dedicadas a dispositivos que trabajen por bus I2C. La imagen superior (como el video mostrado al inicio del artículo) nos muestra que la placa se puede insertar de manera muy fácil, quedando en una posición cómoda de trabajo y visualización sobre el display LCD que utilizaremos para obtener los resultados de este trabajo. Si eres un fiel seguidor de nuestros proyectos y vienes realizando las placas de la manera que mostramos en los artículos relacionados a esta entrenadora, al final encontrarás el PDF para descargar que contiene el dibujo propuesto para realizar el circuito impreso de este interesante accesorio.

Hasta aquí hemos visto el circuito necesario para poner a funcionar un DS1307. En la próxima página veremos como es la programación de sus registros y su funcionamiento en detalle. ¡Avanza a la siguiente página!

Deja tu voto

5 points
Upvote Downvote

Total votes: 13

Upvotes: 9

Upvotes percentage: 69.230769%

Downvotes: 4

Downvotes percentage: 30.769231%

48 Comments

Deja una respuesta
  1. interesante el aparatito me pase la tarde de hoy armandolo pero en ves de una pantalla preferi algo mas tradicional le agrege unos pequeños(pero muchos) engranajes mecanicos ademas de un sistema de alarma esta bien padre y todo pero tengo que buscar una pequeña carcasa para la maquina

    gracias mario otra ves le diste sentido a mi tarde del sabado =)

      • de verdad que gente como tu me hace hervir las pelotas el hecho de tener un hobby no significa que nadie sea un inepto social que no pueda tomar la luz del sol por estar pegado a una pc las 24 horas del dia.

        dime tu que haces acaso eh??? puedes modificar algunos de los diseños de mario no verdad porque para ti es mas importante estar trolleando que aprender algo util de verdad tu si me das lastima porque parece que eres tu el que no tiene amigos o una vida propia y tienes que estar haciendo estas tonterias para evitar la realidad.

        me das mucha pena MUCHA O"o
        _

    • Dalay amigo mindmaster dalay!!

      Déjalo que es un troll, mejor envía un mensaje a contacto de Neoteo para que borren este comentario, ponte a celebrar que ya me dieron de alta en el hospital después de una operación en el apéndice el doctor dijo que puedo recuperarme desde casa asi que lo primero que hice fue agarra mi portátil y actualizarme en neoteo y mi blog.

      hombrequepiensa.blogspot.com

    • Hola estoy implementando el circuito con el Pic182520 pero tengo duda en la parte de la inductancia que valor debo conseguir o que matricula me recomiendan

  2. Hola Mario,

    Cada vez estas agregando más aplicaciones sobre los Pics, el tema de la electrónica se pone mas interesante. Me gusta la electrónica, aunque mi trabajo no tiene nada que ver con ésta. En mis ratos libres me dedico a aprender y/o probar circuitos como los que publicas.

    Saludos amigo Mario!

  3. io trabaje con este rtc en la esc pero tuve un problema k no resolvi xk jamas volvi a utilizarlo… 🙁 bueno lo k me pasaba es que a la hora de desconectar todo el sistema el reloj o no me guardaba la hora o lo hacia mal y no se a que se debiera…

    mi programa funcionaba de lo lindo y hacia todo lo k debia pero a la hora de quitar la alimentacion y dejar solo la bateria de respaldo mi reloj valia queso xD…

    como le hago para madarles el codigo??? una vez k lo encuentre xD

  4. Espectacular! justo que estoy entrando en el mundo de los PIC, esto me viene barbaro, para la computadora de abordo que me estoy armando para mi auto 😀

    excelente!

  5. Con perdón pero … joder que crack!!

    Estos artículos son dignos de cualquier revista de electrónica de las serias (y caras!).

    Por cierto, se pueden proponer temas? Porque a mi ahora me gustaría trastear con una batería de esas ‘lead-acid’ y he visto que en Neoteo había un par de artículos, uno con la descripción de como funcionaban y otro con un cargador-monitor de carga. Me pregunto si no sería descabellado hacer otro post resumiendo los dos anteriores y modificando el cargador para que funcione en uno u otro régimen de carga según el estado de carga de la batería (una de 12V x ejemplo ;D).

    En fin, otro artículo alucinante. Un saludo!

  6. Me encanta, creo que seria bueno como una versión en pdf para imprimir y tener un carpeta de proyecto como la revista de electrónica.

  7. Hola soy nuevo en el foro, me interesa la aplicacion estoy trabajando con PIC18F2520 que me llegaron de muestra y estaba buscando un reloj de tiempo real y llegue aqui, saludos cordiales desde México.

  8. Me interesa mucho esta aplicación, pero los links del código fuente y de la pcb están rotos, podrías volver a subirlos por favor
    un saludo y gracias

  9. Hola queria antes que nada felicitar a Mrio por sus proyectos, son insuperables.
    Aprobechando esto, queria preguntarte por el proyecto del ds1307, lo estoy inplementando pero no tengo claro lo del codigo, resulta que al compilarlo con c18 me da error de sintaxis.
    el codigo que dejas es un archivo bas y no c ¿como hago para editarlo en c?,tiene algo que ver lo del bas con el problema de sintaxis que me sale en c18
    Saludos.

  10. Excelente aporte, pero te importaria decirme que valor tiene el inductor? porque quisiera implementarlo.

    Gracias

  11. Disculpa hice el circuito y lo estoy usando con un PIC18F4550 y lo programe solo para que visualice la hora pero al encenderlo solo aparece 45:85:85 te agradecería si me pudieras decir cual puede ser el problema

  12. Deberian poner ejemplos en Mikrobasic, MikroC, proton o sea simultaneamente para quienes utilizan un compilador diferente puedan hacer sus pruebas sin ningun problema a la hora de probar los circuitos.

  13. Hola que tal, disculpen yo hice un circuito parecido hace 2 semanas y funciona bastante bien, cada vez que lo enciendo actualiza los datos de maravilla, solo que este placer me duró unos pocos días, ya que la batería de respaldo no duró ni una semana, la compré nueva (3 volts) y en cinco días ya no actualizaba los datos y al desconectar la bateria la medí con un voltímetro y tenía 1.6 volts ¿no que dura 10 años? la forma de conectar la batería es la misma que tienes en tus imagenes, ¿alguna respuesta o comentario?

  14. Tengo novia, y nada mal eh… amigos y tengo un trabajo por las mañanas con el que puedo pagar mi vida normal, pero con trabajos como este que es la electronica al cual me dedico en mi tiempo libre, me doy mis buenos lujos… Soy proveedor de una empresa de gobierno, y todo por mis ratos libres ja…. Hagan lo que les gusta, la vida los va llevando.

  15. No se abre la pagina dos de este proyecto…que sera … queria saber de cuanto es el valor de la inductancia….. Felicitaciones muy chevere la pagina y buenos proyectos sigan adelante

  16. Saludos, Primero quisiera felicitarte por este proyecto, es muy interesante y de mucho uso hoy en la actualidad, asi que muchas Felicidades. Posteo aqui pues tengo un problema para entrar a la pagina 2 dice que no existe el post porfavor avisame a este email cuando este arreglado porfavor es de mucha urgencia gracias>>!

  17. alguien puede indicarme con que nombre puedo comprar el componente que en el esquema se llama L1 ferrite, agradezco mucho su ayuda

  18. por favor podrían indicarme con que nombre puedo comprar el componente que en el esquema se llama L1 ferrite, agradezco mucho su ayuda, quiere realizar este circuito para un trabajo en la empresa

  19. por favor podrían indicarme con que nombre puedo comprar el componente que en el esquema se llama L1 ferrite, agradezco mucho su ayuda, quiere realizar este circuito para un trabajo en la empresa

  20. por favor podrían indicarme con que nombre puedo comprar el componente que en el esquema se llama L1 ferrite, agradezco mucho su ayuda, quiere realizar este circuito para un trabajo en la empresa

  21. Por favor me podrias aclararme la duda de si el cristal de 32768khz es de 12.5pF o de 6 pF ya que he visto
    que unos recomiendan uno y otros otro
    Gracias

  22. Te agradeceria mucho que me ayudes.Tengo la confusion de los pF EN EL CRISTAL si el Cl es de 12.5 pF
    o de 6pF. QUE MODELO DE DE CRISTAL ME recomendas
    Gracias

  23. Gracias por tu intención de compartir pero es imposible descargar los archivos desde 4 Shared sin dar problemas teniendo que registrarte en esa plataforma Virulenta, y a la final no pude descargar nada. Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *