[Risolto] - arduino 2009 e pcf8563

Salve a tutto il team degli appassionati d’arduino.
volevo provare ad inserire un RTC al mio arduino 2009.
googlando sono arrivato a trovare questo schema e l’ho riprodotto come da immagine utilizzando questi quarzi.
ho provato ad utilizzare questa libreria ed un file pde al suo interno come esempio “set clock” riportando il codice sottostante.

il problema è che sembra bloccarsi quando è collegato come da immagine.

dove sbaglio?
è indispensabile che aggiunga anche il 5v con led e resistenza da 470 ohm?

/* Demonstration of Rtc_Pcf8563 Set Time. 
 * Set the clock to a time then loop over reading time and 
 * output the time and date to the serial console.
 *
 * I used a RBBB with Arduino IDE, the pins are mapped a 
 * bit differently. Change for your hw
 * SCK - A5, SDA - A4, INT - D3/INT1
 *
 * After loading and starting the sketch, use the serial monitor
 * to see the clock output.
 * 
 * setup:  see Pcf8563 data sheet.
 *         1x 10Kohm pullup on Pin3 INT
 *         No pullups on Pin5 or Pin6 (I2C internals used)
 *         1x 0.1pf on power
 *         1x 32khz chrystal
 *
 * Joe Robertson, jmr
 * orbitalair@bellsouth.net
 */ 
#include <Wire.h>
#include <Rtc_Pcf8563.h>

//init the real time clock
Rtc_Pcf8563 rtc;

void setup()
{
  //clear out the registers
  rtc.initClock();
  //set a time to start with.
  //day, weekday, month, century(1=1900, 0=2000), year(0-99)
  rtc.setDate(14, 6, 3, 1, 10);
  //hr, min, sec
  rtc.setTime(1, 15, 0);
}

void loop()
{
  //both format functions call the internal getTime() so that the 
  //formatted strings are at the current time/date.
  Serial.print(rtc.formatTime());
  Serial.print("\r\n");
  Serial.print(rtc.formatDate());
  Serial.print("\r\n");
  delay(1000);
  Serial.println(".");
}

Grazie e buone feste

arduino ds1307.jpg

Quello schema è sbagliato in diversi punti:

  1. il PCF8563 vuole un condensatore ceramico da 12 pF tra il quarzo e massa sul pin 1
  2. le resistenze di pull-up per il bus I2C sono un po’ basse, mettile da 1K5 o 2K2, non di più non di meno.
  3. metti un condensatore ceramico/poliestere da 0.1uF tra il pin Vcc e massa

Il led non è necessario, serve solo come riferimento ottico se attivi il generatore di clock

Questo è un ottimo schema funzionante:

adesso il difficile sta nel trovare le resistenze ed i condensatori che mi hai indicato!!! :( nel mio "starter-kit" non ho condensatori e di resistenze ne ho pochissime da 220 e da 10k. devo ordinare via internet qualche kit che contenga un pò di tutto, perchè una mia grande difficoltà è proprio "l'esecuzione del progetto" per mezzo dei tempi d'attesa tra un'ordine e l'altro :( comunque penso di aver capito le varianti che mi chiedi, cercherò di farlo non appena ho in mano l'attrezzatura giusta.

intanto ringrazio tutti i lettori, ed in particolare Leo che come sempre chiude un'occhio sulla mia beata ignoranza e vi auguro un bellissimo fine anno. Marbi

fermo restando che tutto quello che ha detto leo e' corretto, c'e' da aggiungere che non e' pregiudiziale sul funzionamento. Quindi il problema del mancato funzionamento e' da un'altra parte. Quindi puoi anche provare ad andare avanti nella diagnosi, ed in secondo momento pensi alle giuste accortenze dettatoti.

grazie testato della risposta, e sono sicuro che seguendo il consiglio di Leo tutto funzioni alla perfezione. ma fammi capire: il condensatore ceramico vicino al quarzo posso ometterlo? perchè non ne posseggo e dovrebbero arrivarmene 5 da 22 pf (che non so se andrebbero bene). le resistenze, idem, ho soltanto da 10k e 220 ohm. dici che lasciandole da 10k ed omettendo gli altri particolari di Leo la cosa funzioni?

grazie!!!

mi sembra di aver scritto n italiano, magari con inutili sofismi, ma sembra chiaro il mio pensiero :)

Testato, penso di aver capito il tuo pensiero, quindi alla prima occasione collegherò l'arduino come lo schema indicato da Leo, e successivamente "perfezionerò" l'oggetto. intanto vi ringrazio dell'attenzione che mi date e vi auguro sempre buone feste.

ho realizzato questo schema, ma questo è il risultato dell'output

01:15:00
03/14/2012
.
01:15:00
03/14/2012
.
01:15:00
03/14/2012

praticamente il risultato non cambia. chi può aiutarmi?

Sketch, per favore (mettilo nei tag CODE).

non mi fa linkare lo schema, tuttavia:
Codice:

/*
 * Set the clock to a time then loop over reading time and 
 * output the time and date to the serial console.
 *
 * I used a RBBB with Arduino IDE, the pins are mapped a 
 * bit differently. Change for your hw
 * SCK - A5, SDA - A4, INT - D3/INT1
 *
 * After loading and starting the sketch, use the serial monitor
 * to see the clock output.
 * 
 * setup:  see Pcf8563 data sheet.
 *         1x 10Kohm pullup on Pin3 INT
 *         No pullups on Pin5 or Pin6 (I2C internals used)
 *         1x 0.1pf on power
 *         1x 32khz chrystal
 *
 * Joe Robertson, jmr
 * orbitalair@bellsouth.net
 */ 
#include <Wire.h>
#include <Rtc_Pcf8563.h>

//init the real time clock
Rtc_Pcf8563 rtc;

void setup()
{
  //clear out the registers
  rtc.initClock();
  //set a time to start with.
  //day, weekday, month, century(1=1900, 0=2000), year(0-99)
  rtc.setDate(14, 6, 3, 0, 12);
  //hr, min, sec
  rtc.setTime(1, 15, 0);
  Serial.begin(9600);
}

void loop()
{
  //both format functions call the internal getTime() so that the 
  //formatted strings are at the current time/date.
  Serial.print(rtc.formatTime());
  Serial.print("\r\n");
  Serial.print(rtc.formatDate());
  Serial.print("\r\n");
  delay(1000);
  Serial.println(".");
}

pin 1 quarzo pin 2
pin 1 massa arduino
pin 4 massa arduino
pin 5 analog in 4
pin 5 resistenza 1K8 massa
pin 6 analog in 5
pin 6 resistenza 1K8 massa
pin 8 5V arduino

dove sbaglio?

Secondo me hai sbagliato a collegare il quarzo. Il quarzo va messo fra i pin 1 e 2 del PCF8563. Poi va messo il C da 22 pF tra pin 1 e massa.

LoL non appena ho scollegato la massa dal pin 1 del pcf8563 ed ho inserito il condensatore da 22pf è partito immediatamente. mi complimento con tutti Voi per l'ottimo sostegno che ci date [sviolinat] :D

Le 2 resistenze di pullup del bus I2C vanno al piú , non a massa. Il condensatore da 22pF serve per il carico coretto del ocillatore del RTC. Se manc apuó essere che l' oscillatore non funzioni in modo affidabile oppure l' errore di frequenza é piú grande di quello specificato per il quarzo/RTC. Ciao Uwe

uwefed: Le 2 resistenze di pullup del bus I2C vanno al piú , non a massa.

Vero, non ci avevo fatto caso.

si, ma dicendo che lo schema era analogo l'ho collegato al V+ come intuito da Leo ;)

[azzardo]

intuendo anche il discorso di Uwe, collegando direttamente il quarzo alla massa non mi ha funzionato affatto, quindi da quello che dici inserendo il condensatore da 22pf anzichè da 12pf sto alterando la frequenza? "a lungo andare" dovrei trovarmi con l'ora sfalsata?

Ogni quarzo ha dei condensatori "propri", normalmente i 15/22 pF vanno bene per i 32768 Hz. Controlla comunque sul datasheet il valore accettato dai quarzi in tuo possesso.

spetta un attimo, chiariamo meglio.

l'rtc in questione ha i condensatori di carico del quarzo integrati, quindi: - il quarzo va scelto in base alla capacita' integrata del chip - il quarzo non serve connetterlo a condensatori esterni - il quarzo non va connesso a massa (altrimenti non oscilla) - se non si e' contenti della precisione ricevuta da tutte le variabili in gioco si puo' connettere un condensatore, fisso o variabile, tra il quarzo e massa, in modo da compensare la deriva.

Testato: l'rtc in questione ha i condensatori di carico del quarzo integrati, quindi: - il quarzo va scelto in base alla capacita' integrata del chip - il quarzo non serve connetterlo a condensatori esterni - il quarzo non va connesso a massa (altrimenti non oscilla) - se non si e' contenti della precisione ricevuta da tutte le variabili in gioco si puo' connettere un condensatore, fisso o variabile, tra il quarzo e massa, in modo da compensare la deriva.

Esatto, il valore tipico dei condensatori per un quarzo da 32768 è 12.5 pf, quasi tutti gli RTC integrano direttamente queste capacità pertanto non è necessario montarle esternamente, è di vitale importanza che le piste tra l'IC e il quarzo siano le più corte possibili, adagiate sullo stesso piano e non devono passare per dei vias.

a Pag. 28 di questo datasheet c’è scritto:

12. Static characteristics
Table 29. Static characteristics
VDD = 1.8 V to 5.5 V; VSS = 0 V; Tamb = ?40 ?C to +85 ?C; fosc = 32.768 kHz; quartz Rs = 40 k?; CL = 8 pF; unless otherwise
specified.

vuol dire che devo usarlo da 8pF? :open_mouth:
ho sbagliato datasheet? :open_mouth:
gioco con i famosi cavalli? :smiley:

Testato ed astrobeed:
scusami un secondo, mi stai dicendo che il quarzo non devo connetterlo a massa tramite il condensatore da 22pf? e neanche senza condensatore?

HELP ME!!!

mi sento molto confuso :frowning:

pcf8563.png

Testato: spetta un attimo, chiariamo meglio.

l'rtc in questione ha i condensatori di carico del quarzo integrati, quindi

No, ha solo quello sul pin OSCO, sul pin OSCI deve essere messo esterno.