Hace unos días que estoy jugando con el Arduino, cuando me llegó lo contaba en el artículo Arduino Diecimila.
Una de las primeras cosas que he tenido que incorporarle es un reloj, el microcontrolador Atmel no lleva ningún reloj permanente y no sabes en que horas vives, no puedes programar eventos en función de la hora, ni puedes guardar históricos, por ejemplo.
Para proporcionarle la hora he utilizado un circuito integrado Dallas DS1307, el data sheet lo puedes mirar aquí.
El DS1307 es perfecto, es un RTC (reloj en tiempo real) que se puede comunicar utilizando protocolo I2C contra el Arduino y que tiene funciones de backup de hora y fecha con su batería propia.
El I2C es un protocolo de comunicaciones de bus serie para el que existe una librería para programar con el IDE del Arduino, la librería se llama Wire y en su página oficial puedes tener mucha información sobre ella.
El conexionado del Dallas DS1307 también es muy sencillo:
- alimentación de 5v en la pata 8
- una pila de botón de 3v. del tipo BR3032 en la pata 3 (para conservar la fecha y hora)
- un cristal de cuarzo de 32.768kHz en las patas 1 y 2
- masa en la pata 4
- comunicaciones en la 6 con el SCL y en la 5 con el SDA
Para utilizar con el Arduino solamente hay que conectar el SCL por ejemplo a la entrada analógica 5 del Arduino y el SDA a la entrada analógica 4.
Hay que conectarlas con resistencias en pull-up de 2.2K en cada canal.
Todo incluido (sin el Arduino) no supera los 5€.
Dejo el acceso al programa que he utilizado para incorporar a mi proyecto con el que puedes programar la hora y luego leerla y mostrarla por el serial:
Documentación sobre la implementación en glacialwanderer.com
Idea sacada de:
nearfuturelaboratory.com
garcia-cuervo.com
clubse.com.ar
wulfden.org
arduino.cc
arduino.cc
Próximamente iré incorporando nuevas funciones al Arduino, tendrá que poder manejar un mínimo de ocho aparatos eléctricos y tomar la temperatura con una o varias sondas.
[…] Anteriormente ya he conseguido añadir un reloj en tiempo real, para que lo contaba en el artículo Fecha, Hora y Arduino. […]
[…] muchas más cosas.Ahora mismo mi controlador de acuario está funcionando con un Arduino y tiene un reloj en tiempo real, una tarjeta de 0cho reles, un termómetro digital y una pantalla LCD serie de 20×4, todo […]
Buena tu pagina, me gusto, bueno tu estilo y lo del rtc para el arduino fantastico,
gracias.
Osbox68 me alegra de que te guste, muchas gracias por tu comentario
Felicidades, la página muy buena, precisamente quiero hacer el control de mi acuario con un andruino y buscando información la he encontrado, de momento tengo todas las piezas compradas en camino, pero me consuela que mi «plan teórico» de controlar mi acuario no es imposible.
Un saludo.
Muchas gracias por tu comentario Israel, espero que lo lleves a buen termino.
Hola, me parece genail el artículo. Sólo he tenido un pequeño problema al probarlo, y es que cuando desconectas la placa arduino de la corriente, se supone que el reloj debería seguir funcionando gracias a la pila, pero cuando lo vuelvo a conectar, la hora que me muestra es las 0:0:0 1/1/0. ¿Alguna idea?
pues a mi siempre me guardó la hora, solamente si la pila estaba gastada se me hacia reset….
quizás está mal conectada, no se, espero ser de ayuda
No te pasa que el reloj se atrasa una barbaridad en un perido muy corto de tiempo ? O da lecturas falsas ? Eso es normal y lo controlas por software ?
20:51:4 165/45/165 Day_of_week:5
20:51:4 11/27/11 Day_of_week:5
20:51:4 11/27/11 Day_of_week:5
20:51:4 11/27/11 Day_of_week:5
20:51:4 11/27/11 Day_of_week:5
20:51:4 11/27/11 Day_of_week:5
20:51:4 11/27/11 Day_of_week:5
0:0:0 0/0/0 Day_of_week:0
20:51:4 11/27/11 Day_of_week:5
45:85:4 165/165/165 Day_of_week:165
0:0:0 0/0/0 Day_of_week:0
20:51:4 11/27/11 Day_of_week:5
Jordi, cuando yo me peleaba con el Arduino no tenía ningún problema con el retraso del reloj, no se que le puede pasar al tuyo, lo siento…
Hola. Resulta que lo compilo y me tira un error con el tema del Wire.
Tenes el archivo wire.h por las dudas?
Saludos.