Sie sind auf Seite 1von 9

ABC PROYECTOS ELECTRNICOS| ABCelectronica.

net

Descripcin
Este es un reloj de tiempo real con batera de respaldo (RTC Real Time Clock) que permite al
microcontrolador mantener tiempo; hora y fecha, an si el circuito electrnico en el que se
encuentra se queda sin energa. 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 ms popular, y funciona mejor con los microcontroladores basados en 5V
como el Arduino. Un reloj de tiempo real es bsicamente un reloj que funciona con una batera y
mantiene la hora, incluso cuando hay un corte de energa. 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 alimentacin.

|11 avenida 15-51 zona 1

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net


La mayora de los microcontroladores incluyendo el Arduino, tienen incorporado un reloj llamado
millis y tambin cuentan con temporizadores incorporados en el circuito integrado que puede
realizar un seguimiento de los perodos de tiempo ms largos como minutos o das. Millis slo
realiza un seguimiento del tiempo transcurrido desde la ltima vez que se us Arduino. Esto
significa que cuando la alimentacin se enciende, el temporizador de milisegundos se ajusta a 0. El
Arduino no sabe que es "Lunes" o "09 de abril", 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 Tendra que programar en el la
fecha y hora para que empiece a contar desde ese momento. Pero si debe corta la alimentacin,
tendra que reajustar la hora. Al igual que los relojes de alarma muy baratos: cada vez que pierden
la alimentacin quedan parpadeando con la hora 12:00.
Si bien este tipo de cronometraje bsico est bien para algunos proyectos, algunos proyectos tales
como registradores de datos, relojes, etc., tendrn que tener cronometraje consistente que no se
restablece cuando la batera Arduino muere o se reprograme. Por lo tanto, se incluye un RTC
independiente. El circuito integrado RTC se especializa en mantener la nocin del tiempo. Se
puede contar con aos bisiestos y saber cuntos das se encuentran en un mes, pero no hacerse
cargo de horario de verano (porque cambia de un lugar a otro, y de un RTC a otro).

La imagen de arriba muestra una placa base con un reloj de tiempo real y dentro hay una batera
de litio, es por eso que es tan grande.

|11 avenida 15-51 zona 1

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net


El RTC que es ms comn y de bajo costo es el DS1307, fcil de soldar, y puede funcionar durante
aos en una placa de PCB muy pequea del tamao de hasta una moneda.

DS1307 En encapsulado DIP

En conjunto se utiliza una pila de botn (batera de litio 3V CR2025 o CR2032), el DS1307 se
activara lo largo de mucho tiempo, incluso cuando el Arduino se apague o se reprograme.

Librera de Arduino
Cualquier microcontrolador de 5V con protocolo de comunicacin i2c integrado puede utilizar
fcilmente el DS1307 y el ms usado con este es el Arduino. Para la biblioteca RTC, se debe utilizar
la librera RTClib de JeeLab, permite obtener y establecer el tiempo de un DS1307 (originalmente
escrito por JeeLab). Lo pueden descargar del siguiente link:
https://github.com/adafruit/RTClib
Para saber cmo instalar una librera visite el siguiente link

|11 avenida 15-51 zona 1

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net


Cableado del mdulo a la plataforma Arduino
Primero se debe de colocar la batera en el porta batera del mdulo, el cual se encuentra en la
parte inferior. El modulo posee 6 pines: SQ, DS, SCL, SDA, VCC, GND y BAT. De los cuales para esta
prctica, 4 son de vital importancia: SCL, SDA, 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 seal de 5V, el chip se va a
dormir usando la energa de la batera de litio de 3V para efectuar la copia de seguridad.
SCL es el pin de reloj i2c - es necesario para la comunicacin con el RTC
SDA es el pin de datos I2C - es necesario para la comunicacin 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 comunicacin I2C se encuentran cerca del
pulsador de RESET y corresponden a SCL y SDA:

|11 avenida 15-51 zona 1

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net


En caso de utilizar Arduino MEGA 2560, los pines 20 y 21 corresponden a SDA y SCL

|11 avenida 15-51 zona 1

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net


Descripcin del cdigo
El cdigo consta de la escritura y lectura del horario, pero para una mayor comprensin
iniciaremos con la lectura.

LECTURA DE HORA
//Ejemplo bsico para la lectura de la hora y fecha
//del mdulo DS1307
//www.ABCelectronica.net
#include <Wire.h> //llamado de libreria
#include "RTClib.h" //llamado de libreria DS1307
RTC_DS1307 RTC;
void setup() {
Serial.begin(57600);
Serial.println("Inicio de lectura");
Wire.begin();
RTC.begin();
}
void loop() {
DateTime now = RTC.now();// funcion que regresa tiempo
Serial.print(now.year(), DEC);//ao
Serial.print('/');
Serial.print(now.month(), DEC);//mes
Serial.print('/');
Serial.print(now.day(), DEC);//dia
Serial.print(' ');
Serial.print(now.hour(), DEC);//hora
Serial.print(':');
Serial.print(now.minute(), DEC);//minuto
Serial.print(':');
Serial.print(now.second(), DEC);//segundo
Serial.println();
delay(950);
}

Utilizando la funcin callnow() esta nos regresa el objeto DateTime el cual describe el ao, mes,
da, hora, minuto y segundo. Dentro de la librera se encuentran RTC.year() que proporciona el
ao, RTC.hour() que proporciona la hora y as sucesivamente.

|11 avenida 15-51 zona 1

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net


Una vez cargado el cdigo, en el monitor serial (herramientas>monitor serial) se observara algo
como lo siguiente:

Esto significa que el RTC no posee la hora, por lo que el tiempo ser de 0:0:0, debido a que
anteriormente no tena la batera instalada o no fue escrita la hora y fecha. Por lo que una vez
instalada la batera se recomienda no quitarla para no perder la hora.

|11 avenida 15-51 zona 1

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net


ESCRITURA DE HORA
El cdigo a continuacin corresponde al mismo de lectura pero con tres lneas de programacin
adicionales:
//Ejemplo basico para la lectura de la hora y fecha
//del modulo DS1307
//www.ABCelectronica.net
#include <Wire.h> //llamado de libreria
#include "RTClib.h" //llamado de libreria DS1307
RTC_DS1307 RTC;
void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// La siguiente linea de codigo permite escritura de la hora y fecha de la PC

RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(950);
}

|11 avenida 15-51 zona 1

ABC PROYECTOS ELECTRNICOS| ABCelectronica.net


La funcin RTC.adjust que se encuentra en la lnea de cdigo siguiente:

Permite tomar la fecha y hora segn el equipo (PC) en que se encuentra conectado el Arduino y
permite programar el RTC. Por lo que se debe tomar en cuenta que la PC tenga la hora correcta.
OJO: Una vez abierto el software deber de cargar inmediatamente el cdigo de escritura, ya que
si lo compila y lo carga ms tarde, el reloj se apagar y el tiempo se encontrara atrasado.
Una vez cargado el cdigo, en el monitor serial (herramientas>monitor serial) se observara algo
como lo siguiente:

Una vez realizada la escritura de la hora en el RTC, 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.
Tomar en cuenta que los baudios del monitor serial deben ser iguales al de cdigo programacin
ya que de lo contrario aparecern smbolos de modo aleatorio.

Sobre referencia de la informacin y para conocer ms sobre el cdigo: Adafruit

|11 avenida 15-51 zona 1

Das könnte Ihnen auch gefallen