Beschreibung
Nach Fertigstellung des
RTC-Moduls stand der Bau einer kompletten Echtzeituhr auf dem Programm. Die Uhr soll einigermaßen interessant aussehen, natürlich automatisch per DCF77-Signal synchronisiert werden und eine Tag/Nacht-Umschaltung haben, die nachts etwas Ruhe in die Anzeige bringt.
Die Uhr besitzt folgende Eigenschaften:
- vollautomatische Zeiteinstellung, kein manueller Eingriff vorgesehen
- Zeitanzeige (Stunden, Minuten, Sekunden) und zyklisch aller 15 Minuten Datumsanzeige (Tag, Monat Jahr)
- Tag/Nacht-Umschaltung (gedimmte Anzeige, keine Sekundenanzeige mehr, langsamere Datumsanzeige)
- modularer Aufbau unter Verwendung des RTC-Moduls
Das Ergebnis der Bemühungen ist hier zu sehen (Video):
Das RTC-Modul übernimmt hierbei (nebenbei) die komplette Steuerung der Uhr. Es dekodiert die DCF77-Signale des DCF77-Moduls und steuert über LED-Treiber des Typs
SAA1064 LED-Anzeigen.
Die Abbildung zeigt den Aufbau der Uhr. Der Aufbau ist mit separaten Platinen für das Uhr-Modul, die LED-Treiber, die LED-Sockel und den Schaltregler modular und bietet damit die Vorteile, einzelne Komponenten in anderen Projekten wiederverwenden zu können und zusätzliche Flexibilität beim Einbau in ein Gehäuse. Der dadurch insgesamt ein wenig steigende Platzbedarf und die etwas höheren Kosten spielen hingegen bei einem solchen Hobbyprojekt keine Rolle.
Schaltung
Das RTC-Modul und die Schaltung sind in den folgenden beiden Abbildungen dargestellt:
Die Beschaltung der LED-Treiber (SAA1064):
Für die LED-Anzeigen wurde eine eigene Platine erstellt:
Die Spannungsversorgung erfolgt mittels Schaltregler, der den Eingansspannungsbereich von 8...40 V (DC) auf 5 V stabilisiert:
Quellen
Verfügbar sind die Schaltplanquellen für
KiCAD:
1. RTC-Modul
2. LED-Treiber-Platine
3. LED-Sockel-Platine
4. Schaltregler-Platine
Im folgenden Archiv sind alle Quellen für die Software auf dem ATmega-Controller enthalten:
rtc_control_0.3_clock.tar.gz
Eine Doxygen-Dokumentation der Funktionen ist
hier zu finden.
Die Quellen sind als AVR-Projekt für die Entwicklungsumgebung
Code::Blocks organisiert. In den Projekteinstellungen ist derzeit als Zielplattform ein ATmega168 mit 20 MHz Taktfrequenz eingestellt. Bei abweichendem Takt sind die Definitionen
F_CPU in den Projekteinstellungen bzw. in
main.c und die Definition
RTC_OCR0A in der Datei
rtc_control.h entsprechend anzupassen.
Die Ansteuerung der sechs 7-Segment-Anzeigen mit Hilfe von drei SAA1064 ICs erfolgt über den gemeinsamen I2C-Bus. Diese Funktion kann der Nutzer in der Datei
rtc_control.h mittels der Definition
RTC_SAA1064_OUTPUT an- oder abschalten.
Die Funktion des Moduls kann über Debug-Ausgaben auf einem LCD am Port
P4 kontrolliert werden. Zur Zeit sind die Quellen an die Verwendung eines LCD mit 4 Zeilen und je 20 Zeichen angepasst.
Die Quellen können selbstverständlich auch (manuell) in eine andere Entwicklungsumgebung (zum Beispiel
AVR-Studio) eingebunden werden.
Für die Konfiguration des Systems wichtige Dateien sind:
- rtc_control.h - grundlegende Einstellungen (zum Beispiel die Einstellung von RTC_OCR0A und die Aktivierung der Debug-Ausgabe auf einem LCD mittels RTC_LCD_DEBUG)
- port_definitions.h - Konfiguration der Pinbelegung (insbesondere bei Nutzung der Debug-Ausgaben per LCD - siehe auch ⇑)
- lcd.h - Festlegung von Display-Parametern (z. B. Anzahl der Zeilen und Spalten per DISPLAY_NUMBER_ROWS und DISPLAY_NUMBER_COLUMNS, Timing usw.)
- i2c.h - Festlegung der 7-Bit-Slave-Adresse (aktuell 0xaa ⇒ 7-Bit-Adresse [7:1] + TWGCE-Bit [0] in TWAR-Register des ATmega-TWI-Moduls)
- dcf77.h - Festlegung von Parametern und Definitionen von Rückgabewerten für das DCF77-Modul
Fehlerquellen
Folgende potentielle Fehlerquellen sind beim Benutzen des RTC-Moduls zu beachten:
- Der Controller kommuniziert mit dem Echtzeit-IC per I2C mit einer Busfrequenz von 100 kHz. Der I2C-Bus ist kann daher durch einen solchen Zugriff (kurz) blockiert sein.
- Beim externen Zugriff auf das RTC-Modul durch mehrere externe Controller ist abzusichern, dass sich Zugriffsversuche im Hinblick auf die Registeradresse nicht gegenseitig stören.
- Die Ausrichtung der Ferritkern-Antenne beeinflusst die Empfangseigenschaften der DCF77-Module stark.
- Fehlende oder falsche Angaben zur Taktfrequenz des Controllers (F_CPU-Definition) führen zu einer falschen Berechnung der Delays - ebenso wie eine nicht eingeschaltete Optimierungsstufe beim Kompilieren.
Lizenz
Alle hier veröffentlichten Quellen stehen unter der
LGPLv3.
Alle hier veröffentlichten Schaltungen können natürlich nach Belieben nachgebaut oder verändert und veröffentlicht werden.
Zu beachten ist dabei allerdings, dass dies ein Hobby-Projekt ist und keinerlei Gewährleistung für Fehlerfreiheit oder gar eine Haftung für eventuelle Schäden übernommen werden kann.
Die Schaltungen sollen eine Anregung darstellen und sie nachbauen und in Betrieb nehmen sollte nur der, der weiß, was er tut..
Versionsinfo (Webseite)
- Version 0.1, 05.10.2014: erste Version
Anregungen oder weitere Informationen
Hier kann ein Kommentar hinterlassen werden: