Go Down

Topic: problema imprecisione RTC PCF8563 (Read 1 time) previous topic - next topic

?R

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:
Quote

/*
  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 ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

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.

?R


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 :smiley-sweat:
adesso provo e vediamo se si risolve il problema, grazie mille ;)

per quanto riguarda la temperatura dell'ambiente in cui è c'è da preoccuparsi più di tanto o no?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

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 :smiley-sweat:
adesso provo e vediamo se si risolve il problema, grazie mille ;)

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?  ;)

?R

ok grazie, molto bene :)
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...
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72


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  ;)

?R


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  ;)

beh complimenti :)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Brunello

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

leo72

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à.

?R

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?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

tonid

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 ;)

cyberhs

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

superzaffo

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 https://www.adafruit.com/products/255


leo72

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

barbezuan

#14
Feb 12, 2013, 10:00 am Last Edit: Feb 12, 2013, 10:03 am by barbezuan Reason: 1
Domanda da ignorante, ed utilizare un trimmer capacitivo non è possibile?

Barbezuan

PS: Il condensatore è consigliato anche sul DS1307?

Go Up