Está en la página 1de 4

GUÍA DE APOYO DEL CURSO ARDUINO KIT

RTC RELOJ DE TIEMPO REAL DS1302

MARCO TEÓRICO
Un módulo RTC (Real Time Clock) o Reloj de tiempo real consiste en un circuito integrado
alimentado por una batería 2032 el cual, en todo momento, registra la fecha, día de la semana
y hora al igual que un reloj digital convencional. Sólo que estos datos únicamente podrán ser
consultados mediante comunicación I2C.
DESCRIPCIÓN
El chip DS1302 contiene un reloj/calendario de tiempo real y 31 bytes de RAM estática. Se
comunica con un microprocesador mediante una interfaz serial simple.
Solamente se requieren 3 alambres para comunicarse con el reloj y la RAM: CE (chip enable),
I/O (data line) y SCLK (serial Clock). Los datos pueden ser transferidos desde y hacia el
reloj/RAM 1byte a la vez o 31 bytes de una sola vez. El DS1302 está diseñado para operar con
muy baja potencia y retiene los datos y la información del reloj con menos de 1 µW.
Para su funcionamiento se necesita un cristal de 32.768 kHz con capacitancia de carga de 6 pF
(vendido por separado). Recuerde que hablamos del Chip, el módulo si tiene el cristal.
Características:
• Cuenta segundos, minutos, horas, mes, día de la semana y año
• Año bisiesto válido hasta el 2100
• Soporta modo de 24 o 12 horas con indicador AM/PM
• RAM estática de 31 bytes
• Empaque: 8-pin DIP
Especificaciones Clave:
• Requerimiento de potencia: 2 a 5 VDC; menos de ~300 nA
• Comunicación: TTL compatible serial sincrónico de 3 líneas
• Temperatura de Operación: -32° a +185° F (-0° a + 70° C)
• Dimensiones: 0.4 x .025 in (10 x 6.4 mm)

Fuente de información:
http://librearduino.blogspot.com/2014/01/rtc-arduino-modulo-reloj-tiempo-real-tutorial.html
Http://www.bolanosdj.com.ar/movil/arduino2/rtcds1302.pdf

RENÉ DOMÍNGUEZ ESCALONA 71


GUÍA DE APOYO DEL CURSO ARDUINO KIT

DESCRIPCIÓN DE EJEMPLO
Se conectar el RTC DS1302, especialmente 3 pines CLK al pin 5, DAT al pin 4 y RST al pin 2,
básicamente el funcionamiento refiere a configurar una fecha y hora de inicio y posteriormente
arranca el reloj con su ciclo normal para marca fecha y hora sin necesidad de que el Arduino
esté conectado al equipo de cómputo, debido a que cuenta con la batería 2032 para su
alimentación independiente.
Para este ejemplo se requiere la librería ThreeWire.h y RtcDS1302.h que se puede agregar
descargando de los siguientes enlaces:
https://github.com/Makuna/Rtc
MATERIAL A UTILIZAR
• Arduino UNO
• Protoboard
• Cables
• RTC DS1302
• Pantalla LCD 16x02 con I2C
• Batería 2032 3v
DIAGRAMA DE CONEXIÓN

RENÉ DOMÍNGUEZ ESCALONA 72


GUÍA DE APOYO DEL CURSO ARDUINO KIT

CÓDIGO FUENTE
//SE AGREGA LIBRERÍAS DE LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

//SE AGREGA LIBRERÍAS PARA RTC

#include <ThreeWire.h>
#include <RtcDS1302.h>
//SE CREA Y CONFIGURA OBJETO PARA MANEJAR RTC
ThreeWire myWire(4,5,2); //PINES IO, SCLK, CE -> DE RTC DS1302
RtcDS1302<ThreeWire> Rtc(myWire);

void setup () {
// SE INICAR MONITOR SERIE E IMPRIME FECHA Y HORA
Serial.begin(57600);
Serial.print("CONFIGURACIÓN INICIAL ");
Serial.print(__DATE__);
Serial.println(__TIME__);
lcd.begin(16,2); //SE INICIARLIZA LCD
Rtc.Begin();// SE INICIALIZA RTC
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);//SE CONFIGURA FECHA Y HORA ACTUAL
printDateTime(compiled); //SE IMPRIME FECHA Y HORA
Serial.println();
}

void loop () {
//SE OBTENIE FECHA Y HORA ACTUAL Y SE ACTUALIZA
RtcDateTime now = Rtc.GetDateTime();
printDateTime(now);
Serial.println();
if (!now.IsValid()){
Serial.println("ERROR EN FECHA Y HORA");
}
delay(1000);RETARDO DE 1 SEGUNDO
}

#define countof(a) (sizeof(a) / sizeof(a[0]))

//FUNCION PARA IMPRIMIR FECHA Y HORA CON FORMATO ADECUADO

void printDateTime(const RtcDateTime& dt){


char datestring[20];
snprintf_P(datestring,
countof(datestring),
PSTR("%02u/%02u/%04u %02u:%02u:%02u"),//SE CONFURA FORMATO DE FECHA Y HORA
dt.Month(),
dt.Day(),
dt.Year(),
dt.Hour(),
dt.Minute(),
dt.Second() );
//SE IMPRIME LA FECHA Y HORA EN LCD
lcd.setCursor(0,0);
lcd.print("DATE ");
lcd.print(dt.Month());
lcd.print("/");
lcd.print(dt.Day());
lcd.print("/");
lcd.print(dt.Year());
lcd.setCursor(0,14);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("TIME ");
lcd.print(dt.Hour());
lcd.print(":");
lcd.print(dt.Minute());
lcd.print(":");
lcd.print(dt.Second());

RENÉ DOMÍNGUEZ ESCALONA 73


GUÍA DE APOYO DEL CURSO ARDUINO KIT

Serial.print(datestring);//SE IMPRIME EN MONITOR SERIE


}

RESULTADO

RENÉ DOMÍNGUEZ ESCALONA 74

También podría gustarte