CURSO ARDUINO BOTS 2
TALLER AULAROBOT
Electrónica, Programación y Arduino
Profesor a cargo: Tec. Julián Andrés Goinhex
2° Cuatrimestre 2020
Practicas:
RTC DS1307
Real Time Clock
Un reloj de tiempo real (RTC) es un dispositivo electrónico que permite obtener mediciones de
tiempo en las unidades temporales que empleamos de forma cotidiana. Los RTC son más parecidos
a los relojes y calendarios que usamos habitualmente, y que funcionan con segundos, minutos,
horas, días, semanas, meses y años.
Los RTC normalmente están formados por un cristal integrado con la electrónica necesaria para
contabilizar de forma correcta el paso del tiempo.
La electrónica de los RTC tiene en cuenta las peculiaridades de nuestra forma de medir el tiempo,
como por ejemplo el sistema sexagesimal, los meses con diferentes días, o los años bisiestos.
También incorporan una batería CR2032 para mantener el dispositivo en hora al retirar la
alimentación. Esta batería debería ser capaz de mantener alimentado durante varios años al
DS1307. La tensión de alimentación de batería es de 2.0 a 3.5.
Los RTC son dispositivos ampliamente utilizados en electrónica. Todos los ordenadores personales,
servidores, tablets, y smartphone incorporan uno. También son muy frecuentes en sistemas
embebidos y, en general, en multitud de dispositivos que requieren realizar un registro del tiempo.
PinOut del Módulo
La comunicación entre el Arduino y el Modulo RTC es por I2C (pines SDA y SCL), También tiene un
pin (SQ) que envía un pulso cada segundo (1 Hz), que nos puede servir para sincronizar otros
componentes o para realizar un contador de segundos. A su vez, el módulo tiene un espacio para
soldar un DS18B20 (sensor de temperatura) y acceder a este a través del pin DS.
Al reverso tiene un socket para insertar una batería de 3V, que le permite al RTC mantener en
funcionamiento la hora y fecha cuando se apague el Arduino o se le quiete la alimentación principal.
Esta batería dependiendo de la marca y del tiempo apagado, puede durar desde los 3 hasta los 10
años aproximadamente.
Conexión con Arduino
La conexión es sencilla. Simplemente alimentamos el módulo desde Arduino mediante 5V y Gnd y,
por otro lado, conectamos los pines del bus I2C a los correspondientes de Arduino.
Programando el DS1307 para Arduino
Para este ejemplo usaremos la librería RTClib de Adafruit, necesitamos descargar e importar dicha
librería al IDE de Arduino.
Actualizando la Hora y fecha de nuestro DS1307
Cuando adquirimos un DS1307, al no traer su pila, no tiene la hora actualizada, cada vez que
quitamos la pila el DS1307 pierde la hora, estableciéndose como hora 0:0:0 y fecha 00/00/00,
Este ejemplo solo se utiliza para poner a la hora nuestro DS1307:
De esta forma cada vez que el Arduino se enciende o se reinicia, el Arduino actualizara al DS1307 con
la hora que fue compilado el programa.
Obteniendo Hora y Fecha del DS1307
En este ejemplo realizaremos la lectura de los segundos, minutos y horas del DS1307, y a su vez
también obtendremos la fecha.
Para realizar este ejemplo usamos el siguiente código:
Cada vez que se llama a rtc.now se actualiza la hora y se guarda en el objeto HoraFecha que es
de la clase DateTime propia de la librería RTClib.