Projekt: Multifunktionsuhr

Tischuhr-Bild Unter diesem vielleicht nicht ganz optimal gewählten Namen verbirgt sich eine gewaltige Uhrenkonstruktion. Die Uhrzeit wird mit 10cm hohen 7-Segment-LEDs angezeigt und eine weitere 10-stellige 16-Segment-Anzeige sorgt für zusätzliche Informationen wie Datum, Wochentag, Temperatur oder Sekunden. Außerdem kann ein Stundengong aktiviert werden. Selbstverständlich wird die Uhr automatisch mit dem DCF77 oder HBG75 Zeitzeichen synchronisiert.

Letzte Bearbeitung: 15.12.2012

Symbol Downloads

Schaltplan multiuhr-schaltung.zip
Stückliste mit Empfehlungen zur Bauteilbestellung multiuhr-stkl.htm
Uhren-Software für AT90S8535/ATmega8535 mit komplettem Quelltext in Assembler multiuhr-at90s8535-v128.zip vom 30.09.2007
Gong-Software für AT90S2333/AT90S4433 mit komplettem Quelltext in Assembler multiuhr-at90s2333-v100.zip vom 24.01.2001
Gong-Software für ATmega8 mit komplettem Quelltext in Assembler multiuhr-atmega8-v100.zip vom 24.02.2006
Gong-Sound 1 für 27C256 multiuhr-27c256-1.zip
Gong-Sound 2 für 27C256 multiuhr-27c256-2.zip
Platinen-Layout Version 1 multiuhr-pl1.zip
Platinen-Layout Version 2 multiuhr-pl2.zip

Symbol Inhaltsverzeichnis

Beschreibung Allgemeine Informationen über die Multifunktionsuhr
Schaltung Beschreibung der Schaltung und der Schaltungsoptionen
Hardware Bilder und Hinweise zum Aufbau der Uhr
Software Inbetriebnahme der Uhr und Installation der Software
Bedienung Bedienungsanleitung und komplette Beschreibung aller Funktionen

Symbol Beschreibung

Dies ist das erste Projekt, welches ich mit AVR-Mikrocontrollern aufgebaut habe und gleichzeitig ist es auch eines der umfangreichsten Controller-Projekte. Die gesamte Entwicklungs-, Bau- und Programmierzeit betrug mehrere Monate, aber die Arbeit hat sich gelohnt. Die Uhr ist ein schöner Blickfang, wenn man die Wohnung betritt und die meisten Besucher waren von dem Gerät sehr beeindruckt. Hier ein kurzer Überblick über die eingebauten Funktionen:

Zur Bedienung der Uhr sind zwei Tasten vorgesehen. Zusammen mit der Zusatzanzeige ist eine menügeführte Einstellung der Uhr möglich. Mit einer Infrarot-Fernbedienung (RC5-Code) können die beiden Bedientasten auch bequem vom Fernsehsessel aus betätigt werden. Die Tastencodes sind lernbar.

Symbol Schaltung

Die Schaltung der Multifunktionsuhr ist sehr umfangreich und lässt sich grob in 5 Funktionsgruppen aufteilen: Zentrale Steuerung, Anzeige-Treiber, Anzeige-Modul, Gong/Infrarot-Steuerung und Stromversorgung. Alle Hauptfunktionen der Uhr werden von einem AT90S8535 oder ATmega8535 gesteuert. Dieser kümmert sich um die Steuerung der Anzeigen im Multiplex-Betrieb, liest und dekodiert die DCF77-Impulse, wertet die Tasteneingaben aus und kommuniziert mit dem Temperatursensor. Alle Anzeige-Elemente, die beiden Tasten und der Infrarotsensor sind auf einer separaten Platine angeordnet und über 2 Steckverbinder mit der Steuerplatine verbunden. So lässt sich bei Problemen alles schnell zerlegen und wieder zusammenbauen.
Ein zusätzlicher AT90S2333, AT90S4433 oder ATmega8 steuert den digitalen Gong-Generator und überwacht den Infrarot-Sensor. Eingehende Infrarot-Daten werden dekodiert und gegebenenfalls als simulierte Tasteneingaben an den Haupt-Controller weitergegeben. Der AT90S2333 kann auch weggelassen werden, wenn man den Gong/Infrarot-Zusatz nicht benötigt. Stattdessen wäre z.B. eine einfache Gongschaltung mit einem speziellen IC wie SAE800 denkbar.

Symbol Teil 1 - Zentrale Steuerung

Schaltung1

Die zentrale Steuerung besteht hauptsächlich aus dem Mikrocontroller AT90S8535 bzw. ATmega8535. Dieser hat insgesamt 32 I/O-Anschlüsse - eigentlich viel zu wenig für 14 Anzeigeelemente, 2 Tasten, einen DCF77-Empfänger und einen Temperatur-Sensor. Deshalb werden die LED-Anzeigen im Multiplexverfahren betrieben. Das spart jede Menge Anschlüsse ein, hat aber auch Nachteile: Es werden zusätzliche Bauteile zur Decodierung benötigt. Außerdem müssen die Anzeigen im Impulsbetrieb mit höherem Strom betrieben werden, der bei Ausfall des Multiplexers die Anzeigen beschädigen kann.

Aber jetzt zu den Einzelheiten: Die vierstellige Zeitanzeige wird über die Portanschlüsse PB0-PB6 des Controllers gesteuert. An PB0-PB3 wird die Ziffer im Binärcode ausgegeben und mittels IC102 ins 7-Segment-Format umgewandelt. Der binäre Zifferncode liegt ebenfalls an den 4 Eingängen des Gatters 1 von IC103 an. Hier wird geprüft, ob der Zifferncode 0x0f (dezimal 15) anliegt und falls das zutrifft, dann wird der Dunkeltasteingang des 7-Segment-Decoders aktiviert. Das ist notwendig, damit in der Zeit von Mitternacht bis 9:59 Uhr die Stunden-Zehner-Stelle ausgeblendet werden kann. An den Portanschlüssen PB4 und PB5 ist ein 1-aus-10-Decoder angeschlossen, dessen Ausgänge A0-A3 zu den Anzeigeelementen führen (Auswahl der Anzeigestelle). Nun bleiben noch die Dezimalpunkte der Zeitanzeige übrig, diese werden über PB6 des Controllers angesteuert.

Für die 10-stellige Zusatzanzeige sind folgende Controller-Portanschlüsse zuständig: PA4-PA7, PC0-PC7 und PD0-PD7. PA4-PA7 führen zu einem 1-aus-10-Decoder. Hier wird (ähnlich wie bei der Zeitanzeige) die Anzeigestelle ausgewählt. Die Anschlüsse PC0-PC7 und PD0-PD7 steuern direkt die einzelnen Segmente der 16-Segment-Anzeigeelemente an - bis auf eine Ausnahme: die Segmente E und F wurden zusammengefasst um noch einen Portanschluss für den Dezimalpunkt zu gewinnen.

Die verbleibenden Portanschlüsse PA0-PA3 und PB7 haben natürlich auch eine Funktion: PA0 bedient zusammen mit PC0 und PC1 über ein so genanntes 3-Wire-Interface den Temperatursensor IC106. Die doppelte Verwendung von PC0 und PC1 ist kein Problem: im Anzeigebetrieb ist durch PA0=Low sichergestellt, dass IC106 deaktiviert ist und bei der Kommunikation mit IC106 wird ein Zeitpunkt genutzt, an dem die Anzeige nicht aktiv ist. Über den Eingang PA1 werden die vom DCF77-Empfänger kommenden Zeitimpulse eingelesen. PA2 und PA3 sind ebenfalls Eingänge, hier sind die beiden Bedientasten angeschlossen. Der letzte Anschluss PB7 führt zum zweiten Controller und steuert den Stundengong.

Die Portanschlüsse PB5-PB7 und der Anschluss RESET haben noch eine zusätzliche Funktion: Über sie kann der Controller programmiert werden, wobei der Chip in der Schaltung verbleiben kann. Dazu sind diese 4 Leitungen und ein Masseanschluss an einen 5-poligen Steckverbinder geführt. Damit die Dezimalpunkte der Zeitanzeige wegen der Doppelfunktion von PB6 während der Programmierung nicht beschädigt werden, bewirkt das bisher nicht erwähnte Gatter 2 von IC103 eine Abschaltung der Dezimalpunkte. Außerdem wird über die Pullup-Widerstände R101-R104 der Ziffernwert auf 0x0f gesetzt und somit die Zeitanzeige ausgeschaltet.

Ein Hinweis zu den verwendeten Bauelementen: Anstatt des inzwischen nicht mehr produzierten AT90S8535 kann auch ein ATmega8535 verwendet werden. Der verwendete 7-Segment-Decoder 40511 ist eine abgewandelte Version des 4511, der in der DDR produziert wurde. Ich habe diesen verwendet, weil er die Ziffern 6 und 9 schöner darstellt als das Original und weil er gerade vorhanden war. Es kann aber selbstverständlich auch ein 4511 zum Einsatz kommen. In diesem Fall kann sogar auf die Verbindung zum Gatter 1 des IC103 verzichtet werden, weil der 4511 automatisch bei 0x0f am Eingang die Segmentausgänge sperrt.

Schaltung 6 Von einem freundlichen Bastlerkollegen erhielt ich folgenden Tipp: Der 4543 ist ebenfalls ein guter Ersatz für den V40511, dieser stellt die Ziffern 6 und 9 ordentlich dar, hat allerdings eine andere Anschlussbelegung. Das nebenstehende Bild zeigt die Schaltungsvariante mit 4543. Auch hier kann wie beim 4511 die Verbindung zu IC103 entfallen.

Die beiden Keramik-Kondensatoren C113 und C114 sind optional. Sie werden nur dann benötigt, wenn der Temperatursensor an einem längeren Kabel angeschlossen ist und die Kommunikation nicht funktioniert. In diesem Fall sollte man es zunächst mit einem Wert von 100p probieren und gegebenenfalls durch Versuche den optimalen Wert ermitteln. Mit den Kondensatoren lassen sich Entfernungen von bis zu 5m überbrücken, allerdings ist dies abhängig vom Kabelmaterial.

Noch ein Hinweis zum DCF77 Empfänger: Auch wenn im Text nur von DCF77 die Rede ist, es kann auch ein HBG75 Empfänger verwendet werden. Bei einigen Empfängern sind zwei Ausgänge vorhanden, hier muss unbedingt der invertierte Ausgang benutzt werden. Manche Empfänger neuerer Bauart sind noch mit einem weiteren Anschluss namens PON ausgestattet, dieser muss auf Masse liegen.

Symbol Teil 2 - Anzeige-Treiber

Schaltung2

Alle Anzeigeelemente der Zeitanzeige werden mit +12V gespeist. Das ist notwendig, weil die verwendeten Ziffernanzeigen SA40 intern aus mehreren in Reihe geschalteten LEDs bestehen, welche insgesamt eine relativ hohe Flussspannung haben. Bei den kleineren PSA08 der Zusatzanzeige ist das nicht der Fall, hier genügen +5V.
Die Treiberschaltungen für die Zeit- und die Zusatzanzeige sind im Prinzip identisch. Die Anodentreiber sind zweistufig aufgebaut, weil zum einen ein relativ hoher Strom geschaltet wird und zum anderen bei der Zeitanzeige eine Pegelwandlung auf 12V erfolgen muss. Die Kathodentreiber konnten mit einem einzelnen Transistor realisiert werden. Hier ist aber eine Besonderheit zu beachten: Der Treiber für die Dezimalpunkte der Zeitanzeige hat mehrere Eingänge. Neben dem normalen Eingang E1 dient E2 zum Dunkelsteuern der Dezimalpunkte während der Controller-Programmierung. E3 wird im Zusammenhang mit der Infrarot-Steuerung benötigt, die im Teil 4 beschrieben wird.

Hinweis zu den verwendeten Bauelementen: Einige Hersteller fertigen den Treiber-Transistor BD136 in einer anderen Anschlussbelegung, hier sind dann Basis und Emitter vertauscht (Anschluss 1 und 3). Also vor dem Verdrahten oder dem Erstellen eines Layouts unbedingt die richtige Belegung ermitteln (notfalls den Transistor um 180° verdreht einbauen).
Die Kathodentreiber der Zeit- und der Zusatzanzeige (Treibertyp D, E und F) können übrigens auch mit geeigneten Treiber-ICs aufgebaut werden, z.B. ULN2803.

Symbol Teil 3 - Anzeige-Modul

Schaltung3

Die Anzeigeelemente und einige andere Komponenten habe ich auf einer zweiten Platine untergebracht. Genau genommen ist die Anzeigeplatine eigentlich das tragende Element und die Controllerplatine ist an dieser festgeschraubt. Beide Platinen werden über 2 Flachbandkabel (20- und 34-polig) mit Pfostensteckern verbunden. Wie man auf der Schaltung erkennen kann, befindet sich auf der Anzeigeplatine noch ein Infrarot-Empfänger, ein Lautsprecher für den Stundengong und 2 Tastern für die Bedienung der Uhr. Auch die Anschlüsse dieser Teile sind über die Steckverbinder geführt.

Die Anzeigeelemente selbst sind in der Schaltung etwas vereinfacht dargestellt. Bei der Zeitanzeige werden einfach alle gleichnamigen Segment-Anschlüsse (Kathoden) zusammengeschaltet: alle Anschlüsse für die Segmente A der 4 Anzeigen werden miteinander verbunden und bilden den Anschluss A; alle Anschlüsse für die Segmente B werden miteinander verbunden und bilden den Anschluss B usw. Die Anoden werden einzeln angeschlossen, wobei zu beachten ist, dass Z0 (Ziffer 0) die Anzeigestelle auf der rechten Seite ist.
Bei der Zusatzanzeige gelten die gleichen Regeln. Auch hier sind alle gleichnamigen Segment-Anschlüsse miteinander verbunden und als Anschluss A bis T bezeichnet. Die Anoden sind ebenfalls einzeln angeschlossen und Z0 ist auch hier die rechte Anzeigestelle.

Symbol Teil 4 - Gong-Generator, Infrarot-Steuerung

Schaltung4

Dieser Schaltungsteil ist optional und kann auch komplett weggelassen werden. In der ursprünglichen Version der Uhr bestand die Gong-Schaltung nur aus dem Gong-IC SAE800. Weil dieser aber für meinen Geschmack scheußlich klingt, habe ich nach Alternativen gesucht: Zuerst probierte ich einen ISD1416, welcher für Sprachaufzeichnungen bis 16 Sekunden gedacht ist. Die Klangqualität ließ allerdings sehr zu wünschen übrig. Also entwickelte ich eine eigene Schaltung und hier kommt wieder ein Mikrocontroller zum Einsatz (AT90S2333, AT90S4433 oder ATmega8). Da dieser die meiste Zeit nichts zu tun hat, habe ich noch eine Infrarot-Empfangssoftware implementiert.

Aber jetzt zur Schaltung: Das besondere bei diesem Gong ist, dass hier echte digitalisierte Klänge erzeugt werden, welche in 2 EPROMs vom Typ 27C256 gespeichert sind. Bei dem hier verwendeten Sampling mit 16 Bit und 11,025 kHz reicht die Spielzeit für knapp 3 Sekunden - genau richtig für diesen oder diesen Gongschlag.

Der Ablauf ist folgender: Der Controller liest zyklisch den I/O-Anschluss PB1 und wartet sozusagen auf das Startsignal vom Haupt-Controller. Sobald ein High-Signal erkannt wird, werden über die Portanschlüsse PD0-PD7, PC0-PC5 und PB0 die 15 Adressleitungen der EPROMs von 0 beginnend bis 0x7FFF (32767) hochgezählt und zwar genau alle 90,75 µs, was einer Frequenz von 11019 Hz entspricht. Die Abweichung zur Sollfrequenz 11025 Hz ist minimal und nicht hörbar. Die Daten-Ausgänge der beiden EPROMs werden an ein 1R/2R-Netzwerk (R403-R434) geführt, welches den aktuellen 16-Bit-Wert in einen Analogwert umwandelt. Das gewonnene Audiosignal wird mit R436, R437, C409 und C410 gefiltert und dann dem NF-Leistungsverstärker IC404 zugeführt, an dessen Ausgang sich ein kleiner Lautsprecher (8 Ohm, 0,5 VA) befindet. Über R440 kann die Lautstärke eingestellt werden.
Die Siebglieder R439/C414 und R443/C404 mindern die Störungen auf den Betriebsspannungen +5V und +12V, die durch den Multiplexbetrieb der Anzeigen verursacht werden. Die Betriebsspannung des Controllers und der EPROMs beträgt dann zwar nur noch 4,9V, aber das liegt noch im grünen Bereich.

Wie schon erwähnt, hat der Controller neben der Gongsteuerung noch eine weitere Aufgabe zu erledigen: den Empfang und die Dekodierung von Infrarot-Signalen. Am Controller-Eingang PB2 ist ein Infrarot-Empfänger angeschlossen, der ebenso wie der Gongeingang ständig überwacht wird. Im EEPROM des Controllers ist für jede der beiden Bedientasten ein Befehlscode hinterlegt und jeder empfangene Befehl wird mit den beiden gespeicherten Codes verglichen. Bei Übereinstimmung wird dann die entsprechende Tastenfunktion über die Portanschlüsse PB3 oder PB4 ausgelöst. PB3 und PB4 sind (entkoppelt über R441/R442) parallel zu den Bedientastern geschaltet und für den Haupt-Controller ist es somit egal, ob einer der Taster gedrückt oder ein Tastendruck per Fernbedienung über PB3/PB4 simuliert wird.
Die beiden Befehlscodes können mittels einer Lernprozedur selbst festgelegt werden. Die genaue Beschreibung dieser Prozedur befindet sich im Abschnitt Bedienung.

Auch bei diesem Controller habe ich die Programmieranschlüsse an einen Steckverbinder geführt, damit ein Software-Update ohne Ausbau des Chips möglich ist. Zur Vermeidung von Fehlfunktionen während des Programmiervorganges sind 3 DIP-Schalter vorgesehen:

Zusammenfassung: Vor der Programmierung von IC101 (AT90S8535 oder ATmega8535) sollte S401 geschlossen werden und vor der Programmierung von IC401 (AT90S2333, AT90S4433 oder ATmega8) sollten S402 und S403 geöffnet werden. Nach der erfolgreichen Programmierung werden die Schalter wieder in den Normalzustand gebracht.

Hinweis zu den verwendeten Bauelementen: Für die Widerstände R403-R434 eignen sich am besten Metallschichtwiderstände mit einer Toleranz von 0,1%. Da solche Widerstände sehr teuer sind, kann man auch einen anderen Weg gehen: Man kaufe eine größere Anzahl preisgünstiger Metallschichtwiderstände mit 1% Toleranz und messe diese aus, es sollten sich dann genügend gleiche Werte finden. Auf jeden Fall sollte hier sehr genau gearbeitet werden, denn das Klangbild hängt hauptsächlich von diesen Widerständen ab!
Eigentlich war anstatt des Widerstandsnetzwerkes ein 12- oder 16-Bit-D/A-Wandler-IC vorgesehen. Leider sind solche Bauteile recht teuer und schwer beschaffbar, deshalb habe ich mich für diese Variante entschieden.

Symbol Teil 5 - Stromversorgung und Sonstiges

Die Stromversorgung kann über ein handelsübliches Steckernetzgerät mit stabilisierter Ausgangsspannung erfolgen (12V und mindestens 500mA), wobei sich hier ein modernes Schaltnetzteil am besten eignet. Die stabile Spannung ist wichtig, damit die Helligkeit der Zeitanzeige, welche direkt mit 12V betrieben wird, konstant bleibt. Außerdem verkraftet der NF-Verstärker keine höheren Betriebsspannungen als 12V.

Schaltung5 Vom Hohlsteckeranschluss K501 gelangt die Spannung über eine Schmelzsicherung auf einen 5V-Spannungsregler. Dieser speist die Zusatzanzeige sowie die Mikrocontroller und Logik-ICs. Der 5V-Spannungsregler ist ein moderner Schaltregler, der nur eine Spule (L501) und eine Schottky-Diode (D502) als zusätzliche Bauteile benötigt. Obwohl die Verlustleistung dieses Schaltreglers äußerst gering ist, empfiehlt sich die Montage auf einem kleinen Kühlkörper. Die Diode D501 soll die Schaltung schützen, falls versehentlich ein falsches Netzteil mit negativer Spannung angeschlossen wird. Besser wäre an dieser Stelle eine Surpressordiode, weil sie auch sicher vor Überspannung schützt. Für C503 muss ein spezieller Elko (Low ESR) verwendet werden. Ein normaler Typ ist nicht geeignet und würde nicht lange überleben. Für die Spule L501 habe ich eine vorhandene Ringkern-Drosselspule verwendet, die nur etwas abgewickelt werden musste. In einem späteren Projekt habe ich jedoch gute Erfahrungen mit einer Festinduktivität gemacht, die auch in der Stückliste erwähnt wird.

Ein wichtiges Element ist bisher nur kurz erwähnt worden: der DCF77-Empfänger. Ich habe hier einen einfachen Empfänger verwendet, wie er z.B. bei ELV, Conrad oder Reichelt erhältlich ist. Ursprünglich sollte der DCF77-Empfänger auf einer der Platinen untergebracht werden. Leider werden innerhalb der Uhr durch den Multiplex-Betrieb der Anzeigen und den 5V-Schaltregler sehr viele Störsignale erzeugt, so dass hier ein sicherer Empfang nicht möglich ist. Deshalb wurde der Empfänger nach außen verlagert und über einen 3-poligen 3,5mm-Klinkenstecker angeschlossen. Der Empfänger und die dazugehörige Ferritantenne können in einem kleinen Plastikgehäuse untergebracht werden. Anstatt eines DCF77 Empfängers kann auch einer für das HBG75 Signal verwendet werden.

Diese Stückliste enthält alle Bauelemente, die für dieses Projekt benötigt werden.

Die Datei multiuhr-pl1.zip enthält ein komplettes Platinenlayout für die Multifunktionsuhr in Form von PDF-Dateien. Dieses wurde von Lothar Jasper entwickelt und zur Verfügung gestellt, vielen Dank.

Ein weiteres Platinenlayout multiuhr-pl2.zip stammt von Michael Hamacher und wurde im Eagle-Format erstellt, auch hier vielen Dank. Derzeit ist allerdings noch keine Gongschaltung enthalten.

Symbol Hardware

Die gesamte Uhr besteht hauptsächlich aus 2 Platinen: der Anzeigeplatine und der Controllerplatine.

Symbol Anzeigeplatine

Platine1 Diese trägt die 4 LED-Displays für die Zeitanzeige sowie die 10 LED-Elemente für die Zusatzanzeige, die Bedientaster (rechts unten) und den IR-Empfänger (links unten). Genau genommen besteht die Platine aus zwei Teilstücken, da es keine Lochrasterplatinen in der benötigten Größe gibt.

Die Zusatzanzeige und die beiden Bedientaster sind jeweils auf einer kleinen Extra-Platine montiert, um die Höhe an die großen Anzeigeelemente anzugleichen. Den IR-Empfänger habe ich direkt auf die Anzeigeplatine gelötet.

Platine2

Damit diese Großplatine die nötige Stabilität bekommt, habe ich sie vor dem Bestücken mit Aluminium-Winkelprofilen verstärkt. Über die 4 kleinen Holzplatten wird die Platine später an einen Bilderrahmen geschraubt.

Die beiden Flachbandkabel stellen die Verbindung zur Controllerplatine her. Das linke 34-polige Kabel führt alle Anschlüsse der Zusatzanzeige sowie die Leitungen für Taster und Lautsprecher. Das rechte 20-polige Kabel führt zu den Elementen der Zeitanzeige und zum IR-Empfänger.

Der Lautsprecher wurde hier einfach auf die Platine geklebt.

Platine3

Dieses Bild zeigt die Platine mit der Zusatzanzeige von unten. Mit den 6 angeklebten Schrauben wird die Anzeige so auf der Hauptplatine befestigt, dass sich alle Anzeigeflächen auf einer Höhe befinden. Vor der Montage dieser Platine habe ich das zugehörige Flachbandkabel durch einen Schlitz in der Hauptplatine gesteckt und an die entsprechenden Anschlüsse gelötet.

Symbol Controllerplatine

Platine4

Die gesamte Elektronik habe ich auf einer weiteren Lochrasterplatine untergebracht. Auch diese wurde zur Verbesserung der Stabilität teilweise mit Winkelprofilen verstärkt. An den Profilen lassen sich dann später die beiden Platinen (Anzeige- und Controllerplatine) gut zusammenschrauben.

In der Mitte befindet sich der AT90S8535, rechts daneben sind die Treiber für die Zusatz- und die Zeitanzeige zu sehen. In die rechts oben sichtbaren Stiftleisten werden später die Flachbandkabel zu den Anzeigelementen gesteckt. Unten rechts sind die 4 peripheren ICs zu sehen (2x 4028, 4012 und 40511). Im linken Teil befindet sich die Gongsteuerung: der AT90S2333, die beiden 27C256 und links daneben das Widerstandsnetzwerk des D/A-Wandlers sowie das Verstärker-IC LM386.

Platine5

Hier wurde die linke Seite der Platine etwas vergrößert.

Über den Mikrocontrollern sind die beiden 5-poligen Programmieranschlüsse zu sehen. Links oben befinden sich 4 DIP-Schalter, 3 davon werden bei der Programmierung verwendet (siehe Teil 4). Den Temperatursensor DS1620 habe ich ganz unten links platziert, damit er möglichst weit von den Wärmequellen der Uhr entfernt ist.

An dem großen Aluminium-Winkel befinden sich die Anschlüsse der Uhr: Stromversorgung 12V (links) und DCF77-Empfänger (rechts), außerdem habe ich hier das 10k Trimmpotentiometer für die Gong-Lautstärke angeklebt. So kann man ohne Eingriff in die Uhr die Lautstärke mit einem kleinen Schraubendreher einstellen.

Platine6

Und hier ein vergrößerter Blick auf die rechte Platinenseite.

Ganz links befinden sich die 16 Segmenttreiber für die Zusatzanzeige, rechts daneben die 10 zugehörigen Anodentreiber. Wiederum rechts daneben sind die 8 Segmenttreiber der Zeitanzeige und die 4 Anodentreiber zu sehen. Rechts unten befinden sich die ICs 102-105.

Links unten wurde die 5V-Stromversorgung untergebracht. Die Bauteile wirken etwas deplatziert, was daran liegt, dass die Schaltung ursprünglich anders aufgebaut war: Die Zusatzanzeige wurde mit 12V versorgt und ein Linearregler 7805 war für die Versorgung der Controller zuständig. Diese Variante hatte allerdings einen enormen Stromverbrauch zur Folge und so baute ich alles noch einmal um.

Platine7

So sieht die Controllerplatine von unten aus. Hier habe ich noch 0,3 mm "Klingeldraht" verwendet. In späteren Projekten bin ich dann auf Kupferlackdraht umgestiegen.

Platine8

Hier ist eine Detailansicht der linken Unterseite zu sehen.

Platine9

Und natürlich soll rechte Seite nicht vernachlässigt werden.

Platine10

Auf diesem Bild wurden die beiden Platinen zusammengesetzt und verschraubt. Durch das Aufstecken der Flachbandkabel sind alle Verbindungen zwischen den Platinen hergestellt.

Platine11

Über die kleinen Holzplatten oben und unten wird die gesamte Konstruktion auf einen Bilderrahmen geschraubt. Diesen habe ich in einem Baumarkt in der gewünschten Größe anfertigen lassen.

Platine12

Auch auf die Rückseite kommt noch ein Rahmen, an dem sich 2 Winkel für die Wandbefestigung befinden. Auf eine Rückwand habe ich verzichtet, da diese Seite sowieso immer von einer Wand abgedeckt wird.

Platine13 Und so sieht dann das fertige Produkt aus. Vor den Anzeigeelementen befinden sich zunächst 2 Schichten mit roter Folie, wie sie in der Lichttechnik bei Scheinwerfern verwendet werden. Darüber liegt eine Glasplatte mit 3 mm Dicke, wobei für die beiden Taster eine Aussparung rechts unten notwendig ist (so eine Glasplatte war gar nicht so einfach zu beschaffen).

Man kann auch rotes Plexiglas verwenden, das lässt sich leichter verarbeiten und es ist keine Folie notwendig. Allerdings ist bei diesem Material die Oberfläche sehr empfindlich.

Symbol Software

Insgesamt müssen bei der Multifunktionsuhr 4 ICs programmiert werden: die beiden Mikrocontroller sowie die beiden EPROMs. In der folgenden Übersicht stehen alle Dateien zum Download zur Verfügung:

Symbol AT90S8535/ATmega8535 (IC101) - Uhr-Controller

Für diesen Controller ist die Software v1.28 vom 30.09.2007 bestimmt. Dieses Paket enthält den kompletten Assembler-Quelltext sowie die fertig assemblierte Software als HEX- und EEP-File. Da es derzeit noch keine Möglichkeit gibt, die Geburtstagsdaten über die beiden Bedientaster einzugeben, muss die Assembler-Datei mit dem AVR-Studio nachbearbeitet und neu compiliert werden. Entsprechende Hinweise befinden sich als Kommentarzeilen im Quelltext.

Fusebits11

Bei Verwendung eines ATmega8535 ist die richtige Einstellung der Fuse-Bits wichtig. Im AVR-Studio sieht die Einstellung so aus.

Fusebits12

Wer PonyProg verwendet, findet hier die Einstellung für den ATmega8535.

Symbol AT90S2333/AT90S4433/ATmega8 (IC401) - Gong-Controller

Für den Gong-Controller gibt es 2 verschiedene Softwareversionen, die abhängig vom verwendeten Controller programmiert werden müssen: Beide Pakete enthalten jeweils den Assembler-Quelltext, das HEX- und das EEPROM-File.

Fusebits21

Bei Verwendung eines AT90S2333 oder AT90S4433 müssen die Fuse-Bits mit dem AVR-Studio so wie im nebenstehenden Bild gesetzt werden.

Fusebits22

Wer PonyProg verwendet, findet hier die Einstellung für den AT90S2333 oder AT90S4433.

Fusebits31

Bei Verwendung eines ATmega8 gilt die nebenstehende Einstellung der Fuse-Bits im AVR-Studio.

Fusebits32

Wer PonyProg verwendet, findet hier die Einstellung für den ATmega8.

Symbol 27C256 (IC402, IC403) - Gong-Soundspeicher

Für die EPROMs stehen Datenpakete für 2 verschiedene Gong-Sounds zur Verfügung:

Beide Pakete enthalten die EPROM-Dateien im BIN- und HEX-Format. Die Datei mit low im Namen ist für IC402 bestimmt, die Datei mit high für IC403. Weiterhin liegt noch das WAV-File bei, welches als Vorlage für die EPROM-Files diente.

Falls der Wunsch besteht, andere Sounds für den Gong zu verwenden, dann ist dieses kleine Konverter-Tool sicher hilfreich. Es ist ein einfaches Kommandozeilenprogramm und wandelt normale unkomprimierte WAV-Files in 2 Binärfiles um, die direkt in die EPROMs geschrieben werden können. Wichtig: Das WAV-File muss folgende Parameter haben: Samplingrate: 11,025 kHz, 16 Bit, Mono, 32768 Samples (Spielzeit 2,9722 Sekunden), keine Komprimierung.

Symbol Bedienung

Zunächst ein paar allgemeine Worte: Die Uhr zeigt auf der oberen 4-stelligen Anzeige immer die aktuelle Uhrzeit an. Die Dezimalpunkte haben teilweise eine besondere Bedeutung: Der Punkt zwischen den Stunden und Minuten blinkt im Normalbetrieb im Sekundentakt. Wenn die Uhr in Betrieb genommen oder nach einem Netzausfall wieder eingeschaltet wird, dann blinkt dieser Punkt im Rhythmus des empfangenen DCF77-Signals. So kann man gleich die Funktion des DCF77-Empfängers überprüfen und den Empfänger gegebenenfalls optimal ausrichten. Sobald die Uhr drei aufeinander folgende fehlerfreie Datenrahmen (entspricht 3 Minuten) empfangen hat, wird sie gestellt und der Dezimalpunkt zwischen Stunden und Minuten geht in einen normalen Blinkrhythmus über.
Der ganz rechte Dezimalpunkt dient als DCF77-Ausfallsignal. Er leuchtet auf, wenn die Uhr 120 Minuten lang kein verwertbares Signal empfangen hat. Sobald sich die Uhr wieder mit dem DCF77-Signal synchronisiert hat, verlischt der Punkt wieder.

Die untere 10-stellige Anzeige ist für zusätzliche Informationen gedacht. Im Normalbetrieb lässt sich hier ein Automatik-Modus einstellen, der zyklisch das Datum, den Wochentag und die Temperatur darstellt. Weiterhin gibt es noch den Kompakt-Modus, hier werden in Kurzform der Wochentag, das Datum (nur der Tag) und die Temperatur angezeigt. Das Titelbild zeigt die Uhr mit aktiviertem Kompakt-Modus. Bei Bedarf lässt sich auch eine Sekunden-Anzeige oder eine Status-Anzeige für den DCF-Empfang einblenden.

Die Zusatzanzeige dient außerdem noch zur Darstellung von Menütexten. Mithilfe der beiden Taster Menü und OK ist so eine bequeme Bedienung der Uhr möglich. Wird die Taste Menü gedrückt, dann erscheint eine Frage auf der Anzeige wobei das Fragezeichen blinkt. An dieser Stelle wird eine weitere Eingabe erwartet: Ein nochmaliges Drücken auf Menü schaltet zur nächsten Funktion weiter und OK bestätigt die Auswahl. Bei einigen Menü-Funktionen sind weitere Eingaben erforderlich, z.B. bei den Zeiten für die Nachtschaltung und den Gong. Hier blinkt dann die Zeichenposition, wo die Eingabedaten erwartet werden. Wird innerhalb von 10 Sekunden keine weitere Taste gedrückt, dann kehrt die Anzeige automatisch in den Normalmodus zurück. In diesem Fall werden keine Änderungen gespeichert.

Die folgende Übersicht zeigt alle Menüfunktionen:

 Menü 
Pfeil
AUTOMATIK? Pfeil  OK  Pfeil Aktivierung der Automatik-Anzeige: Wechsel von Datum, Wochentag und Temperatur im Abstand von 4 Sekunden.
Pfeil
 Menü 
Pfeil
KOMPAKT? Pfeil  OK  Pfeil Aktivierung der Kompakt-Anzeige: ständige Anzeige von Wochentag, Datum (nur Tag) und Temperatur, wird alle 4 Sekunden aktualisiert.
Pfeil
 Menü 
Pfeil
SEKUNDEN? Pfeil  OK  Pfeil Aktivierung der Sekunden-Anzeige.
Pfeil
 Menü 
Pfeil
DCF-TEST? Pfeil  OK  Pfeil Aktivierung der DCF-Anzeige: Anzeige des DCF77-Zeittaktes und der ermittelten Zeiten in Einheiten von 15,6ms: Impulslänge, Impulsdauer und Impulsnummer (für Power-User).
Pfeil
 Menü 
Pfeil
NACHTZEIT? Pfeil  OK  Pfeil NACHT23-06 Pfeil  OK  Pfeil NACHT23-06 Pfeil  OK  Pfeil Rückkehr in den Normalmodus und Speichern der Nachtzeiten.
Pfeil       Pfeil       Pfeil
 Menü         Menü         Menü 
Pfeil       Pfeil       Pfeil
Pfeil       Nachtzeit-Beginn um
eine Stunde erhöhen
      Nachtzeit-Ende um
eine Stunde erhöhen
Pfeil
GONGZEIT? Pfeil  OK  Pfeil GONG 08-22 Pfeil  OK  Pfeil GONG 08-22 Pfeil  OK  Pfeil Rückkehr in den Normalmodus und Speichern der Gongzeiten.
Pfeil       Pfeil       Pfeil
 Menü         Menü         Menü 
Pfeil       Pfeil       Pfeil
Pfeil       Gongzeit-Beginn um
eine Stunde erhöhen
      Gongzeit-Ende um
eine Stunde erhöhen
Pfeil
GONGTEST? Pfeil  OK  Pfeil Simulation eines Stunden-Gongs; falls für den aktuellen Tag ein Geburtstag programmiert wurde, dann wird der Geburtstagstext angezeigt, anderenfalls wird in den Normalmodus zurückgekehrt.
Pfeil
 Menü 
Pfeil
LED-TEST? Pfeil  OK  Pfeil LED-Test; auf beiden Anzeigen wird nacheinander der komplette darstellbare Zeichensatz ausgegeben. So kann der richtige Anschluss der Anzeigeelemente überprüft werden.
Pfeil
 Menü 
Pfeil
AUTOMATIK?       (Zyklus beginnt von vorn)

Hier noch einige weitere Informationen:

Die Taste OK hat noch eine weitere Funktion: Wenn sie ohne vorherige Betätigung von Menü gedrückt wird, dann wird die Uhr vom Tag- in den Nachtmodus geschaltet. Eine weitere Betätigung schaltet wieder auf Tag usw. Im Nachtmodus wird die Zeitanzeige per PWM auf eine niedrige Helligkeit umgeschaltet und die Zusatzanzeige verlischt ganz. Weiterhin wird im Nachtmodus der Gong deaktiviert. Wird im Nachtmodus die Taste Menü gedrückt, dann wacht die Uhr auf und aktiviert ganz normal das Menü. Die Umschaltung Tag/Nacht und umgekehrt kann jederzeit erfolgen. Bei der nächsten programmierten Umschaltung wird dann wieder der vorgegebene Rhythmus hergestellt.

Die Taste OK hat noch eine dritte Funktion: Die Aktivierung des Infrarot-Lernmodus. Damit diese Funktion nicht versehentlich bei normaler Bedienung ausgelöst wird, ist hierfür eine besondere Prozedur nötig:
  1. Uhr ausschalten (Netzstecker ziehen)
  2. Uhr wieder einschalten
  3. Innerhalb von 5 Sekunden auf die Taste OK drücken und die Taste gedrückt halten. Wenn man erfolgreich war, dann leuchten alle Dezimalpunkte der Zeitanzeige auf und die Taste kann wieder losgelassen werden. Die Uhr wechselt dabei wegen der Doppelfunktion dieser Taste in den Nachtmodus, was aber den folgenden Ablauf nicht stört.
  4. Die Taste auf der Fernbedienung drücken, welche der Funktion Menü zugeordnet werden soll; die Dezimalpunkte der Zeitanzeige verlöschen kurz, wenn ein gültiger Code empfangen wurde.
  5. Die Taste auf der Fernbedienung drücken, welche der Funktion OK zugeordnet werden soll; die Dezimalpunkte der Zeitanzeige verlöschen, wenn ein gültiger Code empfangen wurde, der Lernmodus ist damit beendet.

Hinweis: Wenn bei aktiviertem Lernmodus innerhalb von 10 Sekunden kein gültiger Code empfangen wurde, dann wird der Lernmodus beendet und die Dezimalpunkte der Zeitanzeige verlöschen wieder (die Uhr kehrt in den Normalzustand zurück). Die bisher verwendeten Codes bleiben dabei erhalten und werden weiterhin benutzt.
Die Fernbedienung muss übrigens mit dem RC5-Code arbeiten. Dieser Code ist mehr oder weniger weit verbreitet, es sollte sich eigentlich in jedem Haushalt eine solche Fernbedienung finden. Alternativ kann man eine Universalfernbedienung nehmen und ein RC-5 Gerät einstellen, z.B. ein TV-Gerät von Loewe. Bei mir funktioniert es beispielsweise sehr gut mit den Fernbedienungen eines Loewe-Fernsehers und einer Hauppauge WinTV-Karte.

Symbol Nachwort

Ich habe festgestellt, dass die verwendeten LED-Anzeigen recht stark altern. Nach fast 6 Jahren ununterbrochenem Dauerbetrieb mit aktivierter Kompaktanzeige konnte man sehr genau erkennen, welche Segmente häufig genutzt werden und welche nicht. Auch die Elemente der Zeitanzeige haben stark nachgelassen, so dass ich mich entschloss, alle Anzeigen auszuwechseln. Die Kompaktanzeige ist zwar sehr übersichtlich und praktisch, aber sie hat den Nachteil, dass die Anzeige "einbrennt". Ich empfehle deshalb, die Automatik-Anzeige zu verwenden.


Startseite - Seitenanfang


Allgemeines - Projekt-Überblick - Links, Software - Neuigkeiten - "Klassiker" - Galerie - Impressum


AVR-Programmierung - Multifunktionsuhr - Tischuhr - Wohnraumuhr - Wecker - Zahnputzuhr - BigBen-Türgong - Fahrtregler - EPROM-Programmiergerät - Temperaturmesssystem - USB-RS232 Interface - Weihnachtsstern - Kleine Projekte