lunes, 13 de junio de 2016

Modulo RTC DS1302

Para emplear este modulo es necesario esta librería: DS1302

Este modulo nos permite trabajar con un reloj de tiempo real, el cual no perderá la hora a menos que la pila se le agote en este caso se perdería toda la configuración y volvería al estado de fabrica, este modulo es muy útil ya que en caso de apagarse el Arduino o de desconectarse no perderá la hora. Lo primero para poder trabajar con el seria ponerle una pila de tipo DL2032, y acto seguido se configurará la hora desde el arduino.

En esta entrada os dejare un ejemplo de como configurar la fecha y la hora del modulo.
Disposición de los pines:

RST-Pin 2
DAT-Pin 3
CLK-Pin 5
VCC-+5
GND-GND

Comencemos con el código:

Lo primero es incluir la librería y declarar los pines en los que conectaremos la rtc:

#include <DS1302.h>

DS1302 rtc(2, 3, 5);//Estos son los pines en los que conectaremos RST, DAT y CLK respectivamente

Una vez declarada la rtc ya podemos configurar la hora desde el void setup(), lo primero es desactivar la protección contra escritura, una vez desprotegido ya podemos comenzar con la configuración:

  void setup():
  {
    rtc.halt(false);
    rtc.writeProtect(false);

    rtc.setDOW(MONDAY);  //Configuramos el día de la semana debéis escribirlo en ingles por la           librería
    rtc.setTime(20, 28, 30);  // Configuramos la hora en formato 24h con minutos y segundos
    rtc.setDate(13, 6, 2016); // Configuramos la fecha en formato día/mes/año
  }

Con esto concluye el programa y ya estaría configurada nuestra rtc, mas adelante subiré un ejemplo de reloj utilizando el Arduino, la pantalla lcd y el modulo DS1302.

Aquí dejo el programa del ejemplo completo: ConfiguraciónRTC

4 comentarios:

  1. Buenas noches, sabe como activar un relay con el RTCDS1302?

    ResponderEliminar
  2. La manera que se me ocurre para activarlo es utilizando las variables de tiempo dentro de la RTC y comparándolas, te pongo un ejemplo:

    Declaramos la RTC:
    DS1302 rtc(2, 3, 5);

    Luego creamos un objeto de la clase Time:

    Time t;

    Una vez creado dentro del loop igualas la t a la RTC:
    t = rtc.getTime() //Te permite leer el valor actual de la RTC

    Ahora puedes acceder a la fecha o a la hora utilizando las variables de t:
    t.dow //Devuelve el día de la semana con un valor numérico entre 1 y 7, siendo 1 Lunes y 7 el Domingo

    t.date //Día del mes
    t.mon // Mes
    t.year // Año

    t.hour // Hora
    t.min // Minutos
    t.sec // Segundos

    Para activar el relé solo tendrias que comparar las variables de tiempo y activar el pin en función te tus necesidades.

    if(t.hour == 12){
    if(t.min >= 30)
    digitalWrite(11,HIGH);
    }
    else{
    digitalWrite(11,LOW);
    }

    ResponderEliminar
  3. No me funciona el código. Me da problemas con el void y con el time t;. Alguien sabría el por que de esto??

    ResponderEliminar
  4. estoy con el rtc1302
    como le hago para que no se me fórmate la hora y fecha del reloj cada vez que se desconecta

    ResponderEliminar