Der Schaltplan

Dem folgenden Schaltplan ist natürlich vorläufig und eher als Skizze zu verstehen. Die genaue Belegung der Pins ist auch nicht sonderlich interessant, da die Ports des Micro-Controllers (MC) frei programmierbar sind. Etwas Schaltungsaufwand verursacht lediglich der Wecker.

Die Komponenten

Micro-Controller
Als MC verwende ich einen Atmel 89C2051. AT89C2051 Er ist klein (DIL20), preiswert (weniger als 4 €), verfügt über 2 kByte Flash-Eprom und 128 Bytes RAM.
Er hat 15 frei programmierbare I/O-Ports, einen Analog-Komparator, zwei externe Interupts, zwei Timer, und einen seriellen UART.
Der Assembler geht einem in wenigen Tagen in Fleisch und Blut über.
Spannungsversorgung (VCC, GND)
Die Spannungsversorgung VCC von 5 V= übernimmt ein primärgetaktetes Stecker-Netzteil von egston. Das ist zwar teurer als ein normales Netzteil, aber kleiner, effizienter und leiser.
Reset (RST)
Nach dem Einschalten der Spannungsversorgung wird ein kurzes Reset-Signal erzeugt, um den MC in einen definierten Anfangszustand zu bringen.
DCF-Modul (INT0, INT1)
An den externen Interupts INT0, INT1 schliesse ich ein DCF-Empfänger-Modul, um immer die exakte Uhrzeit zu haben. Das DCF-Signal wird in Mainflingen bei Frankfurt ausgestrahlt und wird in einem Umkreis von ca 1000km um den Sender empfangen. Die Übertragungsrate ist 1 Bit pro Sekunde.
Quarz und Takterzeugung (XTAL4, XTAL5)
Den Takt für den MC erzeuge ich mit einem 18 MHz Quarz. Die Frequenz sollte möglichst hoch (max. 24 MHz) und durch 12 teilbar sein. Ich habe einen 18 MHz Quarz gewählt, denn das ist der billigste, die Frequenz genügt vollauf, und die Verlustleistung ist geringer als mit 24 MHz.
Die Forderung nach einer durch 12 teilbaren Frequenz rührt daher, daß bei Ausfall oder Nichtanschluss des DCF-Moduls der Quarz als Zeitbasis herangezogen wird und ein Maschinenzyklus des MC 12 Takte dauert.
Wecker & Eieruhr (Ports 3.4, 3.7, AIN1 [, AIN0])
Als Wecker/Eieruhr verwende ich ein Klangspiel, daß ich mir vor einigen Jahren gebaut habe. Es hat einen wunderschönen Klang.
...wenn man morgens schon geweckt wird, dann bitte mit Gefühl!
Die Komponenten zur Ansteuerung des Klangspiels nehmen am meisten Platz weg und belegen den ganzen unteren Teil des Schaltplanes.
Eine ausführliche Funktionsbeschreibung findest du unter "Wecker".
Die dort verwendeten Bezeichnungen der Signale sind wie folgt zugeordnet:
MC_3kHz Port 3.7
MC_Charged Port AIN1
MC_Alarm Port 3.4
Eingabe (Ports 1.2-1.5)
Die Eingabe erfolgt über vier kleine, unauffällig angebrachte Drucktaster: Weckzeit stellen, Wecker aktivieren/deaktivieren, Eieruhr stellen, Status abfragen (hat das DCF-Modul Empfang oder läuft die Uhr auf Quarz?), Uhrzeit einstellen (falls kein DCF-Modul angeschlossen ist), etc.
Die Möglichkeiten der Taster werden erweitert durch das Unterscheiden von langen oder kurzen Tastendrucken. Entprellt müssen die Taster nicht werden, das macht alles die Software des MCs.
Rückmeldung beim Bedienen (Port 3.5)
Die Bedienung der Uhr ist intern über eine Menue-Struktur realisiert. Um beim Bedienen nicht die Orientierung zu verlieren, wo ich mich gerade im Menue befinde, gibt mir die Uhr über einen Mini-Lautsprecher Rückmeldung in Form von Morse-Zeichen. Hab ich beim Bund gelernt und kann's immer noch ganz gut *grins*.
Alternative zur akustischen Morse-Rückmeldung wären popelige 7-Segment-Anzeigen gewesen. Die sind teurer, komplizierter anzusteuern, größer, können weniger darstellen, und sind wie gesagt - popelig.
Anzeige (Ports 3.0, 1.6, 1.7)
Der Anschluß für die Anzeige hat 5 Pins (unten mehr dazu):
VCC und GND
Die Spannungsversorgung für die gesamte Anzeige (ICs und LEDs).
SER
Port 3.0. Serielle Daten-Bits für die Anzeige. (40 Stück, 39 werden benötigt.)
SCK
Port 1.7. Serieller Takt: Mit jedem Takt-Puls an SCK wird ein weiteres Bit von SER in die Anzeige-Einheit geschoben.
RCK
Port 1.6. Latch-Takt: Sind alle 40 Bits im Anzeige-Modul gelandet, überträgt ein Strobe an RCK die Daten ins Ausgabe-Latch. (Damit die Anzeige während des Schiebens nicht kurz aufleuchtet.)
Anschlüsse
Die Haupt- und die zwei Anzeigeplatinen sind recht klein und schmal (3cm breit), damit sie in die lange, schmale Uhr hinein passen. Deshalb sind einige Bauteile nicht auf diesen Platinen angeordnet, sondern es sind nur Steckverbinder für sie vorgesehen, um sie im Gehäuse unterbringen zu können.
JP_SUPPLYAnschluss der Spannungversorgung.
JP_DCFAnschluss für das DCF-Modul.
JP_TASTAnschluss für die 4 Drucktaster.
JP_LEDAnschluss für die Anzeige.
JP_SPEAKAnschluss für den Miniatur-Lautstpecher (8Ω, 20mm × 39mm)
JP_C
JP_DROSSEL
JP_ANKER
Die grossen Bauteile für den Wecker.

Reset Reset Quarz & Takt Lautsprecher Lautsprecher Anschluss Taster Anschluss Anzeige Anschluss Stromversorgung Alarm: Reed-Relais Alarm: Sockel für Transistor Alarm Alarm MicroController Anschluss DCF-Modul


  13:08:44

Die Anzeige

Was noch fehlt ist natürlich die Anzeige. Sie wird gebildet durch 39 kleine, gelbe Low-Current LEDs (3 mm, 2 mA).
Die benötigten Vorwiderstände von 1.1 kΩ habe ich direkt in die Gehäuse der LEDs eingelötet, um den Schaltplan zu entlasten.

Das vom MC erzeugte Zeitsignal konvertiere ich in ein serielles Format. Der MC schiebt jede Sekunde einmal das komplette Zeitsignal in die Anzeige.

Auf dem Schaltplan für die Anzeige erkennt man drei 74595 (IC1 - IC3). Der 74595 ist ein serielles Schieberegister mit 8 Bit paralleler Ausgabe und Ausgabe-Latch. Mit jedem 74595 können also 8 Bits dargestellt bzw. LEDs angesteuert werden (QA-QH).

Bei jedem Puls am seriellen Takt SCK werden die Bits um eine Position weiter geschoben und das Bit am seriellen Eingang SER in das Schieberegister aufgenommen. Das Bit erscheint nach 8 Takten wieder unverändert am Ausgang QH* und gelangt so zum Eingang SER des nächsten IC.

Sind alle Bits an ihrer Position angelangt, dann überträgt ein Puls an RCK die Daten von den Schieberegistern in die Ausgabe-Latches. Erst hierdurch gelangen die Bits an die Ausgänge QA-QH und die Anzeige zeigt die neue Zeit an. Das vermeidet ein kurzes Aufflackern während dem Durchschieben der Bits. Das Aufflackern (zB bei Verwendung eines 74164) dauert zwar nur wenige Millisekunden, es wird vom menschlichen Auge aber durchaus wahrgenommen.

Schaltplan Seite 2/2

Um alle 39 LEDs ansteuern zu können, werden 2 der obigen Module hintereinander gehängt. JP_IN des zweiten Anzeige-Moduls wird also mit JP_OUT des Ersten verbunden und fertig. Im zweiten Modul kann der Sockel von IC3 leer bleiben.