ebps.de.vu > Schaltungen > AVR > Funkuhr mit Datum

Funkuhr mit Datum

Beschreibung

Kurz vor Weihnachten bekam ich bei einem Tauschhandel eine Anzeigeplatine in die Finger, auf der sich 14 grüne Siebensegmentanzeigen sowie vier X-förmig angeordnete, längliche LEDs zwischen der sechsten und der siebten Anzeige befanden. Durch die ideale Einteilung der Anzeigen in einer Sechser- und eine Achtergruppe eignet sich die Platine also ideal für die Anzeige von Uhrzeit (mit Sekunden) und Datum (mit vierstelligem Jahr). Nachdem ich die Platine kurz ausgemessen hatte, stellte sich heraus, dass die Anzeigen ganz normal für Multiplexing verschaltet waren und gemeinsame Kathoden hatten. Die 4 LEDs stellten eine eigene Stelle dar, die nur die Segmente a bis d hatte. Da ich aber nichts Sinnvolles mit den LEDs anzuzeigen wusste, habe ich sie kurzerhand ausgelötet. Zusammen mit 3 weiteren LEDs, die als Segmente e, f und g verschaltet sind, zeigt die Uhr auf dieser "Anzeigestelle" den aktuellen Wochentag mit sieben einzelnen LEDs auf einer Zusatzplatine an.

Aufbau

Die 15 Anzeigen (14 Siebensegmentanzeigen plus Wochentag-LEDs) werden der Reihe nach eingeschaltet, indem eine Eins durch die beiden Schieberegister "wandert". Als Verstärker kommen hier zwei ULN2003 zum Einsatz, die jeweils sieben Darlington-NPN-Transistoren enthalten. Für den Wochentag habe ich einen zusätzlichen BC550C verwendet, man kann aber genausogut einen der beiden ULN2003 durch einen ULN2803 ersetzen, welcher einen Kanal mehr enthält. Für die Segmente kommen gewöhnliche PNP-Transistoren zum Einsatz, denn auch hier werden wesentlich höhere Ströme benötigt als der AVR liefern kann, damit die Anzeigen trotz Multiplexing über 15 Stellen noch eine brauchbare Helligkeit haben. Dazu kommt dann nur noch der obligatorische AVR und natürlich ein DCF77-Empfänger. Als Spannungsquelle wollte ich eigentlich ein 5 V-Schaltnetzteil von Pollin verwenden, mit dem allerdings kein DCF77-Empfang mehr möglich war. Es ist also anscheinend ein Netzteil mit gewöhnlichem Transformator (und Spannungsregler für die 5 V) erforderlich, damit die Uhr funktioniert. Der Kondensator und der Elko sind in dieser Schaltung sehr wichtig, ohne die beiden ging zuerst gar nichts. Sie sollten möglichst nah am AVR montiert werden, außerdem sollte der Strom für die Anzeigen und der Strom für den AVR und den DCF77-Empfänger möglichst nicht weit durch die selben Leiterbahnen laufen, um Störungen durch die hohen Ströme der Anzeigen zu vermeiden.

Da die Anzeigenplatine bereits Lötaugen für alle Anschlüsse hat, habe ich versucht, die Schaltung auf einer zweiten, genauso großen Lochrasterplatine aufzubauen, die später als "Doppeldecker" mit der Anzeigenplatine verschraubt wird und die Verbindung über eine Stiftleiste herstellt. Leider sind die Löcher für die Schrauben nicht ganz im 2,54 mm-Raster, aber mit etwas Kraft hat es schließlich doch noch alles zusammengepasst. Die Wochentag-LEDs sind auf eine angeklebten Zusatzplatine (Lochraster) gelötet, welche ich vor dem Einstecken der LEDs mit einem Streifen schwarzen Isolierbands überklebt habe, um sie farblich an die Anzeigenplatine anzupassen. Der DCF77-Empfänger muss allerdings weit entfernt von der Uhr entfernt montiert werden, damit er sich keine Störungen einfängt, die durch das Multiplexing leider immer entstehen.

Software

Die Software bietet am Anfang des Assemblerprogramms einige Einstellungen, mit denen sie für den jeweiligen Aufbau passend eingestellt werden kann. Die fertigen Hexfiles sind für den ursprünglichen Aufbau mit invertiertem DCF77-Signal und Anzeigen mit gemeinsamer Kathode sowie 7 LEDs als Wochentagsanzeige vorgesehen, wenn Sie die Schaltung nach einem der anderen Schaltpläne oder komplett anders aufbauen, müssen Sie die entsprechenden Einstellungen ändern und das Programm anschließend neu assemblieren. Folgende Einstellungen sind möglich:

Einstellung Standard-Wert Funktion
AT90S1200
(nur in 0.8.1)
0 (AT90S2313 oder ATTiny2313) Kann auf "1" gesetzt werden, um den AT90S1200 zu verwenden. Die Wochentags-Matrix-Anzeige kann mit diesem Controller nicht verwendet werden (da der lpm-Befehl nicht unterstützt wird) - ist sie trotzdem aktiviert, sollte der Assembler mit einem Fehler abbrechen.
DCFInvert
(bis 0.8.1)
DCF_INVERTED
(ab 0.9)
1 (invertiertes Signal) Invertiertes oder "normales" Signal vom DCF77-Empfänger. Ein invertieres Signal ist die meiste Zeit auf High und wird von Low-Impulsen unterbrochen (der Empfänger hat dann meistens einen Transistor auf der Platine), beim nicht-invertierten Signal ist das Signal meistens Low und wird durch High-Impulse unterbrochen (Empfänger ohne oder mit 2 Transistoren). Der Empfänger von Conrad (Bestell-Nr. 641138) hat Ausgänge für beide Möglichkeiten.
DCF_PULLUP
(ab 0.9)
1 (interner Pullup eingeschaltet) Schaltet den internen Pullup für den DCF77-Eingang ein. Manche Empfänger (Reichelt, Pollin) haben sehr schwache Push-Pull-Ausgänge, die nicht gegen den Pullup ankommen, andere mit Open-Collector-Ausgang (Conrad, ELV) benötigen ihn jedoch unbedingt.
ReverseDateFormat 0 (Datumsformat YYYY-MM-DD) Alternatives Datumsformat DD.MM.YYYY verwenden.
InvertCommon 0 (High-aktive Ausgänge) Ausgänge für gemeinsame Anschlüsse der Anzeigen invertieren. Wird für Anzeigen mit gemeinsamer Anode gebraucht. Funktionsfähig ab Version 0.7.
InvertSegments 0 (Low-aktive Ausgänge) Ausgänge für die Segmente invertieren. Notwendig für Anzeigen mit gemeinsamer Anode oder doppelten Treiber-Transistoren für Riesen-Anzeigen, die mehr als 5 V benötigen. Voll funktionsfähig ab Version 0.8.
UTCDefault
(ab 0.9)
0 (lokale Zeit wenn PD4 offen) Standardmäßig angezeigte Zeitzone, lokal wenn 0, UTC wenn 1. Die angezeigte Zeitzone kann umgeschaltet werden, indem PD4 auf Masse gelegt wird, das geht jedoch nur, wenn PD4 nicht durch andere Funktionen belegt ist.
WeekdayLEDs 1 (aktiviert) 7 LEDs zur Wochentagsanzeige aktivieren. Die LEDs werden, wie im Schaltplan eingezeichnet, als virtuelle 15. Anzeigestelle angeschlossen. Bis einschließlich Version 0.7 hieß diese Einstellung DisableWeekday, Standardwert war 0 (LEDs aktiviert).
SecondLEDs
(ab 0.9)
0 (nicht aktiv) Ausgänge für Schieberegister aktivieren, mit denen 60 LEDs (eine für jede Sekunde) angesteuert werden können. Ungetestet!
SecondLEDsMode
(ab 0.9)
1 (siehe unten) Anzeigemodus für die 60 Sekunden-LEDs.
WertModus
0Immer nur eine LED eingeschaltet
1LEDs werden nacheinander eingeschaltet und gehen zum Beginn einer neuen Minute alle aufmal wieder aus
2LEDs werden nacheinander ein- und in der nächsten Minute nacheinander wieder ausgeschaltet
InvertSecondLEDs
(ab 0.9)
0 (High-aktive Ausgänge) Invertiert die Ausgänge für die 60 Sekunden-LEDs.
WeekdayMatrix
(ab 0.8)
0 (nicht aktiv) Wochentagsanzeige im Klartext (2 Buchstaben) auf einer auf der Seite liegenden 5x7-Dot-Matrix-Anzeige. Wenn diese Funktion aktiv ist, wird der Ausgang für die Dezimalpunkte für die Matrix gebraucht. Um trotzdem die Dezimalpunkte der Anzeigen verwenden zu können, dürfen nur die Anschlüsse der leuchtenden Dezimalpunkte verbunden werden (alle anderen bleiben offen) und werden über den Vorwiderstand direkt an die Versorgungsspannung (Plus für Anzeigen mit gemeinsamer Kathode, Masse für Anzeigen mit gemeinsamer Anode) gelegt. Der obige Schaltplan zeigt eine Möglichkeit, wie die Dezimalpunkte von intern verschalteten Anzeigen verwendet werden können (einer pro Anzeige).
InvertMatrix 0 (Low-aktive Ausgänge) Ausgänge für die Wochentags-Matrix (siehe unten) invertieren. Benötigt in Verbindung mit Anzeigen mit gemeinsamer Anode, als Matrix kommt dann eine mit Spalten-Anoden zur Verwendung.

Wenn Sie die Uhr mit anderen Anzeigen aufbauen möchten oder nur Anzeigen mit gemeinsamer Anode zur Verfügung haben, können Sie die Ausgänge des AVR (für die Segmente) und die Ausgänge der Schieberegister (für die gemeinsamen Anschlüsse der Anzeigen) durch eine Einstellung am Anfang des Assemblerprogramms invertieren. Außerdem können Sie dort auch das Datumsformat umdrehen, falls Sie die Reihenfolge "DD.MM.YYYY" vorziehen.

Fotos

[Foto]
800 | 1280
Die Schaltung auf einem schmalen Stück Europlatine. Anstelle der ULN2003 habe ich PBD 352303 verwendet, die angeblich das Gleiche enthalten und in meiner Bastelkiste noch vorhanden waren.
[Foto]
800 | 1280
So sieht die Uhr aus, nachdem die Anzeigenplatine mit der Schaltungsplatine verschraubt wurde.
[Foto]
800 | 1280
Detailaufnahme der Stiftleiste und einer Verschraubung. Die Plastikleiste habe ich nach dem Einlöten von der Stiftleiste entfernt, damit sich diese noch weiter in die Buchsenleiste stecken lässt - leider war die Buchsenleiste aber auch nicht mehr viel tiefer, so dass ich zusätzlich zur 1 cm-Distanzhülse noch eine Mutter als Abstandshalter einbauen musste.
[Foto]
800 | 1280
Die fertige Uhr (noch ohne DCF77-Empfänger), angezeigt wird 12:35:35 Uhr und 23. Mai 2007.
[Foto]
800 | 856
So sieht die Uhr mit Wochentags-LEDs aus, zwischendurch ist auch der Schalter zum Abschalten der Anzeige dazugekommen. Das graue Kabel führt zum DCF77-Empfänger.
[Foto]
800 | 811
Die einzelnen Statusmeldungen vom Einschalten bis zur Anzeige der Zeit.
[Foto]
800 | 1280
Aufbau auf dem Steckbrett, um die Software mit Anzeigen mit gemeinsamer Anode zu testen. Außerdem ist hier die alternative Datumsschreibweise (dd.mm.yyyy) eingestellt.
[Foto]
800 | 1280
Ein Aufbau mit Dot-Matrix-Anzeige (LTP-305G) für den Wochentag. Das DCF77-Signal kommt aus einem Simulator, deshalb stimmen Zeit und Datum nicht ;-).
[Foto]
800 | 1280
Unterseite des Aufbaus mit Dot-Matrix-Anzeige.

Fotos von Besuchern dieser Website

Klaus

[Foto]
800 | 1600
Aufbau mit zwei verschiedenen Anzeigengrößen auf einer selber geätzten Platine.
[Foto]
800 | 1600
Fertig eingebaut in ein Alu-Profil als Gehäuse.
[Foto]
800 | 1600
Eine Uhr im Holzgehäuse. Auch hier kommen unterschiedlich große Anzeigen und selbst geätzte Platinen zum Einsatz.
[Foto]
800 | 1600
Die Schaltung der Holzgehäuse-Uhr.
[Foto]
727
Noch ein Aufbau, diesmal mit besonders großen Anzeigen und in ein fertiges Gehäuse eingebaut.
[Foto]
800 | 1600
Eine vierte Version mit sehr aufwändiger Wochentagsanzeige auf sieben fest verdrahteten 16-Segmentanzeigen
[Foto]
800 | 1600
Der Aufbau mit Wochentagsanzeige in einem Fertiggehäuse. Die 7-Segmentanzeigen sind 57 mm bzw. 25 mm hoch.
[Foto]
800 | 1279
Noch ein großer Aufbau mit LED-Leuchtflächen für die Wochentage

Ken

[Foto]
800 | 1280
Aufbau von Ken mit abgesetztem Display
[Foto]
800 | 1280
Kens Display von hinten. Anstelle fertiger Segmente wurden hier einzelne LEDs verwendet und die für ein Segment nötigen LEDs über Dioden zusammen mit dem jeweiligen Ausgang der Schaltung verbunden.
[Foto]
800 | 1280
Kens Display von vorne. Die Anzeigen für das Datum sind vertauscht, damit der Tag vorne steht.

Anonym

[Foto]
800 | 1600
Aufbau auf einer Lochrasterplatine mit zweizeiligem Display.

"Wolle"

[Foto]
800 | 1600 | 2048
Funkuhr mit alten DDR-Anzeigen in zwei Größen und 10 mm-LEDs für die Wochentage, aufgebaut auf einer selbstgeätzten Platine

Malte Spiegelberg

[Foto]
800 | 1280
Ein Aufbau mit Riesen-Anzeigen (mit passend erweiterter Schaltung). Die Datumsanzeige funktioniert noch nicht ganz korrekt.

Alberto Silveira

[Foto]
389
Aufbau mit abgesetztem DCF77-Empfänger (nicht abgebildet)
[Foto]
800 | 1280
Aufbau mit Wochentagsmatrix in Betrieb.

Uwe Bradler

[Foto]
800 | 1600 | 2897
Aufbau mit Riesenanzeigen für Stunden und Minuten in einem selbstgebauten Holzgehäuse.

Norbert Schild

[Foto]
800 | 1280
Erster Aufbau mit Siebensegmentanzeigen von 1974, die eigentlich mit Glühbirnchen betrieben wurden, hier aber mit gelben LEDs versehen wurden. Die roten LEDs unter der Anzeige zeigen den Wochentag an.
[Foto]
800 | 1280
Fertig in ein Gehäuse eingebaut. Links die Uhrzeit mit Sekunden, rechts das Datum (Tag und Monat).
[Foto]
800 | 1280
Zweiter Aufbau, diesmal mit roten LED-Siebensegmentanzeigen (20 mm für die Uhrzeit, 13 mm für das Datum) und LED-Blöcken für den Wochentag, die mit Abreibebuchstaben beschriftet sind.
[Foto]
800 | 1280
Von hinten wird die Schaltung mit einer blauen LED beleuchtet.
[Foto]
800 | 1280
Zwischen Schaltung und Anzeigeplatine ist ein farbenfrohes Kabelgewirr zu sehen.

Alfred Groß

[Foto]
800 | 1280
Die Schaltung ist auf 3 Platinen verteilt: Schaltung, Anzeige und Netzteil. Interessanterweise scheint hier der DCF-Empfang in unmittelbarer Nähe der Schaltung möglich zu sein.
[Foto]
800 | 1280
Fertig eingebaut in ein selbstgebautes Holzgehäuse.

Stephan Herkt

Stephan hat die Uhr um eine Klartext-Wochentagsanzeige auf 16-Segment-Anzeigen mit einem zusätzlichen ATMega8 erweitert. Freundlicherweise hat er den Schaltplan, den Quellcode für den ATMega8 und den geänderten Quellcode für die Uhr zur Verfügung gestellt. Die Schaltung verwendet die Segment-Ausgänge a, b und c, um den Wochentag einzulesen.

[Foto]
640
Die Schaltungsplatine mit der Uhr und der Zusatzschaltung für die Wochentagsanzeige von Stephans Aufbau auf zwei Streifenrasterplatinen.
[Foto]
640
Die Unterseite des zusammengeschraubten Platinenstapels.
[Foto]
640
Die Uhr von vorne. In der Mitte befinden sich die 16-Segment-Anzeigen für den Wochentag.
[Foto]
640
Die fertige Uhr in Betrieb.

Maik Vierling

[Foto]
800 | 1600 | 3072
Werkstattuhr mit Anzeigen des Typs "HP 5082-7650" und Wochentags-LEDs.

Reinhard Linnert

Reinhard hat eine ähnliche Uhr selbst entwickelt, sie verwendet einen ATMega16 und zeigt die Uhrzeit mit Sekunden, das Datum und den Wochentag im Klartext auf Dot-Matrix-Anzeigen aus alten D-Boxen an. Der Zeichensatz für die Anzeigen ist von ihm selbst erstellt. Mit mehreren LEDs werden außerdem diverse DCF77-Statusbits angezeigt.

[Foto]
800 | 1600
Das Innenleben der Uhr. Der DCF77-Empfänger ist auf dem Foto nicht zu sehen.
[Foto]
800 | 1600
Die fertige Uhr im Holzgehäuse von vorne.