LcdClock

From BlinkenArea Wiki
Revision as of 00:24, 4 March 2023 by ArneRossius (talk | contribs)
Jump to: navigation, search
zur Projektübersicht
English Version of this Page
LcdClock.jpg
Jahr 2020
Anzahl Pixel 29
Graustufen / Farben 2
Leuchtmittel LCD
Leistungsaufnahme 4.5 V, 100 µA
Kontaktperson Arne Rossius
Projekt-Website

Die CMOS-LCD-Uhr ist eine einfacher 24-Stunden-Uhr mit CMOS-Logik-ICs aus der 4000-Serie. Die Schaltung ist so entworfen, dass möglichst wenige ICs benötigt werden, ohne dass die Uhr schwieriger zu benutzen ist. Die Zeit (Stunden und Minuten) wird auf einer großen Siebensegment-Flüssigkristallanzeige angezeigt, außerdem gibt es zwei Taster zum Stellen. Die Uhr wird mit 3 AAA-Batterien versorgt und verwendet einen Standard-Uhrenquarz als Zeitbasis.

Hardware

Rev. 1.0

Funktionsbeschreibung

Die Uhr besteht aus 5 Funktionsblöcken:

  • Quarzoszillator
  • Vorteiler
  • Minuten- und Stundenzähler
  • Stelltaster
  • Anzeigetreiber und LCD

Quarzoszillator

Der Quarzoszillator basiert auf einem 4060, welcher den Großteil der Oszillator-Schaltung und einen 14-stufigen Binärteiler enthält. Mit einem gewöhnlichen 32768-Hz-Uhrenquarz ergibt sich daher eine Ausgangsfrequenz von 2 Hz. Außerdem stellt das IC die Ausgänge einiger Zwischenstufen zur Verfügung, die vom LCD verwendet werden (siehe unten). Die Frequenz des Oszillators kann durch verändern der Lastkapazität am Quarz feinjustiert werden. Damit die Uhr so genau wie möglich geht, ist ein Trimmer-Kondensator verbaut, mit dem die Lastkapazität einfach justiert werden kann. Beim Einbau des Trimmer-Kondensators ist es wichtig, dass die Metallspindel mit Masse verbunden ist, andernfalls wird die Lastkapazität beim Justieren mit einem Metall-Schraubendreher beeinflusst und die tatsächliche Frequenz kann erst nach dem Wegnehmen des Schraubendrehers gemessen werden.

Vorteiler

Der Vorteiler bekommt das 2-Hz-Signal vom 4060 und teilt es auf 1/60 Hz, also einen Impuls pro Minute, herunter. Für diese Funktion wird das recht ungewöhnliche IC 40102 verwendet. Es enthält einen voreinstellbaren 2-stelligen BCD-Abwärtszähler. Der Zählerstand ist zwar nicht als Ausgang verfügbar, jedoch geht der CO/ZO-Ausgang (carry out/zero out) auf low, wenn der Zählerstand Null erreicht. Da der Zähler das BCD-System (binary coded decimal) verwendet, ist der maximal voreinstellbare Zählerstand eigentlich 99, eine Division durch 120 (von 2 Hz auf 1/60 Hz) erscheint also erstmal unmöglich. Es ist jedoch problemlos möglich, den Zähler mit einem Wert größer als 9 zu laden, und ein Voreinstell-Wert von 0xB9 resultiert in einem Zählerstand von 119.

Nach dem Voreinstellen sind 119 Takt-Impulse notwendig, bis der Zähler auf 0 steht. Der ZO-Ausgang ist mit dem SPE-Eingang (synchronous programming enable) verbunden, so dass sich der Zähler beim nächsten (120.) Taktimpuls nicht auf 99 zurückstellt, sondern mit dem extern verdrahteten Wert von 119 geladen wird. Das CO-Ausgangssignal ist also einmal pro Minute für 0.5 s (eine 2-Hz-Periode) low und eignet sich daher als Takt für den Minutenzähler.

Der Vorteiler wird auch sofort auf 119 gesetzt, wenn der APE-Eingang (asynchronous programming enable) low gemacht wird. Taktimpulse werden ignoriert, bis der APE-Eingang wieder high ist. Diese Funktion wird verwendet, um die Uhr sekundengenau stellen zu können.

Minuten- und Stundenzähler

Jeder der beiden Zähler verwendet ein 4518 Doppel-BCD-Zähler-IC. Jedes der ICs enthält zwei unabhängige BCD-Zähler, die jeweils von 0 bis 9 zählen und dann wieder auf 0 zurückfallen. Der Schaltplan zeigt die beiden BCD-Zähler als separate Einheiten, obwohl sie auf dem gleichen Mikrochip untergebracht sind. Die Zählweise ist für die Einerstellen korrekt, aber die Minuten-Zehner müssen bereits von 5 auf 0 zurückfallen, und der Stundenzähler muss nach einem Stand von 23 wieder auf 00 zurückgesetzt werden, es ist also eine zusätzliche Schaltung nötig. Die Zähler haben Rücksetz-Eingänge, um sie auf 0 zu stellen, so dass lediglich ein zusätzliches UND-Gatter benötigt wird. Das IC 4081 enthält vier solche Gatter. Die Zehnerstelle des Minutenzählers wird auf 0 zurückgesetzt, wenn die Ausgänge 2^1 ("B") und 2^2 ("C") gleichzeitig high sind, was bei einem Zählerstand von 6 der Fall ist. Die beiden Stundenzähler-Stellen werden auf 0 zurückgesetzt, wenn die Ausgänge 2^2 ("C") der Einerstelle und 2^1 ("B") der Zehnerstelle gleichzeitig high sind, d.h. wenn der Zählerstand 24 erreicht hat.

Die Zähler-ICs haben außerdem ein praktisches ODER-Gatter am Takteingang, mit einem direkten und einem invertierten Eingang. Dieses Gatter ist nützlich um die Stelltaster anzuschließen, für die sonst ein zusätzliches IC nötig wäre, um deren Signals mit den Ausgangssignalen der vorhergehenden Stufe (Vorteiler für den Minutentakt und Minuten-Ausgang für den Stundentakt) zu kombinieren. Die Stelltaster funktionieren nur, wenn der andere Eingang des ODER-Gatters nicht aktiv ist (aktiv bedeutet high für den direkten und low für den invertierten Eingang), andernfalls ist der Ausgang des ODER-Gatters dauerhaft high und das Signal vom Taster erreicht den Takteingang nicht. Umgekehrt müssen auch die Signale von den Tastern ihren ODER-Gatter-Eingang inaktiv halten, wenn sie nicht gedrückt sind, damit die Taktimpulse der vorhergehenden Stufe den Zähler erreichen können.

Da der Ausgang des Vorteilers nur einmal pro Minute für eine halbe Sekunde low ist, ist er mit dem invertierenden Eingang des Zählers verbunden. Der Minuten-Stelltaster ist zwar während diese halben Sekunde blockiert, es ist aber unwahrscheinlich, dass er genau zu diesem Zeitpunkt gedrückt wird, und selbst wenn, wird der nächste Tastendruck eine halbe Sekunde später wieder erkannt. Der Stundenzähler wird mit dem Zurücksetzen-Signal des Minutenzählers getaktet, welches nur so lange high ist, wie der Minutenzähler braucht, um sich auf 0 zurückzusetzen (ein paar Mikrosekunden). Da das Signal sonst immer low ist, ist es mit dem direkten Eingang des Stundenzählers verbunden.

Die Zehnerstellen-Zähler werden vom 2^3-Ausgang ("D") der dazugehörigen Einerstelle getaktet, der bei einem Zählerstand von 8 high wird und erst wieder auf low geht, wenn der Zähler von 9 auf 0 springt. Die Zehnerstelle soll beim zurückspringen der Einerstelle erhöht werden, also wird der invertierende Eingang verwendet, der Zähler wird so bei einer fallenden Flanke (high auf low) getaktet. Da der andere Eingang unbenutzt ist, stört es nicht, dass das Eingangssignal low bleibt, bis die Einerstelle wieder auf 8 steht.

Stelltaster

Die Stelltaster erhöhen den Stand des dazugehörigen Zählers bei jedem Druck um eins. Mechanische Taster "prellen", d.h. beim Drücken schließt und öffnet der Kontakt mehrmals für ein paar Millisekunden, bevor er schließlich geschlossen bleibt, und beim Loslassen passiert das gleiche. Wird der Taster direkt mit dem Takteingang eines Zählers verbunden, würde er bei jedem Tastendruck mehrmals weiterzählen. Um das zu verhindern ist eine Entprellschaltung zwischen Taster und Zähler nötig. Diese Uhr verwendet dafür einen Kondensator, der bei Tastendruck schnell entladen (durch den 270-Ω-Widerstand) und nach dem Loslassen langsam wieder aufgeladen wird (durch den 100-kΩ-Widerstand). Das Prellen ist zu kurz, als dass sich der Kondensator wieder aufladen könnte, der Ausgang ändert sich daher nicht. Kondensator und Ladewiderstand sind so gewählt, dass sich der Kondensator während des Prellens nicht auf eine nennenswerte Spannung auflädt, jedoch zwischen zwei Tastendrücken weit genug geladen wird. Mit einem schnellen Finger liegen zwischen zwei Tastendrücken manchmal nur 20 ms. Der 270-Ω-Widerstand wird benötigt, um den Entladestrom des Kondensators zu begrenzen: ohne Widerstand würde der Entladestrom nur durch den eigenen Innenwiderstand und den des Tasters sowie die Leiterbahnen auf der Platine begrenzt, wäre also ein Vielfaches größer als die Spezifikation des Tasters erlaubt.

Die Spannung am Kondensator steigt nur langsam, während der Kondensator sich auflädt, der Takteingang benötigt aber einen möglichst schnellen Wechsel zwischen den zwei Logikzuständen (low, nah an Masse, und high, nah an der Versorgungsspannung). Deshalb werden die zwei übrigen UND-Gatter mit Widerständen versehen, so dass eine Hysterese entsteht. Wenn der Ausgang des UND-Gatters high ist, zieht es mit dem Rückkoppelwiderstand auch seinen Eingang auf high, so dass vor dem Eingangswiderstand eine deutlich niedrigere Spannung anliegen muss, bevor auch der Eingang des Gatters ein low erkennt. Sobald der Gatter-Eingang ein low erkennt, beginnt der Gatter-Ausgang auf low zu gehen und zieht durch den Rückkoppelwiderstand auch den Eingang weiter auf low, so dass sich der Zustand schneller ändert. Ein so rückgekoppeltes Gatter nennt man Schmitt-Trigger. Es gibt ICs, die fertige Gatter mit Schmitt-Trigger-Eingängen enthalten, in der 4000-Serie gibt es jedoch keine Schmitt-Trigger-UND-Gatter (nur NAND).

Anzeigentreiber und LCD

Eine Flüssigkristallanzeige besteht aus zwei Glasplatten mit einer Flüssigkeit dazwischen. Auf den Glasplatten befinden sich transparente Metallelektroden in der Form der Segmente. Wenn eine Wechselspannung zwischen den Elektroden anliegt, drehen sich die Kristalle in der Flüssigkeit, so dass sich auch die Polarisation hindurchscheinendes Lichts dreht. Polarisationsfilter vor und hinter dem LCD bestimmen, ob gedrehtes oder nicht gedrehtes Licht passieren kann -- beim LCD in dieser Uhr kann nur das nicht-gedrehte Licht passieren, daher ist der Hintergrund hell und eingeschaltete Segmente erscheinen dunkel. Die verwendete Anzeige ist die einfachste Form eines LCD, ein sogenanntes "statisches" LCD. Bei diesen LCDs ist eine Glasplatte vollflächig mit einer Elektrode bedeckt, die sogenannte Backplane (BP). Es findet also kein "Multiplexing" statt, jedes Segment hat seine eigene Elektrode (und seinen eigenen Anschluss) auf der anderen Glasplatte.

LCDs dürfen nur mit Wechselspannung ohne Gleichanteil betrieben werden, da sie sonst schnell zerstört werden. Ohne Gleichanteil heißt, dass die durchschnittliche Spannung zwischen der Backplane und einem Segment über die Zeit betrachtet null sein muss. Eine Wechselspannung kann am einfachsten aus einem Rechtecksignal mit 50% Tastverhältnis (d.h. genausolange high wie low) gewonnen werden. Dieses Signal wird an die Backplane gelegt, aktive Segmente bekommen das invertierte Signal zugeführt. Dadurch liegt zwischen den Elektroden abwechselnd die Betriebsspannung Vdd (+4.5V bei vollen Batterien) und die negative Betriebsspannung −Vdd an, und die Durchschnittsspannung ist null (50% * +Vdd + 50% * −Vdd = 0).

Glïcklicherweise sind geeignete Rechtecksignale mit verschiedenen Frequenzen an den Ausgängen des 4060 verfügbar. Die Frequenz für das LCD sollte hoch genug sein, damit es nicht flackert (min. 30 Hz), aber auch nicht zu hoch, da bei jedem Polaritätswechsel ein bisschen Energie verbraucht wird (die Elektroden auf den beiden Glasplatten bilden einen Kondensator). Für die Uhr wurde Ausgang Q9 mit einer Frequenz von 32768 Hz / 2^9 = 64  Hz gewählt. Damit der Doppelpunkt angezeigt wird, wäre eigentlich ein invertiertes Signal erforderlich, welches ohne zusätzliches Inverter-IC aber nicht verfügbar ist. Stattdessen wird der 128-Hz-Ausgang des 4060 verwendet. Dieses Signal ändert seinen Zustand doppelt so oft wie die Backplane, so dass sich für die Spannung zwischen Doppelpunkt-Elektrode und Backplane in jedem 64-Hz-Zyklus 4 Zustände ergeben:

  • 00 (beide low): 0 V
  • 01 (128 Hz high): +Vdd
  • 10 (64 Hz high): −Vdd
  • 11 (beide high): 0 V

Der Durchschnitt ist immernoch 0, das LCD wird also nicht beschädigt, aber die Momentanspannung ist auch die halbe Zeit null, man könnte die Ansteuerung also mit einer LED an einem 50%-PWM-Signal vergleichen. Glücklicherweise ist die Schwärze der LCD-Segmente aber nicht linear zur Spannung: wenn ein Segment seine volle Schwärze erreicht hat, wird es auch mit mehr Spannung nicht mehr schwärzer. Mit vollen Batterien ist der Doppelpunkt genauso dunkel wie die anderen Segmente und dient ausserdem als Batterie-Leer-Anzeige, wenn er verglichen mit den anderen Segmenten blasser erscheint.

Die Segmente werden von einem IC 4543 pro Stelle angesteuert. Das IC hat zwei Funktionen: die 4-Bit-BCD-Eingangssignale zu Signalen für die 7 Anzeigesegmente zu dekodieren und das Backplane-Signal für aktive Segmente zu invertieren. Ausgeschaltete Segmente erhalten das gleiche Signal wie die Backplane, so dass die Spannung zwischen den beiden Elektroden zu jedem Zeitpunkt null ist. Das Backplane-Signal liegt an jedem IC am PH-Eingang (Phase) an. Die ICs haben noch zwei weitere Funktionen, die in der Uhr ungenutzt bleiben: den Austasteingang BI (Blanking Input), welcher bei einem high-Signal alle Segmente abschaltet, und den Speichereingang LE (Latch Enable), welcher die Ziffer intern speichert und nicht mehr auf Änderungen des BCD-Eingangs reagiert, solange LE low ist.