Quarzgesteuerte Digitaluhr mit Einchip-Mikrorechner von Gerd Schachtschneider history menue Letztmalig dran rumgefummelt: 20.11.11 17:52:39
Die quarzgenaue Digitaluhr sollte mit LED-Anzeige und zwei voneinander getrennten Weckzeiten realisiert werden. Geeignet wäre dafür der vierstellige dekadische Vor-Rückwärtszähler U 125 D. Er enthält zwei Speicher, die zur Weckzeitprogrammierung eingesetzt werden könnten. Um eine leichte Bedienung der Uhr zu gewährleisten, bedarf es jedoch logischer Verknüpfungen, die einen höheren Hardwareaufwand erfordern würden. Als nachteilig erwies sich ferner das Fehlen eines echten Sekundentaktes und auch die Stellzeit (Hochzählen der Dekade im Sekundenrhythmus) erschien wesentlich zu lang. Deshalb traf die Wahl auf Einsatz eines Einchip-Mikrorechners. Dabei beschränkt sich die Hardware auf 3 IS (Einchip-Mikrorechner, EPROM, ADU) und einige aktive Bauelemente (s. Bild 1). Ein echter Sekundentakt, in Form eines Doppelpunktes, konnte optisch wirkungsvoll aus dem Plus der einstelligen Lichtschachtanzeige VQB 26 (H3) gewonnen werden. Die Stellzeit wurde auf 3 ... 6s begrenzt. Damit wären die Nachteile beseitigt, der Einchip-Mikrorechner ist aber nur zu 2/3 und der Speicher nur zur Hälfte ausgelastet. Um den Aufwand bei der notwendigen Software zu rechtfertigen, wurde mit dem A-D-Umsetzer C 520 D und dem Temperatursensor B 511 N eine Temperaturerfassung ermöglicht, so dass auch die Raumtemperatur digital angezeigt wird. Darüber hinaus kann mit einem Relais programmtechnisch ein Temperaturregler mit Schaltausgang vorgesehen werden. Um die Speicherkapazität voll auszuschöpfen, folgten noch der Stundenton, zwei voneinander getrennte Wecksysteme mit Weckwiederholung und Weckmelodie, eine Ein- und Ausschaltzeit für netzbetriebene Geräte und der programmierbare Wechsel zwischen Uhrzeit und Raumtemperatur.
Quellen:

Zeitschrift rfe Heft 9/1989 S. 590

Mikrocontroller-Schaltungen

Uhren-Schaltungen

Logo der quazgesteuerten Mikrocontroller-Uhr aus dem Jahre 1989

inhaltlich auf korrektem Stand - evtl. partiell unvollständig ;-)

Wissen für Fortgeschrittene der Informatik

Informatik-Profi-Wissen

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

Bild 4 - Bestückungsplan

Tafel 1 - Tastenbelegung

Bild 5 - PAP - oder auch: Programmablaufplan

Tafel 2 - Übersicht zur Segmentansteuerung

Tafel 3 - Übersicht zur Programmierung - Bedienungsanleitung unten beachten!!!

Tafel 3 - Übersicht zur Programmierung

   
... also auf in die Geschichte der Mikrocontroller - die konnten schon alles wie heute, haben dies technisch nur etwas anders umgesetzt!!!

Bedienungsanleitung Seite 1

Bedienungsanleitung Seite 2

Bedienungsanleitung Seite 3

Bedienungsanleitung Seite 4

Bedienungsanleitung Seite 5

Bedienungsanleitung Seite 6

Bedienungsanleitung Seite 7

Bedienungsanleitung Seite 8

Bedienungsanleitung Seite 9

     


zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost am 13. November 2011 um 21.43 Uhr

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist

Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-)