RTC

ciao a tutti,

sto utilizzando una rtc shield (tiny rtc) Real Time Clock Module (I2C) | 10100004 | Others by www.smart-prototyping.com in poche parole, ho caricato lo sketch per impostare l'ora (quello della libreria RTClib) e fin qui tutto ok, ma se tolgo l'alimentazione ad arduino e poi ricollego, da seriale quando vado a leggere ora e minuti, mi parte dall'ora in cui e stato programmato, quindi se lo programmo alle 5 lo scollego e alle 6 lo ricollego, mi stampa le 5.... può essere la batteria tampone già andata anche se dovrebbe essere nuova, visto che ho appena comperato l RTC?

grazie

Misura con il tester che tensione hai...senno potrebbe essere un falso contatto della batteria tampone..

Verifica che ... non sia proprio il codice a reimpostare l'ora ad ogni avvio ... :roll_eyes:

Guglielmo

la batteria fa 3.20 per quello.... @Guglielmo, era la prima cosa che ho provato a fare, ossia programmare la prima volta così:

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

void setup () {
  Serial.begin(57600);
#ifdef AVR
  Wire.begin();
#else
  Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
  rtc.begin();

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
}

per poi togliere la riga di adjust

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

void setup () {
  Serial.begin(57600);
#ifdef AVR
  Wire.begin();
#else
  Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
  rtc.begin();

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
   // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
}

ma così facendo mi sputa fuori un' ora e una data a caso ossia 6:28, e data 2106/06/12.....

Ok ... quindi sembra che perda proprio l'impostazione ... ti da anche il messaggio "RTC is NOT running!" o no ?

Sicuro del buon contatto della batteria ? Se misuri con il tester NON sulla batteria, ma direttamente sui pin 3 e 4 del DS1307 cosa leggi ?

Guglielmo

no no niente messsaggio! ora non posso controllare quando torno a casa vedo subito Guglielmo, per curiosità, la carcassa del quarzo è bene saldarla con la "piazzola" sottostante piuttosto che ci sia solo a contatto? o si rischia solo di surriscaldare il quarzo?

Quella saldatura scherma semplicemente il quarzo.

quindi e consigliabile saldarlo o no?

ora sembrerebbe che il problema non si presenti più, solo che ora l'ora e indietro di 15 min, come se l'IDE quando va a caricare il programma fosse sballato!

La schermatura certo male non fa, ma il surriscaldamento del quarzo sì: occhio al tempo di saldatura!

Comunque, i 15 minuti in meno che rilevi non dipendono da questo: prova ad inserire un orario, spegnere tutto (lasciando ovviamente la pila sull'RTC) e rilevare esattamente 24 ore dopo.

Fai la stessa misurazione dopo 48 ore: se rilevi il doppio del ritardo, allora vuol dire che il quarzo non oscilla alla frequenza giusta (quarzo difettoso).

daccordo! grazie mille cyber. aggiornerò il post con i risultati!