ABC PROYECTOS ELECTRÓNICOS| ABCelectronica.

net

Descripción
Este es un reloj de tiempo real con batería de respaldo (RTC – Real Time Clock) que permite al
microcontrolador mantener tiempo; hora y fecha, aún si el circuito electrónico en el que se
encuentra se queda sin energía. Es perfecto para llevar registro de datos, reloj de capacidad,
sellado de tiempo, temporizadores y alarmas, etc. Este RTC se usa en conjunto con un
microcontrolador.
El DS1307 RTC es el más popular, y funciona mejor con los microcontroladores basados en 5V
como el Arduino. Un reloj de tiempo real es básicamente un reloj que funciona con una batería y
mantiene la hora, incluso cuando hay un corte de energía. El uso de un RTC, puede realizar un
seguimiento de los plazos largos, aunque se reprogramar el microcontrolador al desconectarlo del
USB o de un enchufe de alimentación.

|11 avenida 15-51 zona 1

1

ABC PROYECTOS ELECTRÓNICOS| ABCelectronica. se incluye un RTC independiente. tendría que reajustar la hora. |11 avenida 15-51 zona 1 2 . etc.. Pero si debe corta la alimentación. Al igual que los relojes de alarma muy baratos: cada vez que pierden la alimentación quedan parpadeando con la hora 12:00. Si bien este tipo de cronometraje básico está bien para algunos proyectos. el temporizador de milisegundos se ajusta a 0. pero no hacerse cargo de horario de verano (porque cambia de un lugar a otro. El Arduino no sabe que es "Lunes" o "09 de abril". tienen incorporado un reloj llamado millis y también cuentan con temporizadores incorporados en el circuito integrado que puede realizar un seguimiento de los períodos de tiempo más largos como minutos o días. relojes. y de un RTC a otro). lo único que puede decir es "Hace 14.000 milisegundos desde la última vez encendí”. Si desea ajustar la hora en el Arduino sin tener el modulo DS1307 Tendría que programar en el la fecha y hora para que empiece a contar desde ese momento. algunos proyectos tales como registradores de datos. Se puede contar con años bisiestos y saber cuántos días se encuentran en un mes. Por lo tanto. La imagen de arriba muestra una placa base con un reloj de tiempo real y dentro hay una batería de litio.net La mayoría de los microcontroladores incluyendo el Arduino. Millis sólo realiza un seguimiento del tiempo transcurrido desde la última vez que se usó Arduino. tendrán que tener cronometraje consistente que no se restablece cuando la batería Arduino muere o se reprograme. Esto significa que cuando la alimentación se enciende. El circuito integrado RTC se especializa en mantener la noción del tiempo. es por eso que es tan grande.

DS1307 En encapsulado DIP En conjunto se utiliza una pila de botón (batería de litio 3V CR2025 o CR2032). permite obtener y establecer el tiempo de un DS1307 (originalmente escrito por JeeLab). Para la biblioteca RTC.ABC PROYECTOS ELECTRÓNICOS| ABCelectronica.net El RTC que es más común y de bajo costo es el DS1307. y puede funcionar durante años en una placa de PCB muy pequeña del tamaño de hasta una moneda.com/adafruit/RTClib Para saber cómo instalar una librería visite el siguiente link |11 avenida 15-51 zona 1 3 . fácil de soldar. incluso cuando el Arduino se apague o se reprograme. el DS1307 se activara lo largo de mucho tiempo. Librería de Arduino Cualquier microcontrolador de 5V con protocolo de comunicación i2c integrado puede utilizar fácilmente el DS1307 y el más usado con este es el Arduino. Lo pueden descargar del siguiente link: https://github. se debe utilizar la librería RTClib de JeeLab.

es necesario para la comunicación con el RTC SDA es el pin de datos I2C . El modulo posee 6 pines: SQ. el chip se va a “dormir” usando la energía de la batería de litio de 3V para efectuar la copia de seguridad. el cual se encuentra en la parte inferior. DS. VCC y GND los cuales corresponden a: • • • VCC y GND: Se utilizan 5V para alimentar el circuito integrado RTC cuando se desea “consultar” por el tiempo desde el microcontrolador. Si no hay señal de 5V. SCL es el pin de reloj i2c .es necesario para la comunicación con el RTC En caso de utilizar Arduino UNO o LEONARDO el cableado deberá de ser de la siguiente manera: En caso de Arduino UNO y LEONARDO los pines de comunicación I2C se encuentran cerca del pulsador de RESET y corresponden a SCL y SDA: |11 avenida 15-51 zona 1 4 . SDA.ABC PROYECTOS ELECTRÓNICOS| ABCelectronica. VCC. 4 son de vital importancia: SCL. SDA. GND y BAT. SCL. De los cuales para esta práctica.net Cableado del módulo a la plataforma Arduino Primero se debe de colocar la batería en el porta batería del módulo.

ABC PROYECTOS ELECTRÓNICOS| ABCelectronica. los pines 20 y 21 corresponden a SDA y SCL |11 avenida 15-51 zona 1 5 .net En caso de utilizar Arduino MEGA 2560.

|11 avenida 15-51 zona 1 6 . Serial. RTC.begin(57600).// funcion que regresa tiempo Serial. RTC.print('/').print(now.//dia Serial.print(now. Dentro de la librería se encuentran RTC.h" //llamado de libreria DS1307 RTC_DS1307 RTC.//minuto Serial.year() que proporciona el año.second().year().print(now.month().//año Serial.print(now. LECTURA DE HORA //Ejemplo básico para la lectura de la hora y fecha //del módulo DS1307 //www.net #include <Wire.net Descripción del código El código consta de la escritura y lectura del horario.print(' '). minuto y segundo. Wire.print(now.//mes Serial. Serial.begin(). día.ABCelectronica. pero para una mayor comprensión iniciaremos con la lectura. Serial. DEC). Serial. Serial. delay(950).ABC PROYECTOS ELECTRÓNICOS| ABCelectronica.now().println("Inicio de lectura").//segundo Serial.print(':'). mes.day(). } Utilizando la función callnow() esta nos regresa el objeto DateTime el cual describe el año.hour() que proporciona la hora y así sucesivamente.begin().println().print('/'). DEC).print(':'). DEC).//hora Serial. void setup() { Serial. DEC).print(now. hora. Serial.minute(). DEC). } void loop() { DateTime now = RTC.h> //llamado de libreria #include "RTClib.hour(). DEC).

debido a que anteriormente no tenía la batería instalada o no fue “escrita” la hora y fecha.ABC PROYECTOS ELECTRÓNICOS| ABCelectronica. por lo que el tiempo será de 0:0:0.net Una vez cargado el código. en el monitor serial (herramientas>monitor serial) se observara algo como lo siguiente: Esto significa que el RTC no posee la hora. |11 avenida 15-51 zona 1 7 . Por lo que una vez instalada la batería se recomienda no quitarla para no “perder” la hora.

ABC PROYECTOS ELECTRÓNICOS| ABCelectronica.print(now. DEC).month().adjust(DateTime(__DATE__. Serial.print(':').isrunning()) { Serial.print(now. } } void loop () { DateTime now = RTC.begin(). Wire.second(). Serial.println("RTC is NOT running!"). Serial.print(now.print('/'). if (! RTC.print(' ').begin(57600). Serial. DEC).h" //llamado de libreria DS1307 RTC_DS1307 RTC. Serial.minute().net #include <Wire.year(). Serial.print('/'). Serial. } |11 avenida 15-51 zona 1 8 . Serial. __TIME__)).print(now. Serial. Serial.print(now. DEC).now(). // La siguiente linea de codigo permite escritura de la hora y fecha de la PC RTC.ABCelectronica.begin(). delay(950). Serial. DEC).h> //llamado de libreria #include "RTClib.net ESCRITURA DE HORA El código a continuación corresponde al mismo de lectura pero con tres líneas de programación adicionales: //Ejemplo basico para la lectura de la hora y fecha //del modulo DS1307 //www.day(). RTC.print(now. Serial. void setup () { Serial.println(). DEC).hour(). DEC).print(':').

Tomar en cuenta que los baudios del monitor serial deben ser iguales al de código programación ya que de lo contrario aparecerán símbolos de modo aleatorio.net La función RTC. el reloj se apagará y el tiempo se encontrara atrasado. ya que si lo compila y lo carga más tarde. Sobre referencia de la información y para conocer más sobre el código: Adafruit |11 avenida 15-51 zona 1 9 . se recomienda cargar nuevamente el codigo de LECTURA u otro codigo que no posea las tres lineas adicionales ya que puede existir una sobreescritura cada vez que se conecte el arduino a la PC. OJO: Una vez abierto el software deberá de cargar inmediatamente el código de escritura.adjust que se encuentra en la línea de código siguiente: Permite tomar la fecha y hora según el equipo (PC) en que se encuentra conectado el Arduino y permite programar el RTC.ABC PROYECTOS ELECTRÓNICOS| ABCelectronica. Por lo que se debe tomar en cuenta que la PC tenga la hora correcta. Una vez cargado el código. en el monitor serial (herramientas>monitor serial) se observara algo como lo siguiente: Una vez realizada la escritura de la hora en el RTC.