arduino 2009 rtc ds1307 non mantiene l'ora

Ciao, chiedo aiuto per risolvere il seguente problema . ho collegato ad arduino un rtc e caricato il seguente sketch
accade una cosa strana sino a quando arduino si trova collegato al pc l'orario è sincronizzato al time del pc, se però scolleggo arduino dal pc x 5 minuti quando ricollego arduino al pc i due orari non sono + sincronizzati ma c'è una differenza di 5 minuti.
nb il modulo ds 1307 ha inserita la batteria al litio.

un idea?
grazie ù

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

RTC_Millis RTC;

void setup () {
Serial.begin(57600);
// following line sets the RTC to the date & time this sketch was compiled
RTC.begin(DateTime(DATE, TIME));
}

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();
Serial.println();
delay(3000);
}

Mi marca un po' male la cosa del setup() ma sarebbe da verificare con la libreria che stai utilizzando. Se lo togli cosa succede? F

E' come dice Federico:

void setup () {
    Serial.begin(57600);
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.begin(DateTime(__DATE__, __TIME__));
}

Il commento dice:
"la linea seguente imposta l'RTC alla data ed ora a cui lo sketch è stato compilato.
Quindi in pratica ti "riporta indietro" l'orologio.
Serve solo la prima volta per allineare l'RTC.

Dovresti:

  1. compilare lo sketch con quella riga
  2. flashare l'Arduino con quello sketch, in modo che lo sketch regoli l'RTC
  3. ricompilare lo sketch SENZA quella riga
  4. riflashare l'Arduino con il nuovo sketch

Ora puoi fare tutti gli stacchi che vuoi e l'RTC andrà per conto suo correttamente.

ciao,
grazie x il suggerimento.
ho fatto come da voi suggerito purtroppo il risultato non è quello atteso:
eseguendo l'upload con la riga non commentata e aprendo serial monitor vedo l'orario e la data corretta
2011/11/4 20:42:54
se commento la riga e rieseguo l'upload apro s.monitor ottengo
2106/2/6 6:32:10
grazie

Ciao, tempo fa ho avuto un problema simile, dai un'occhiata a questo post Problemi con gestione DS1307 - #7 by Freddy65 - Italiano - Arduino Forum

Ciao.

slowa:
ciao,
grazie x il suggerimento.
ho fatto come da voi suggerito purtroppo il risultato non è quello atteso:
eseguendo l'upload con la riga non commentata e aprendo serial monitor vedo l'orario e la data corretta
2011/11/4 20:42:54
se commento la riga e rieseguo l'upload apro s.monitor ottengo
2106/2/6 6:32:10
grazie

Non é che hai inventato una macchina del tempo che ti ha portato nel 2106?? :wink: :wink: :wink: :wink:
Ciao Uwe

Stai usando ROBBA buona come librerie?
Io uso questo

con successo
In allegato c'e' anche il file per impostare l'ora corretta dal pc, e maggiore documentazione sul mio sito sideralis.org

Fede

fede come va a precisione ? io mi ritrovo sui 5 secondi al giorno di sballo

perche' non modifichi i files eagle in modo da seguire il tuo articolo ? quindi togliere la resistenza dell'out onda quadra, ed aggiungendoci il condensatore (io lo toglierei mettendone uno da 100nF per eventuali oscillazioni, mentre il compito di stabilizzare la tensione di alimentazione lo fai fare ad arduino stesso)

UhM mi prendi un attimo alla sprovvista, quel circuito l'ho disegnato qualche tempo fa e l'articolo l'ho scritto in seguito... E' sbagliato? A me funziona, ne ho un paio...

Ti diro' che onestamente non ho un test alla mano sulla precisione, ne uso uno in macchina e ha sempre l'ora corretta relativamente al mio cellulare e l'altro lo sto utilizzando in un progetto "nixie clock" che pero' continuo a ricompilare e spesso devo resettare anche l' RTC perche' faccio casini. Pero' posso verificare...

ottimo, un collega valvolare, guarda il mio avatar :slight_smile:

@slowa:
Bisogna capire se l'RTC perde l'alimentazione o cosa.
Che RTC usi? Un chip su una breadboard? Una scheda in kit assemblata da te? Una scheda commerciale?
Hai uno schema del circuito?

Testato:
ottimo, un collega valvolare, guarda il mio avatar :slight_smile:

OT: L'avevo notato :slight_smile:
In tema di orologi, guarda il mio video (lavoro da concludersi, ma mi sono un attimo fermato sul quadricottero...)

ps: cavolo. e' proprio figo :slight_smile:

leo72:
@slowa:
Bisogna capire se l'RTC perde l'alimentazione o cosa.

Questa è una buona osservazione. Il tuo rtc ha la batteria di backu?
F

no, non perde l'alimentazione, perche' il 1307 si resetterebbe a 00.00.00 e li' rimarrebbe.
Di certo la gestione del setup deve essere fatta bene, quindi stare attenti al discorso di decommentare e ricaricare lo sketch, si deve capire come sia andato all'anno 2100

p.s. il tuo clock e' tamarrissimo (nel senso sia negativo che positivo del termine :slight_smile:
bella l'idea dei secondi in binario.
Il mio e' orologio-datario-termometro, sto' aspettando un rtc piu' preciso perche' il 1307 perde troppi secondi, e ci devo aggiungere un tasto di selezione e l'antiavvelenamento

Testato:
no, non perde l'alimentazione, perche' il 1307 si resetterebbe a 00.00.00 e li' rimarrebbe.
Di certo la gestione del setup deve essere fatta bene, quindi stare attenti al discorso di decommentare e ricaricare lo sketch, si deve capire come sia andato all'anno 2100

Ci vuole intanto il circuito, perché se subisce sbalzi di tensione l'orario viene corrotto. Il DS1307 è un micro che aggiorna dei registri interni: se la tensione scende sotto ad una data soglia, viene compromessa l'affidabilità dell'orologio.
Inoltro non è chiaro se l'orologio riparte SEMPRE dal 2106 oppure quella è una data a caso.

ci devo aggiungere un tasto di selezione e l'antiavvelenamento

Eh?!? :astonished:

:slight_smile:
in una nixie i numeri sono i catodi, c'e' un fenomeno che si chiama avvelenamento del catodo paragonabile al discorso dello "stampo" dei monitor quando c'e' fissa sempre la stessa finestra.
quindi se pensi ad esempio alla prima cifra che usa solo 3 numeri (0,1,2)
lo 0 resta fisso per 10 0re
l' 1 per 10 ore
il 2 per 4 ore
tutti gli altri catodi non vengono mai usati

Ah,OK. E' come nei primi monitor a fosfori, dove lo screensaver aveva proprio la funzone di "salva"schermo, ossia di spengere del tutto il display o, comunque, di variare l'immagine per evitare che tenendo accesi sempre gli stessi pixel questi si "stampassero" appunto sul monitor.

leo72:
Ci vuole intanto il circuito, perché se subisce sbalzi di tensione l'orario viene corrotto. Il DS1307 è un micro che aggiorna dei registri interni: se la tensione scende sotto ad una data soglia, viene compromessa l'affidabilità dell'orologio.

Daccordissimo sullo sbalzo, mie prove empiriche lo confermano, mentre il calo di tensione se ricordo bene da datasheet dovrebbe essere ok fino ai 2v, no?

Testato:
:slight_smile:
in una nixie i numeri sono i catodi, c'e' un fenomeno che si chiama avvelenamento del catodo paragonabile al discorso dello "stampo" dei monitor quando c'e' fissa sempre la stessa finestra.
quindi se pensi ad esempio alla prima cifra che usa solo 3 numeri (0,1,2)
lo 0 resta fisso per 10 0re
l' 1 per 10 ore
il 2 per 4 ore
tutti gli altri catodi non vengono mai usati

NOVELLINO ]:smiley:
Il mio orologio funziona in POV
ps: il tamarro lo prendo come un complimento, perche' era uno degli obbiettivi del lavoro :slight_smile: Chiaramente il lampeggio degli rgb e' solo per il video, perche' poi cambia ogni ora e basta. Inoltre... quando ci rimetterò mano ho una lista di effetti RETRO' che vorrei programmare per dare alle valvoline un po' di vita...

novellino tu, e' normale che funziona in POV, come altro vorresti pilotarlo visti i pin dell'atmega ?

doppio novellino sul fatto che credi che il multiplex ti tolga il problema dell'avvelenamento, a limite lo riduce, ma sempre il concetto resta lo stesso.

:slight_smile:

come disse una volta Astro, "non fare a gara con me, non ti conviene" :stuck_out_tongue_closed_eyes: