Reloj en Tiempo Real DS1307 con Arduino Nano

publicado en: Sin Categoria | 0

Reloj en Tiempo Real DS1307 con Arduino Nano 1El chip DS1307 (datasheet) se resume como si fuera un reloj, que solo necesita una batería de 3v tipo boton de 210mA/h y mantiene la hora incluso cuando no hay energía de 5v. Además posee un reloj/calendario de baja potencia, memoria no-volatil y brinda: segundos, minutos, horas, días, semana, mes y año. Utiliza el protocolo I2C para comunicarse con cualquier microcontrolador, lo cual lo vuelve muy versátil.

Existen muchos microntroladores que utilizando temporizadores pueden realizar y obtener intervalos de tiempo como: segundos, minutos y horas. Pero lo que ofrece este chip DS1307 es brindar tiempo/fecha más detallada como: «11 de Junio del 2015 – 18:35:05s», detectar cuantos días tiene cada mes, que año es bisiesto e incluso mantener la hora aún cuando se corte la energía. La comunicación con este chip es a través del protocolo I2C que muchos microcontroladores poseen, pero para ello es necesario conocer procedimientos, comandos y registros de este chip DS1307. A continuación se muestra las características generales y los registros involucrados.

CARACTERÍSTICAS TÉCNICAS DEL DS1307:

  1. RTC cuenta: segundos, minutos, horas, fecha de Mes, mes, día de la semana y año con año bisiesto.
  2. 56 Bytes de memoria NO-Volátil.
  3. Señal de salida den Onda Cuadrada programable.
  4. Detección de fallo de Energía Automático.
  5. Consumo: <500nA en batería.
  6. Rango de temperatura Industrial -40°c hasta +85°c.
  7. Interfaz I2C de 100Khz y 400Khz.

REGISTROS:

RTC-2

 

Para poder leer y escribir en el DS1307 es necesario seguir paso a paso el protocolo I2C, pero gracias a que existen muchos ejemplos en Arduino e incluso librerías con la cual solo se necesita llamar a la función especifica. En el siguiente ejemplo se resume como leer tiempo y fecha  a través de la libreria RTClib.

EJEMPLO

#include 
#include "RTClib.h"

//  Crea la clase RTC para acceder a los segundos, minutos....
RTC_DS1307 RTC;

void setup () {
  Serial.begin(57600);  //  Configura el Monitor Serial.
  Wire.begin();         //  Configura e inicializa el Protocolo I2C.
  RTC.begin();          //  Inicializa el RTC - DS1307.
}

void loop () {
  DateTime now = RTC.now();        //  Lee el tiempo Actual del RTC.
  Serial.print(now.year(), DEC);   //  Escribe el Año.
  Serial.print('/');
  Serial.print(now.month(), DEC);  //  Escribe el Mes.
  Serial.print('/');
  Serial.print(now.day(), DEC);    //  Escribe el Día.
  Serial.print(' ');
  Serial.print(now.hour(), DEC);   //  Escribe el Hora.
  Serial.print(':');
  Serial.print(now.minute(), DEC); //  Escribe el Minuto.
  Serial.print(':');
  Serial.print(now.second(), DEC); //  Escribe el Segundo.
  Serial.println();
  delay(1000);
}

Deja una respuesta