 |
In diesem Beitrag wird eine Quarzdigitaluhr
beschrieben, deren Komfort über dem bisher bekannter Lösungen liegen
dürfte. Realisiert wird er durch ein 16 Seiten umfassendes
Softwarepaket. Die Hardware ist durch Einsatz eines
Einchip-Mikrorechners relativ gering (Arbeitsstand ist September 1989!). |
Schaltplan |
Bestückungsplan |

Bild 1 - Prinzipschaltung des Quazweckers -
Logikschaltung |

Bild 2 und 3 - Leiterplatten -
Löt- und Bestückungsseite für Grundplatine sowie
Anzeige |
Prinzipaufbau
Als Mikrorechner wurde der UB 8820 M eingesetzt. Auf Grund seines nach
außen gelegten internen ROMs ist er ohne zusätzlichen Adresslatch mit dem
elektrisch programmierbaren Speicherschaltkreis U 2716 C adressierbar.
Dadurch verringert sich der Hardwareaufwand, und Port 0 und 1 sind noch frei
für Anwenderzwecke. Das ist notwendig, da allein für die Anzeige 16
Portanschlüsse benötigt werden. Auf einen Segmentdekoder wurde verzichtet,
um Sonderzeichen wie °C darzustellen.
Um den Stromverbrauch und die Verdrahtung möglichst gering zu halten, wurde
für die Anzeige Multiplexbetrieb gewählt. Für die Ausgabe einer kompletten
Information werden 5 ms benötigt, was eine flimmerfreie Anzeige
gewährleistet. Als optischer Vorteil erwies sich auch die elektronische
Heiligkeitsregelung, die nachts blendfrei und tagsüber, auch bei
Sonneneinstrahlung, gut erkennbar ist.
Zum Display gehören drei Leuchtdioden, die der optischen Überwachung dienen.
Die gelbe (VOA 34) und die rote LED (VQA 14) werden zur Weckeraktivierung
und zur Weckwiederholung verwendet. Die grüne LED (VOA 24) leuchtet, wenn
das Relais gezogen hat. Zur Dialogführung werden 5 Portanschlüsse des
Einchip-Mikrorechners benötigt. Zur Eingabe und Bedienung dient dazu eine
zwölfteilige Matrixtastatur, die in 4 Zeilen und 3 Spalten organisiert ist,
s. Bild 1. Eine Zusatztaste (S), die gesondert an der Vorderfront des
Gerätes angebracht ist, dient zur schnellen Bedienung beim Aktivieren der
Weckwiederholung oder beim Abschalten des Wecksignals.
Um die Temperatur digital mit dem A-D-Umsetzer lesen zu können, werden 7 Bit
vom Port 0 verwendet. Die Temperatur wird mit dem Sensor B 511 N erfasst.
Dabei wurde absichtlich auf einen Operationsverstärkervorsetz verzichtet, um
die Bereitstellung einer negativen Spannung, die Hardware und den
notwendigen Platzbedarf einzusparen. Das wirkt sich zwar negativ auf den
Meßbereich aus, soll aber in diesem Fall als Alternative gesehen werden, da
die Zimmertemperatur meist um eine geringe Hysterese schwankt.
Hardwarekonzeption
Die gesamte Digitaluhr wurde in einem Gehäuse mit den Abmessungen 45mm
(H) x 140 mm (B) x 130 mm (T) untergebracht. Die Hardware setzt sich aus der
Anzeigeleiterplatte (s. Bild 2) und der EMR-Karte (s. Bild 3) zusammen. Das
Layout beider Leiterplatten ist zweiseitig entworfen worden. Die Bestükkung
der Platten zeigt Bild 4.
Als Matrixtastatur fand ein ausgedienter Taschenrechner Verwendung. Dieser
wurde oberhalb des Gerätes montiert. An der Vorderfront befinden sich die
digitale Anzeige, drei LEDs, ein Fototransistor und die Zusatztaste. Die
Anzeige wurde mit den 2,5 cm hohen grünstrahlenden einstelligen
Lichtschachtbauelementen VQB 26 (1 x) und VOB 27 (4x) mit gemeinsamer Katode
aufgebaut. Als Alternative ließen sich auch die VQB 16 und VQB 17 verwenden.
Zu beachten ist dabei die geringere Durchlaßgleichspannung und der damit
verbundene höhere Segmentstrom, notfalls sind die Segmentwiderstände zu
erhöhen.
Auf Grund der elektronischen Helligkeitsregelung und des dynamischen
Betriebs der Anzeige ist für einen ausreichenden Segmentstrom zu sorgen. Das
wird hier durch den Einsatz von Transistoren gewährleistet, deren
Stromverstärkung besonders hoch ist. Mit R48 und B4 besteht die Möglichkeit
zur Einstellung der Grundhelligkeit der Anzeige. Die Beschaltung des
A-D-Umsetzers C 520 D stellt keine Besonderheit dar. Nur die
Temperaturerfassung unterscheidet sich etwas von herkömmlichen Schaltungen.
Da die temperaturproportionale Stromquelle B 511 N bei 0 °C an einem
Meßwiderstand von 1 kΩ eine Spannung von 273 mV erzeugt, wäre das Anheben
des Nullpotentials am Eingang IL um 273 mV erforderlich, um in den drei
Digitstellen die Zahl 0 zu erhalten. Diese Maßnahme wird hier
programmtechnisch gelöst, indem über die Software die 273 mV vom
eingelesenen Istwert (z. B. 297 mV - 273 mV = 24°C) subtrahiert werden. Der
Eingang IL kann in diesem Falle auf die Analogmasse geschaltet werden. Um
den Nullpunkt und Endwert des A-D-Umsetzers dennoch einstellen zu können,
wurde mit Hilfe der Zusatztaste im Programm 7 eine zweite Ebene
programmiert. Diese zeigt den direkt ausgegebenen Spannungswert des ADU an.
Das eventuell gelesene Minuszeichen wird dabei als C interpretiert und
erscheint somit bei Nullpunktunterschreitung in der Anzeige.
Bei der Verlegung der Analogmasse wurden die Leiterzüge getrennt von der
Digitalmasse und möglichst kurz geführt. Beide Massen haben nur am
Siebkondensator des Netzteils ihr gemeinsames Potential. Das Siebglied
sollte dabei wenigstens eine Kapazität von 2200pF besitzen, um kurze
Einbrüche der Betriebsspannung, bedingt durch den Multiplexbetrieb der
Anzeigebaugruppe oder durch das Ansteuern des Relais, zu überbrücken. Der
durchschnittliche Stromverbrauch der Uhr liegt bei etwa 300 mA. Der
Spitzenstrom dürfte bei angezogenem Relais und aktivierter Melodie dann
kurzzeitig bei etwa 400 mA liegen. Das ist bei der Wahl des Transformators
zu beachten. Im Mustergerät kam der Transformator M 42 mit einer
Verlustleistung von 4W zum Einsatz. Um einer aufwendigen Kühlung und der
daraus entstehenden Wärmeentwicklung entgegenzuwirken, wurde die
5-V-Betriebsspannung mit dem SD 335 (VT,) geregelt.
Beim Einsatz eines Spannungsreglers vom Typ B 3170 beispielsweise beträgt
die zusätzlich abzuführende Wärmeenergie auf Grund der minimalen
Differenzspannung von 3V (bei VT, nur UcE) minimal 0,9 W. Bei einer
Gesamtverlustleistung von 2,7 W ergibt das einen höheren Energieaufwand von
33%.
Die Sekundärspannung des Transformators sollte im Normalbetrieb nicht unter
8V - liegen, da sonst bei Netzunterschreitungen bis minimal 190V - die Uhr
nicht mehr sicher anläuft.
Die Quarzfrequenz von 8 MHz lässt sich geringfügig (etwa 2 kHz) mit dem
Trimmer C6 verschieben. Sollte ein derartiger Quarz nicht zur Verfügung
stehen, ist der Einsatz von handelsüblichen 5-MHz-Schwingquarzen bedingt
möglich. Voraussetzung dafür ist das Umprogrammieren des T 0 und PRE 0
entsprechend GI. (1), um den Uhreninterrupt von 1 ms zu erzeugen.
Theoretisch sind auch noch die Teilerfaktoren für sämtliche Tonfrequenzen zu
verändern, praktisch ist das aber nicht immer realisierbar. Ein Test mit
einem 5-MHz-Quarz zeigte relativ gute Ergebnisse.
Softwarestruktur
Bei der Programmerarbeitung wurde Wert auf eine übersichtliche Struktur
gelegt, um individuelle Änderungen zu ermöglichen. Unterstützt wird das
durch einen sorgfältigen Registeraufbau, der kein Überschreiben zulässt.
Sämtliche Register, die im Interruptzyklus benutzt werden, sind gesondert
geführt. Der Stackpointer wurde mit der Adresse %0080 geladen, damit wird
das Registerpaar %7E, %7F mit der ersten Stackoperation beschrieben.
Insgesamt sind 28 Register (ab Register %64) für den Kellerspeicher
reserviert. Das erlaubt eine Tiefe von 14 Stackaufrufen. Da im
Interruptzyklus 4 Doppelregister (Absprungadresse vom Hauptprogramm, Retten
des Registerpointers und zwei Unterprogrammaufrufe) benötigt werden, bleiben
noch zehn verwendbare Doppelregister für das mögliche Retten von Registern
und für Unterprogrammaufrufe.
Um wertvolle Programmbytes zu sparen, ist folgendes zu beachten:
- organisiert gestaffelte Unterprogrammhierarchie
- Erarbeitung eines gut durchdachten Sprungverteilers mit
Programmablaufplan
- unnötiges mehrmaliges Umladen und Retten des Registerpointers
vermeiden Benutzung von Direktregistern vermeiden (durch Verbleiben
innerhalb des Registersatzes
- PUSH-POP-Operationen nur zum Retten des Registerpointers im
Interruptzyklus verwenden
- Programmabschnitte, deren Inhalte identisch sind, sollten zu einem
Unterprogramm deklariert werden
- keine direkten Sprünge verwenden, wenn sie mit einem relativen Sprung
auch erreichbar wären.
Nur durch Beachtung dieser Richtlinien war es möglich, ein so
umfangreiches Programm auf 2 Kbyte zu begrenzen.
Softwarebeschreibung und Bedienhinweise
Die gesamte Software der Uhr setzt sich aus dem Daten- und
Programmspeicher zusammen, wobei die Daten ab Adresse %0700 abgelegt wurden.
Zum Datenspeicher gehören
- Sprungverteiler für die Programme der ersten und zweiten Ebene der
Matrixtastatur (s. Tafel 1)
- Tafel für den Segmentkode der Anzeige (s. Tafel 2)
- Teilerfaktoren zur Frequenzgewinnung für die erste und zweite
Weckmelodie
- Daten der individuell programmierbaren Zeiten für die Programme
entsprechend Tafel 3
- Sprungtafel der Interruptserviceroutine.
Im Bereich ab Adresse %0000 bis %0700 liegt der Programmspeicher, wobei
nur noch 2 Bytes frei verwendbar wären. Der Programmspeicher wiederum setzt
sich aus der Interruptroutine für die Uhrzeit und dem Hauptprogramm mit
seinen sechs Unterprogrammen (Bild 5) zusammen. Den Programmablaufplan der
Interruptroutine zeigt Bild 6.
Nach dem Programmstart werden zunächst P0, P1, P2 und P3 maskenprogrammiert.
In der anschließenden Initialisierungsphase werden der Stackpointer, das
Interruptmaskenregister, das Interruptprioritätsregister und die beiden
Timer (TO, T1)-mit den dazugehörigen Vorteilern (PRE 0, PRE 1) geladen. Der
Timer 0 erhält die größere Priorität und wird dem Uhreninterrupt zugeordnet.
Der Interruptzyklus erfolgt in Intervallen von 1 ms. fINT ergibt
sich mit der Quarzfrequenz fOSZ zu 1 kHz aus GI. (1):

Aus programmsparenden Gründen wurde in der Interruptroutine die Tastatur
spaltenweise mit abgefragt. Der Timer 1 und sein Vorteiler werden von
Stundenton, von den Weckmelodien und der akustischen Signalisierung bei
Weckerabschaltung geladen und aktiviert. Dabei wird durch das
Zeitgebermoderegister der Ausgang von T 1 dem Portanschluss 36 zugeordnet.
Um Speicherplatz zu sparen, wird der Vorteiler (PRE 1) bei jeder Aktivierung
nur einmal geladen und dem Timer nur der Wert zur Frequenzgewinnung
zugeführt. Für die erste und zweite Weckmelodie werden dadurch 120 byte
eingespart. Nachteil ist lediglich eine Abweichung von der Sollfrequenz
(maximal 7 Hz).
Nach der Initialisierung werden sämtliche Register definiert geladen. Die
Register %04 bis %3F werden in einer Programmschleife genullt, anschließend
erhalten die Register %40 bis %5F die Daten der vorprogrammierten Zeiten.
Sind die Daten in den Registern abgelegt, geht das Programm in eine
Alarmschleife, die nur durch Betätigen der Zusatztaste verlassen werden
kann. Der Alarm zeigt Netzausfall an. Die Frequenz des Signaltones wird
inkrementierend von 500...1000 Hz und anschließend dekrementierend von
1000...500 Hz usw. im Intervall von etwa 250 ms ausgegeben.
Ist die Zusatztaste betätigt, wird das eigentliche Hauptprogramm
durchlaufen. Dieses ist in sechs Unterprogramme (s. Bild 5) untergliedert
und wird ständig in einer Schleife durchlaufen. Unterbrochen wird diese nur
durch den Interrupt des TO.
Im ersten Unterprogramm erfolgt die Abarbeitung der eingegebenen Daten über
die Tastatur nach Tafel 1. Hier wird entsprechend der Tastaturebene
entschieden, ob ein Programmwechsel oder eine Dekadenprogrammierung erfolgen
soll. Bei jedem Programmstart wird automatisch Programm 0 (Uhrzeit und
Temperaturanzeige) geladen.
Mit den beiden folgenden Unterprogrammen werden die Wecker 1 und 2 (Programm
1 und 2) realisiert. Voraussetzung dafür ist die vorherige Aktivierung der
Weckfunktion, diese wird optisch durch die gelbe (Wecker 1) und rote LED
(Wecker 2) im Programm 0 angezeigt. Erst dann werden die Weckzeit und die
aktuelle Uhrzeit miteinander verglichen, und bei Übereinstimmung wird die
Weckmelodie geladen, dabei ist jedem Wecker eine Melodie zugeordnet. Die
Weckmelodie des ersten Weckers hat eine Gesamtlänge von 6,72 s und setzt
sich aus 56 Einzelschritten zu je 120 ms zusammen. Die zweite Weckmelodie
ist 6,4 s lang und in 64 Schritten zu je 100 ms aufgebaut. Durch die
Möglichkeit der Programmierung einer Pausenzeit (Programm 3 und 4) lässt
sich eine Intervallzeit der Weckmelodie bis 99s realisieren. Ertönt die
Melodie, kann sie durch kurzes Betätigen der Zusatztaste abgeschaltet
werden, gleichzeitig. tritt die programmierte Zeit (maximal 59min) für die
Weckwiederholung (Programm 3 und 4) in Kraft. Dieser Vorgang wird optisch
durch Blinken der dazugehörigen LED im Programm 0 angezeigt und kann
unbegrenzt wiederholt werden. Soll keine Weckwiederholung mehr erfolgen, ist
die Zusatztaste für 1 s zu betätigen. Akustisch wird das durch einen
1,5-kHz-Ton (300 ms) bestätigt.
Im vierten Unterprogramm wird als erstes die Temperatur in 1-s-Abständen
eingelesen. Im Bereich von theoretisch -99...99°C kann sie dann im Programm
0 zur Anzeige gebracht werden. Bei negativen Temperaturen wird das
Minuszeichen der Lichtschachtanzeige VQB 26 (H3) aktiviert. Um einer
fehlerbehafteten Information beim Einlesen der Temperatur vorzubeugen, wurde
jedes Digit (LSD, NSD, MSD) zweimal gelesen und nur bei Gleichheit für
gültig befunden. Nachdem die Temperatur erfasst ist, wird das Reglerprogramm
abgearbeitet. Voraussetzung dafür ist die Programmierung der Einschaltzeit
(Programm 6) und des Temperaturreglers (Programm 9). Über die Software wurde
ein Dreipunktregler realisiert, mit dem sich beispielsweise unkompliziert
eine Temperatur (Aquarium) innerhalb einer programmierten Zeit auf 23°C ± 1
°C regeln lässt. Negative Temperaturen werden vom Regler grundsätzlich wie
eine Sollwertunterschreitung verarbeitet und führen somit zur Aktivierung
des Relais.
Das fünfte Unterprogramm dient dem Stundenton (Programm 5), der einmal zu
jeder vollen Stunde aktiviert werden kann. Das akustische Signal besteht aus
drei kurz aufeinanderfolgenden Frequenzen (2083Hz, 1041 Hz, 694 Hz) mit
einer Gesamtlänge von 0,9s. Das erstmalige Aktivieren des Tones kann zu
jeder Tageszeit (=linkes Feld der Anzeige) ermöglicht werden. Das Ende ist
im Bereich von 0 bis 23 Uhr (- rechtes Feld der Anzeige) einstellbar.
Abschaltbar ist der Stundenton nicht, er kann auf 1 h reduziert werden, wenn
Anfangs- und Endzeit identisch sind.
Im sechsten und zugleich letzten Unterprogramm erfolgt die zeitliche
Steuerung des Relais oder des Temperaturreglers. Die Überwachung des Relais
wird optisch durch die grüne LED (B1) im Programm 0 unterstützt. Auf Grund
des begrenzten Speichers ist die Programmierung von nur einer Einschaltzeit
(Programm 6) und einer Ausschaltzeit (Programm 7) gegeben. Mit der
Löschteste (WA) kann die Inaktivierung der Programme 6,7 und 9 ermöglicht
werden, zum Abschalten genügt dabei das Löschen einer Dekade.
Sämtliche Programme, die in der Tafel 2 aufgeführt sind, können mit der
Matrixtastatur (Programm-Nr. = Ziffer der Taste) aufgerufen und nach Bedarf
mit der zweiten Funktionsbelegung der Tastatur (durch kurzes Betätigen der
Taste SM erreichbar) jederzeit neu programmiert werden.
Zusammenfassung
Die rechnergestützte Digitaluhr ist auf Grund ihrer umfangreichen
Möglichkeiten vielfach verwendbar. Sie kann einzeln oder aber auch
gleichzeitig als Wecker, Wohnraumuhr und Temperaturregler bzw. Zeitschalter
für netzbetriebene Geräte eingesetzt werden. Dazu können je nach Eigenbedarf
die zwei Weckzeiten, die Intervallzeit für die Weckmelodien, die
Weckwiederholzeiten, der Wechsel zwischen Uhrzeit und Temperatur, der
Stundenton, die Ein- und Ausschaltzeit des Relais und sogar der
Temperaturregler individuell vorprogrammiert werden. Das heißt, beim
Einschalten der Uhr werden automatisch die vorprogrammierten Zeiten auf die
dazugehörigen Register geladen und stehen somit sofort zur Verfügung, es
muss lediglich die Uhrzeit aktualisiert und bei Weckfunktion der Wecker
aktiviert werden (Taste WA kurz drücken). Damit ist die Uhr voll
funktionstüchtig und braucht nur noch zum Ein- und Ausschalten der
Weckfunktion bedient zu werden. Dabei ist zu erwähnen, dass beim Abschalten
der Weckmelodie die Weckfunktion erhalten bleibt.
Wird eine dritte und vierte Weckzeit benötigt, ist sie bedarfsweise aus der
Weckwiederholungszeit eines der Wecker zu gewinnen, wenn die Differenz
beider Weckzeiten nicht 1 h überschreitet.
Die Digitaluhr ist seit einem Jahr im praktischen Gebrauch und arbeitet
bisher zur vollen Zufriedenheit.
Zum Zeitpunkt dieser Veröffentlichung stand eine Version mit zusätzlicher
Datumanzeige und vier Ein- und Ausschaltzeiten zur Verfügung.
Kontaktadresse: G. Schachtschneider
Heinrich-Germer-Str. 50 Magdeburg 3016 |