Go Down

Topic: Tutorial - Reloj RTC I2C con Arduino (Read 22368 times) previous topic - next topic

fjramirez


  hola compañeros e estado trabajando en el RTC de arduinoo,
usando el tutorial funciona muy bien el problema es al tratar de darle condiciones
de tiempo al arduino no me responde  aqui tengo el codigo no se que me falta..



#include <Wire.h>   // Incluye la librería Wire
#include "RTClib.h" // Incluye la librería RTClib
RTC_DS1307 RTC; // Crea el objeto RTC
int hora =0;
int minuto =0;
int segundo =0;

void setup () {
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
Wire.begin(); // Establece la velocidad de datos del bus I2C
RTC.begin(); // Establece la velocidad de datos del RTC
}
void loop () {
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC

Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(5000); // La información se actualiza cada 1 seg.
hora=(now.hour(),DEC);
minuto=(now.minute(),DEC);
segundo=(now.second(),DEC);

if (hora >=7);
{
  digitalWrite(5,HIGH);

if (hora >=17);
digitalWrite(5,LOW);
}
}



si me pudieran ayudar

muchas gracias..!!!


Puede que esto te sea de utilidad http://forum.arduino.cc/index.php?topic=254415.0
;)

Derty-2

fjramirez

Quote

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
#include "RTC_DS1307.h"
#define DS1307_I2C_ADDRESS 0x68
int hora = 0;
int minuto = 0;
int segundo = 0;

RTC_DS1307 RTC;

void setup () {
   
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();
    pinMode (5, OUTPUT);
    //RTC.adjust(DateTime(2014, 7, 3, 12, 42, 20));// quitar "//" poner fecha año, mes, dia, hora.. y luego volver a grabar sketch//
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");   
  }
}

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();
   
    hora = (now.hour(),DEC);
    minuto = (now.minute(),DEC);
    segundo = (now.second(),DEC);

    if (hora >=7);
        {
        digitalWrite(5,HIGH);

        if (hora >=17);
        digitalWrite(5,LOW);
         }
}

holaxic

Hola buenas noches a todos, soy nuevo en este foro y doy gracias por todos los comentarios que dais. Pero he revisado varios dias el foro y no encuentro lo q me sucede con mi mega i RTD I2C. El sistema funciona perfectamente la hora y el dia, pero el problema que hay es que se adelanta . ( unos 7 seg cada 12 horas ). He cambiado varias veces la pila y siempre el adelanto es igual. En esta compra compre 2 unidades y las dos hacen el mismo efecto. En uno de ellos cambie el cristal de cuarzo per hace el mismo efecto. Hay alguien que le ha pasado algo similar?.
Muchas gracias un saludo.

fjramirez


Hola buenas noches a todos, soy nuevo en este foro y doy gracias por todos los comentarios que dais. Pero he revisado varios dias el foro y no encuentro lo q me sucede con mi mega i RTD I2C. El sistema funciona perfectamente la hora y el dia, pero el problema que hay es que se adelanta . ( unos 7 seg cada 12 horas ). He cambiado varias veces la pila y siempre el adelanto es igual. En esta compra compre 2 unidades y las dos hacen el mismo efecto. En uno de ellos cambie el cristal de cuarzo per hace el mismo efecto. Hay alguien que le ha pasado algo similar?.
Muchas gracias un saludo.


Solo se adelanta 7 segundos??? O cada 12 horas aproximadamente se adelanta 7 segundos? Ten en cuenta que los relojes por muy precisos que sean siempre tienen un error. Es cierto que 7 segundos cada 12 horas es mucho.

Si por el contrario solo se adelanta 7 segundos en las primeras 12 horas, y luego se mantiene, puede ser debido a que el reloj se debe estabilizar. Cuando inicias el reloj lo hace a una temperatura diferente que cuando lleva tiempo funcionando. Este pequeño cambio de temperatura puede ser suficiente para que el reloj sufra una pequeña desviación en su frecuencia.

Haciendo pruebas con el modulo del que se habla en este post, he notado un pequeño atraso, pero era debido al tiempo que tarda la IDE de Arduino, en crear el .hex y cargarlo en la placa (Recordamos que el código usa la fecha de creación del .hex para establecer la hora) Por lo demás, ningún problema, lo hemos probado días y semanas encendido y todo perfecto.

Al igual que nolo_manoloso me sale esto

2165/165/165 165:165:85

alguien lo soluciono? ya conecte bien el RTC y nada...
Gracias.

uargo

Para futuros diseños o para los que querais un RTC de mayor precision usad el DS3231 en vez del DS1307.

Yo he usado el DS1307 durante años en un controlador de acuario y va bien pero... es muy susceptible de resetearse si no filtras muy bien la alimentacion (termine solucionandolo), pero el mayor problema es la precision que tiene... se te podia desajustar un minuto (no lo recuerdo exacto pero entre 1 y 5 minutos al mes, trabajando eso si las 24h del dia 365 dias al año).
El DS3231 es del mismo fabricante Dallas Semiconductor pero es una evolucion y de mejores prestaciones lleva internamente unos sensores para ajustar la compensacion por temperatura, esto le confiere mucha mas precision y la diferencia de precio es minima, el DS 3231 sale por un euro o euro y poco (en aliespress viene en una plaquita con una eeprom 24c32 y la pila)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy