problema imprecisione RTC PCF8563

per un progetto in cui mi servirebbe avere l'ora in modo abbastanza preciso, avevo pensato di usare un RTC PCF8563 nella versione DIP a 8 pin...
ora ho montato il circuito come in questa immagine (senza mettere le resistenze di pull-up sull'I2C) http://startingelectronics.com/beginners/start-electronics-now/tut16-arduino-clock/arduino-clock-battery-circuit-diagram.png
e caricando su un ATmega328 questo codice:

/*
The circuit:

  • LCD RS pin to digital pin 10
  • LCD R/W pin to ground
  • LCD Enable pin to digital pin 9
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 6
  • LCD D6 pin to digital pin 7
  • LCD D7 pin to digital pin 8
  • 10K resistor:
  • ends to +5V and ground
  • wiper to LCD VO pin (pin 3)
    */

#include <Wire.h>
#include <Rtc_Pcf8563.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(10, 9, 5, 6, 7, 8);
Rtc_Pcf8563 rtc;

void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.clear();

/* rtc.initClock();
//day, weekday, month, century(1=1900, 0=2000), year(0-99)
rtc.setDate(9, 6, 2, 0, 13);
//hr, min, sec
rtc.setTime(3, 31, 0);*/
}

void loop() {
lcd.clear();
lcd.setCursor(0, 0);
//lcd.print(rtc.formatTime(RTCC_TIME_HM));
lcd.print(rtc.formatTime());
lcd.setCursor(0, 1);
//lcd.print(rtc.formatDate(RTCC_DATE_ASIA));
lcd.print(rtc.formatDate());
delay(200);
}

provando con un cronometro e anche con altri riferimente mi risulta che guadagni un secondo ogni 3 ore circa, che secondo me è tantissimo...
siccome avevo un altro pcf8563 a casa l'ho cambiato e ho cambiato anche il quarzo, adesso devo aspettare qualche ora per vedere se il problema è risolto o meno, però vedo già che sta prendendo un vantaggio...
vi risulta che questo modello di RTC sia così impreciso? o ho sbagliato qualcosa?

ho anche un'altra domanda, nel caso ponessi l'RTC in abienti freddi, la frequenza di oscillazione del quarzo potrebbe subire qualche variazione preoccupante?
grazie in anticipo a tutti :wink:

Manca importantissimo un C da 12/22 pF fra OSCI e GND, che in quello schema non c'è. Sull'altro pin del quarzo (OSCO) non importa perché è integrato.
Le R di pull-up possono non servire usando la Wire se la distanza tra il micro e l'RTC è breve.

leo72:
Manca importantissimo un C da 12/22 pF fra OSCI e GND, che in quello schema non c'è. Sull'altro pin del quarzo (OSCO) non importa perché è integrato.
Le R di pull-up possono non servire usando la Wire se la distanza tra il micro e l'RTC è breve.

mi chiedevo appunto di quel condensatore che avevo visto su alcuni schemi in rete, ma non in tutti, e per questo pensavo non fosse importante :sweat_smile:
adesso provo e vediamo se si risolve il problema, grazie mille :wink:

per quanto riguarda la temperatura dell'ambiente in cui è c'è da preoccuparsi più di tanto o no?

?R:

leo72:
Manca importantissimo un C da 12/22 pF fra OSCI e GND, che in quello schema non c'è. Sull'altro pin del quarzo (OSCO) non importa perché è integrato.
Le R di pull-up possono non servire usando la Wire se la distanza tra il micro e l'RTC è breve.

mi chiedevo appunto di quel condensatore che avevo visto su alcuni schemi in rete, ma non in tutti, e per questo pensavo non fosse importante :sweat_smile:
adesso provo e vediamo se si risolve il problema, grazie mille :wink:

per quanto riguarda la temperatura dell'ambiente in cui è c'è da preoccuparsi più di tanto o no?

Ho preso un quarzo da 32 kHz a caso su RS: dal
PDF a -50°C vedo una differenza di -25 ppm rispetto alla frequenza nominale. Penso che puoi stare tranquillo, non trovi? :wink:

ok grazie, molto bene :slight_smile:
tra qualche ora vedo se era proprio quel quarzo a dare problemi...

P.S.
non mi spiego ancora perchè non abbia studiato il funzionamento dei quarzi, pur avendo fatto un ITIS all'indirizzo di elettronica...

?R:
non mi spiego ancora perchè non abbia studiato il funzionamento dei quarzi, pur avendo fatto un ITIS all'indirizzo di elettronica...

Io sono un programmatore (fallito)... e mi son dovuto studiare tutta 'sta roba partendo da ZERO e da totale autodidatta... pensa un pò.. mi sa che sto peggio io :wink:

leo72:
Io sono un programmatore (fallito)... e mi son dovuto studiare tutta 'sta roba partendo da ZERO e da totale autodidatta... pensa un pò.. mi sa che sto peggio io :wink:

beh complimenti :slight_smile:

comunque con PCF8563 due/tre secondi al giorno di errore sono gia' una meraviglia ( con DS1307 e' pure peggio )

nel datasheet dicono che +/- 5 minuti l'anno sono "raggiungibili".......... ( si, a regolarseli uno ad uno )

Ho da poco montato dei DS3231, vediamo come vanno

Sì, effettivamente 1 secondo ogni 3 ore come diceva lui non è un grossissimo scarto. Anzi.
Magari però col C guadagna qualcos'altro in precisione. Chissà.

con un condensatore da 22pF se prima guadagnavo circa un secondo in in 3 ore adesso quel secondo lo perdo invece... :~
dite che mi devo accontentare?
in che modo incide quel condensatore sulla frequenza di oscillazione del quarzo?

Questi integrati non sballano di loro il tempo ma è una conseguenza delle tolleranze dei componenti esterni.
Per ridurre gli errori dovuti a queste tolleranze si usano dei compensatori che sono dei condensatori variabili (tipo trimmer)posti in parallelo al condensatore di eccitazione che permette di aumentare il valore del condensatore cercando di portare la frequenza del quarzo al valore desiderato.....
Quindi se non si vogliono avere ritardi o anticipi bisogna regolare il compensatore controllando la frequenza di uscita dal chip ed il gioco è fatto :wink:

Ho letto che il DS3234 è notevolmente più preciso rispetto al DS1307

Ciao..
Io utilizzo un chip DS3231 e avendo il quarzo internamente, non sbaglia un colpo.
Purtroppo con i quarzi esterni sei soggetto a disturbi esterni e anche alla temperatura ambientale. Infatti i quarzi cambiano, anche se di poco, a seconda della temperatura.
Questo chip si regola in automatico.
Purtroppo non è informato DIP, al massimo puoi usare questo ChronoDot - Ultra-precise Real Time Clock [v3] : ID 255 : $17.50 : Adafruit Industries, Unique & fun DIY electronics and kits

La domanda è: vale la pena spendere 17$ per avere un chip con una buona precisione o ti puoi accontentare di 8 secondi al giorno di differenza (-1 secondo ogni 3 ore sono -8 secondi al giorno)? $)

Una possibile soluzione software è fare come ho fatto io con la swRTC, aggiungendo cioè una correzione al tempo in base ad un valore calcolato empiricamente. Osservi l'orologio per un certo lasso di tempo e calcoli il suo scostamento medio dall'orario reale, a quel punto ogni giorno (oppure ogni 12 ore) riregoli l'orologio aggiungendo togliendo quella differenza.
Nel tuo caso, ogni 12 ore dovresti sommare 4 secondi per recuperare i 4 secondi persi dal PCF

Domanda da ignorante, ed utilizare un trimmer capacitivo non è possibile?

Barbezuan

PS: Il condensatore è consigliato anche sul DS1307?

Con gli RTC che richiedono un quarzo esterno la precisione dipende unicamente da questo, sarebbe sempre buona norma utilizzare un compensatore capacitivo da 15-33 pf (dipende dal quarzo, leggere il data sheet) per poter aggiustare la frequenza al valore nominale.

con un condensatore da 22pF se prima guadagnavo circa un secondo in in 3 ore adesso quel secondo lo perdo invece...
dite che mi devo accontentare?

Se senza C guadagnavi un secondo,con il C da 22pF lo perdi.....metti un valore di 10pF e dovresti essere più apposto...

tonid:
Se senza C guadagnavi un secondo,con il C da 22pF lo perdi.....metti un valore di 10pF e dovresti essere più apposto...

appunto stavo pensando anch'io che regolando il valore del condensatore si poteva sistemare un po'..
se no faccio, come dice Leo, una soluzione software :wink:

?R:
appunto stavo pensando anch'io che regolando il valore del condensatore si poteva sistemare un po'..

Se ancora non l'hai capito ci devi mettere un compensatore capacitivo, regolandolo calibri la precisione, è anche citato chiaramente sul data sheet nel capitolo 13:

Ctrim trimmer capacitance external on pin OSCI  5 - 25 pF

astrobeed:

?R:
appunto stavo pensando anch'io che regolando il valore del condensatore si poteva sistemare un po'..

Se ancora non l'hai capito ci devi mettere un compensatore capacitivo, regolandolo calibri la precisione, è anche citato chiaramente sul data sheet nel capitolo 13:

Ctrim trimmer capacitance external on pin OSCI  5 - 25 pF

si si l'ho capito, ma al momento non ho quel componente in casa, intanto faccio qualche prova con qualche condensatore più piccolo se lo trovo...
grazie per l'aiuto :wink: