RTC-Timer Chip PCF8563

RTC-Timer Chip PCF8563

In dem Projekt der Uhr mit 12bit RGB-LED-Ring wurde ein fertiges RTC-Modul (DS1307) für den Arduino verwendet. Manche Anwendungen sind jedoch auf niedrigen Stromverbrauch getrimmt und benötigen daher bessere Lösungen. Hierbei ist der kleine PCF8563-Chip nützlich. In den folgenden Versuchen wird ohne jegliche Backup-Stromversorgung gearbeitet, d.h. sobald der Strom abgestellt ist, dann hört der PCF8563 auf zu zählen. Im späteren Betrieb empfiehlt sich jedoch eine Notstromversorgung des Moduls, damit dieses auch beim Stromausfall weiterzählen kann, z.B. in Form einer CD2032-Batterie.

Technische Daten laut Hersteller

Vergleich zu anderen RTC-Chips

Modul IStandby Iaktiv Speicher (Bytes) VCC Laufzeit1 Genauigkeit2
DS1307 200 µA 1500 µA 56 4,5-5,5 V 24d 14
DS3231 685 µA 200 µA 0 2,3-5,5 V 7d 2
PCF8583 10-50 µA 200 µA 240 1-6 V 166d 20
PCF8563 0,5 µA 200 µA 0 1-5,5 V 10000d 20

1 in Tagen; gemessen an einer 120mAh-Batterie
2 in ppm (parts per million), z.B. 14ppm entspricht einer Abweichung von mehr als 7 Minuten pro Jahr

Verwendete Bauteile

Anschlüsse

Anschlüsse des PCF8563 (Pinout)
Nr. Pin Beschreibung
1 OSCI Eingang für Taktgeber (Oscillator = Quarz)
2 OSCO Ausgang für Taktgeber (Oscillator = Quarz)
3 INT Interrupt-Ausgang (active LOW)
4 VSS (GND) Masse / 0V
5 SDA Signal für serial data
6 SCL Signal für serial clock
7 CLKOUT Ausgang des Taktes
8 VDD (VCC) Spannungsversorgung

Messung des Taktes

Zunächst kann man einen generellen Test des Moduls durchführen, indem man beispielsweise dessen Takt misst. Dafür baut man eine Schaltung nach dem folgenden Plan auf und misst entweder mit dem Multimeter (Frequenz/Hz) oder einem Oszilloskop die Frequenz, die am Pin 7 (CLKOUT) anliegt. Es sollten im Idealfall 32,768KHz messbar sein.

Schaltplan

Schaltplan zum Messen des Taktes des PCF8563P
Messung des Taktes des PCF8563
Abb.: Ergebnis der Messung des Taktgebers des PCF8563 mit dem DSO138 Oszilloskop

Schreiben eines Registers

In diesem Versuch wird das Register CLKOUT_CONTROL an der Adresse 0x0D überschrieben, so dass ein Takt von 1Hz anliegt. Um dies zu visualisieren, wird eine LED (inkl. Vorwiderstand) an den Pin 7 (CLKOUT) angeschlossen. Die folgenden Binärwerte ändern den Takt entsprechend am CLKOUT:

Wert Frequenz
B10000000 32,768 kHz (default)
B10000001 1024 Hz
B10000010 32 Hz
B10000011 1 Hz

Schaltplan

Schaltplan Schreiben eines Registers des PCF8563P

Sketch für Arduino

#include <Wire.h>

#define RTCAddWrite (0xA2 >> 1)
#define RTCAddRead  0xA3

void setup()
{
      Wire.setClock(400000); // set the I²C SCL to 400kHz
      Wire.begin();
      delay(1000);

      Wire.beginTransmission(RTCAddWrite);
      Wire.write(0x0D);      // point to the CLKOUT_CONTROL register
      Wire.write(B10000011); // set CLKOUT_CONTROL to 1Hz
      Wire.endTransmission();
}

void loop() {}

Setzen und Auslesen von Datum/Uhrzeit

Um das Datum und die Uhrzeit im PCF8563 zu setzen bzw. wieder auszulesen, werden verschiedene Register abgefragt, die im Datenblatt des Chips nachgelesen werden können. Hier wird allerdings zum besseren Verständnis die Library PCF8563-Arduino verwendet.

Schaltplan

siehe: Schreiben eines Registers

Sketch

#include <PCF8563.h>

PCF8563 pcf;

void setup()
{
    Serial.begin(9600);
    pcf.init();
    pcf.stopClock();

    // set datetime to 2020-09-22 21:09:50
    pcf.setYear(20);
    pcf.setMonth(9);
    pcf.setDay(22);
    pcf.setHour(21);
    pcf.setMinut(9);
    pcf.setSecond(50);

    pcf.startClock();
}

void loop()
{
    Time nowTime = pcf.getTime();

    Serial.print(nowTime.year);
    Serial.print("-");
    prnNum(nowTime.month);
    Serial.print("-");
    prnNum(nowTime.day);

    Serial.print(" ");
    prnNum(nowTime.hour);
    Serial.print(":");
    prnNum(nowTime.minute);
    Serial.print(":");
    prnNum(nowTime.second);
    Serial.println("");

    delay(1000);
}

void prnNum(int num)
{
    if (num < 10) {
        Serial.print("0");
    }
    Serial.print(num);
}
Ausgabe von Datum und Uhrzeit auf der seriellen Konsole
Abb.: Ausgabe von Datum und Uhrzeit auf der seriellen Konsole

Links und weitere Möglichkeiten

zurück