Projekt: Wohnraumuhr 2

Wohnraumuhr-2-Bild Diese Uhr hat eine ähnliche Funktionalität wie die 15 Jahre zuvor entwickelte Wohnraumuhr, verwendet aber eine neue Hard- und Software-Basis und wurde in vielen Details verbessert. Als zentrale Komponente wird hier ein Crumb128-Modul V5.0 der Firma Chip45 verwendet, welches einen ATmega128A und einen Mini-USB-Anschluss als UART auf einer kleinen Platine vereint. Für die Zeitanzeige kommen die gleichen 56mm hohen Siebensegment-LEDs wie bei der alten Wohnraumuhr zum Einsatz. Optional lässt sich noch eine kleinere Sekundenanzeige hinzufügen, die aus 20mm hohen Sechzehnsegment-LEDs besteht. Neben der Uhrzeit und dem Datum kann die Uhr auch 2 Sensorwerte anzeigen, die entweder von internen 1-Wire-Sensoren oder vom Temperatur-Messsystem empfangen werden können. Die Helligkeit der Anzeige wird kontinuierlich über PWM an die Umgebung angepasst. Die Uhr synchronisiert sich mit dem DCF77-Signal, kann aber auch manuell gestellt werden. Über den USB-Anschluss erfolgt sowohl die Stromversorgung als auch die Installation der Uhrensoftware.

Symbol Status
Statusaktiv
Letzte Bearbeitung26.07.2020
Aktueller Softwarestand Hauptcontrollerv1.01 vom 02.04.2020
Aktueller Softwarestand Zusatzcontrollerv1.00 vom 02.12.2017
SymbolDownloads
Schaltplan des Hauptmoduls (PDF)
Schaltplan der Optionen (PDF)
Stückliste mit Empfehlungen zur Bauteilbestellung
Software v1.01 vom 02.04.2020 für den Hauptcontroller ATmega128A mit komplettem Quelltext in Cwohnuhr2-atmega128a-v101.zip
Software v1.00 vom 02.12.2017 für den Zusatzcontroller ATtiny84A mit komplettem Quelltext in Cwohnuhr2-attiny84a-v100.zip
AVR Bootloader von Chip45 https://www.chip45.com/categories/chip45boot2_avr_atmega_xmega_uart_bootloader_frei_kostenlos_hexfiles.php
Platinen-Layout (PDF) vom 26.07.2020 von Thomas Zetschewohnuhr2-layout.zip
Homepage von PuTTY (Terminalprogramm)http://www.putty.org/
Homepage von TeraTerm (Terminalprogramm)http://ttssh2.osdn.jp/
SymbolInhaltsverzeichnis
BeschreibungAllgemeine Informationen über die Wohnraumuhr 2
SchaltungBeschreibung der Schaltung
HardwareBilder und Hinweise zum Aufbau
SoftwareKurze Beschreibung der Software
InbetriebnahmeInbetriebnahme der Wohnraumuhr 2
BedienungBedienungsanleitung und komplette Beschreibung aller Funktionen
SonstigesEinige Hintergrundinformationen zur Entwicklung der Wohnraumuhr 2
SymbolBeschreibung

Die recht einfache Schaltung der ungefähr 15 Jahre zuvor entstandenen Wohnraumuhr war offensichtlich sehr beliebt und wurde vielfach in verschiedenen Varianten nachgebaut. Allerdings sind im Laufe der Zeit verschiedene Funktionen hinzugefügt worden, die ursprünglich gar nicht vorgesehen waren und die wegen der einfachen Hardware nicht optimal umgesetzt werden konnten. Dazu gehören der blinkende Doppelpunkt und die unvollständige Ansteuerung der Anzeige. Auch einige andere Dinge kann man heute besser machen und so wurde es höchste Zeit für eine Neuentwicklung.

Grundsätzlich besteht die Wohnraumuhr 2 aus dem Mikrocontroller-Board Crumb128 V5.0 (ATmega128A), einer 4-stelligen großen Siebensegment-Anzeige, einem Spannungswandler für die LED-Anzeige, einem DCF77-Empfänger, einem Helligkeitssensor und 2 Tastern. Dieses Hauptmodul beherrscht alle hier beschriebenen Funktionen und ist im Prinzip relativ einfach aufgebaut. Über die RS-232-Schnittstelle auf dem Crumb128 oder auch über ein Funkmodul können Sensorwerte vom Temperatur-Messsystem empfangen werden. Das Hauptmodul hat folgende Eigenschaften:

Die Wohnraumuhr kann mit 2 Optionen erweitert werden. Eine davon ist die Sekunden-Option. Diese besteht aus 2 kleineren Sechzehnsegment-Anzeigen und 4 zusätzlichen Schieberegister-ICs. Damit wird die Uhr um folgende Eigenschaften erweitert:

Als zweite Erweiterungsmöglichkeit gibt es die Sensor-Option. Diese besteht aus einem zusätzlichen Mikrocontroller ATtiny84A und zeichnet sich durch folgende Eigenschaften aus:

Die Wohnraumuhr 2 zeigt im normalen Betrieb zyklisch nacheinander die Uhrzeit, das Datum und bis zu 2 Sensorwerte an. Die Anzeige kann dabei in gewissen Grenzen konfiguriert werden. So ist es z.B. auch möglich, das Datum auszublenden. Weiterhin ist ein Nachtbetrieb möglich, bei dem das Datum und die Sensorwerte unterhalb einer einstellbaren Helligkeit unterdrückt werden. Auch viele weitere Einstellungen sind über ein Menü möglich. Auf eine Ausgabe von Tönen wurde übrigens komplett verzichtet.

SymbolSchaltung

Die Schaltung wurde in die 3 Komponenten Hauptmodul, Sekunden-Option und Sensor-Option unterteilt. Das Hauptmodul ist immer erforderlich und auch allein funktionsfähig. Die Optionen sind nicht notwendig, erweitern aber den Funktionsumfang der Uhr. Zum Anschließen einer Option müssen alle mit einem Pfeil gekennzeichneten Leitungen mit den gleichnamigen Leitungen des Hauptmoduls verbunden werden, zusätzlich natürlich auch die Masse und +5V.

SymbolHauptmodul

Schaltung1

Bei diesem Projekt wird das kompakte Mikrocontroller-Modul Crumb128 als zentrale Einheit verwendet. Dieses Modul vereint auf einer kleinen Platine einen ATmega128A-Mikrocontroller mit Quarz (14,7456MHz), einen USB-RS232-Wandler (CP2101) mit Mini-USB-Buchse und einen MAX3221 als RS232-Transceiver. Durch das Modul vereinfacht sich die gesamte Schaltung und man kommt nicht direkt mit ICs im SMD-Format in Berührung. Über die USB-Buchse des Moduls erfolgt die Stromversorgung der Uhr. Hier kann ein beliebiges USB-Netzteil mit Mini-USB-Kabel verwendet werden, welches einen Strom von mindestens 0,5A liefert. Über die USB-Buchse kann die Uhr auch mit einem PC verbunden werden. Dies ermöglicht die Installation der Software und auch die Konfiguration der Uhr am PC. Der RS232-Transceiver des Crumb128 ist für die reine Uhrenfunktion nicht erforderlich, kann aber verwendet werden, um Sensorwerte vom Temperatur-Messsystem über ein Kabel zu empfangen. Es ist auch möglich, Sensorwerte über eine Funkverbindung vom Sensormodul zu empfangen. Weitere Information hierzu sind in der Beschreibung des Temperatur-Messsystems zu finden (Abschnitt Datenkommunikation - Funkverbindung).

Crumb128-1 Wichtig: Bei der Bestellung des Crumb128 hat man die Möglichkeit, die gewünschte Quarz-Frequenz zu wählen. Für die Wohnraumuhr 2 wird eine Frequenz von 14,7456MHz benötigt. Weiterhin ist es empfehlenswert, die Stift-/Buchsenleisten mitzubestellen. Und bitte unbedingt den Haken bei Bootloader vorinstallieren setzen, denn das vereinfacht später die Inbetriebnahme.

Ebenfalls wichtig: Damit die Stromversorgung über USB funktioniert, muss auf dem Crumb128 eine Lötbrücke gesetzt werden. Anderenfalls wird nur der USB-RS232-Wandler versorgt und die restlichen ICs bleiben stromlos. Für die Aktivierung der USB-Stromversorgung sind die beiden Lötflächen J6 (USBpowered) zwischen USB-Buchse und ATmega128A wie im nebenstehenden Bild mit einer Zinnbrücke zu verbinden (roter Kreis).

Bis auf 4 Ausnahmen sind alle Anschlüsse des ATmega128A an den 2 Steckverbindern Con1 und Con2 des Crumb128 herausgeführt. Die meisten Anschlüsse werden hier für die Ansteuerung der 4 Siebensegment-Anzeigen D1-D4 benötigt. Port A (PA0-PA7) steuert die Anzeigestelle D1, die Anschlüsse von Port C (PC0-PC7) sind für die Anzeigestelle D2 zuständig. Für die Anzeigestellen D3 und D4 stehen leider keine kompletten Ports zur Verfügung, da einige Anschlüsse für spezielle Aufgaben reserviert sind. So werden für die Anzeigestelle D3 nur 7 Anschlüsse von Port D verwendet, den fehlenden PD2 ersetzt hier PG2. Ähnlich ist es bei der Anzeigestelle D4, hier stehen nur 6 Anschlüsse von Port E zur Verfügung, die Lücke füllen hier PG0 und PG1.

Die Anzeigen D1-D4 bestehen intern aus 4 in Reihe geschalteten LEDs, somit wird eine relativ hohe Spannung von mindestens 7,4V laut Datenblatt benötigt. Diese wird über den Spannungswandler IC3 (LM2577) mit den notwendigen Bauteilen R39-R42, C4-C6, D12 und L1 erzeugt. Die beiden Bauteile R38 und T2 bilden einen Schalter, der es ermöglicht, die LED-Spannung über den Anschluss PB2 des Mikrocontrollers ein- und auszuschalten. Mit dem Trimmpoti R42 kann die LED-Spannung genau eingestellt werden. Die Spannung muss auf jeden Fall über den erwähnten 7,4V liegen, darf aber nicht zu hoch sein, da sonst die LEDs im ausgeschalteten Zustand schwach leuchten würden. Das liegt daran, dass die Ausgänge des Mikrocontrollers nur zwischen 0 und 5V schalten können. Hier hat sich ein Wert von 9,5V als optimal erwiesen. Mit den Vorwiderständen von 680Ω ergibt sich dabei ein Segmentstrom von knapp 4mA. Bei den Dezimalpunkten gibt es noch eine Besonderheit: Diese bestehen intern aus einer Reihenschaltung von nur 2 LEDs und benötigen deshalb noch die Z-Dioden D5-D8, damit sich der gleiche Segmentstrom und somit die gleiche Helligkeit ergibt. Zur Anzeige gehört außerdem ein blinkender Doppelpunkt, der aus den Standard-LEDs D9 und D10 besteht. Diese werden von Port PB0 angesteuert und mit 5V versorgt. Hier habe ich Exemplare aus der Bastelkiste genommen und die Oberfläche flach geschliffen. Die Widerstände R33 und R34 passen bei meiner Uhr, sollten jedoch nur als Richtwerte angesehen werden.

Die Helligkeit der Anzeige wird mittels PWM bei einer Frequenz von 1024Hz gesteuert. Dabei wird die Helligkeit der Umgebung mit der Fototransistor-Schaltung T1, R35, R36 und C2 erfasst, in einem Puffer gespeichert, gemittelt und schließlich mit PWM über die Segment-Ausgänge an die Anzeigen D1-D4 ausgegeben. Die Ausgänge werden also 1024 mal pro Sekunde ein- und ausgeschaltet, wobei das Verhältnis zwischen Ein- und Ausschaltzeit die Helligkeit bestimmt. Mit dem Trimmpoti R36 lässt sich die Helligkeitssregelung individuell anpassen. IC2 ist ein Empfänger-Modul für das DCF77-Signal und hier können praktisch alle Typen verwendet werden, die das DCF77-Signal als Sekunden-Impuls ausgeben. Mit den Bauteilen R37, C3 und D11 wird die Betriebsspannung für das DCF77-Modul auf 3,3V reduziert. Dies ist für das Modul von Pollin zwingend erforderlich, alle anderen mir bekannten Module können auch mit 5V betrieben werden, funktionieren jedoch auch mit 3,3V.

Die restlichen Bauteile sind die Taster S1 und S2 für die Konfiguration der Uhr und die Stiftleiste J1. Letztere bleibt normalerweise ungenutzt. Es besteht aber die Möglichkeit, größere und leistungsstärkere Anzeigen an die Uhr anzuschließen. Dafür sind allerdings Treiber-ICs (z.B. ULN2803) erforderlich, die zwischen die Segmentausgänge und die LEDs geschaltet werden müssen. Dabei können die Ausgänge des Crumb128 direkt mit den Eingängen der Treiber-ICs verbunden werden, die LED-Vorwiderstände kommen dann zwischen die Treiber-Ausgänge und die LEDs. Dabei müssen die Widerstandswerte allerdings neu berechnet werden. Bei dieser Betriebsart ist es erforderlich, die Segmentausgänge invertiert anzusteuern und hier kommt die Stiftleiste J1 ins Spiel. Durch Stecken eines Jumpers auf die Kontakte 1-2 kann die Invertierung der Anzeigestellen D1-D4 und des Doppelpunktes aktiviert werden. Die Kontakte 3-4 haben die gleiche Funktion, wirken jedoch auf die Ausgänge der im nächsten Abschnitt beschriebenen Sekunden-Option.

Crumb128-2 Die Wohnraumuhr 2 kann auch in das Temperatur-Messsystem eingebunden werden. Sie hat dann die Funktionalität eines Anzeigemoduls und kann wahlweise einen oder zwei Sensorwerte im Wechsel mit der Uhrzeit anzeigen. Für den Datenempfang vom Sensormodul über Kabel wird hier der RS232-Transceiver des Crumb128 verwendet. Der Ausgang des Sensormoduls kann somit direkt mit dem Eingang des RS232-Transceivers verbunden werden (Anschluss 2 von Con4). Der RS232-Transceiver ist allerdings im Auslieferungszustand deaktiviert und muss durch eine Lötbrücke eingeschaltet werden. Dafür müssen die beiden Lötflächen J7 (RS232 Enable) auf dem Crumb128 mit einer Zinnbrücke verbunden werden (roter Kreis im Bild). Hier ist Vorsicht und eine ruhige Hand erforderlich, damit keine Verbindungen zu benachbarten Bauteilen hergestellt werden.

Wichtig: Bitte diese Brücke nur setzen, wenn Daten vom Sensormodul über Kabel empfangen werden sollen. In allen anderen Fällen (Funkverbindung oder nachfolgend beschriebene Sensor-Option) muss J7 offen bleiben.

SymbolSekunden-Option

Schaltung2

Dieser Schaltungsteil erweitert die 4-stellige Uhr um 2 kleinere Sechzehnsegment-Anzeigen (D101 und D102), die abhängig von der Hauptanzeige die Sekunde, den Wochentag, die zum Sensorwert passende Einheit oder auch eine Laufschrift anzeigen. Da hier insgesamt 34 Segmente angesteuert werden müssen, aber nur noch wenige Anschlüsse am Crumb128 zur Verfügung stehen, ist keine direkte Ansteuerung aller Segmente möglich. So sind nur die beiden Dezimalpunkte direkt am Hauptcontroller angeschlossen, während für die restlichen 32 Segmente eine Schieberegisterkette mit Pufferspeichern aus IC101-104 gebildet wird. Dabei gelangen die Daten seriell über die Leitungen SI und SCK in das Schieberegister, anschließend werden diese über einen Impuls an der Leitung RCK im Pufferspeicher abgelegt. Die Aktivierung und Helligkeitssteuerung der Segmente erfolgt über ein PWM-Signal an der Leitung ENA. Über die Vorwiderstände von 1k ergibt sich ein Segmentstrom von ungefähr 3mA. Die Kondensatoren C101-104 sollten über möglichst kurze Leitungen an den entsprechenden ICs platziert werden. Der Widerstand R135 sorgt für einen definierten High-Pegel an der Leitung ENA und verhindert beim Einschalten der Uhr ein kurzzeitiges Flackern der Anzeige.

SymbolSensor-Option

Schaltung3

Mit diesem Schaltungsteil können 2 Sensoren direkt an die Uhr angeschlossen werden. Möglich sind Kombisensoren für Temperatur und Luftfeuchtigkeit (DHT22, AM2302, DS2438/HIH-4000) oder reine Temperatursensoren (DS1820, DS18S20, DS18B20, DS1822). Da bei allen verwendeten Sensoren das Timing kritisch und mit dem PWM-Timing der Uhr schwer zu koordinieren ist, kommt hier ein weiterer Mikrocontroller ATtiny84A zum Einsatz. Dieser kommuniziert unabhängig von der Uhr mit den Sensoren, bereitet die ermittelten Daten in eine lesbare Form auf und sendet diese dann zyklisch über RS232 mit 9600 Baud an den Controller des Hauptmoduls. Die Funktion der Sensor-Option ist mit dem Sensormodul des Temperatur-Messsystems vergleichbar.

Die Sensoren werden an den Steckverbinder J201 angeschlossen und sind direkt mit dem Mikrocontroller IC201 verbunden. Dieser kommuniziert mit den Sensoren über die Anschlüsse PB0 (Bus1) und PB1 (Bus2), die Widerstände R201 und R202 dienen als Bus-Abschluss. Grundsätzlich wäre eine Busleitung völlig ausreichend gewesen, 2 Leitungen ermöglichen später den Anschluss von I²C-Sensoren. Nach der Bearbeitung der Sensordaten werden die aufbereiteten Messwerte im Klartext am Anschluss PB2 im RS232-Format mit 9600 Baud über die Leitung DAT zum Controller des Hauptmoduls gesendet. Die Leitung RES führt vom Hauptmodul über die Diode D201 zum Reset-Eingang von IC201. Hier wird bei jedem Start des Hauptmoduls ein kurzer Low-Impuls gesendet, um den Controller der Sensor-Option ebenfalls neu zu starten. Damit wird eine neue Sensorsuche ausgelöst und deren Ergebnis an das Hauptmodul gesendet.

Die Stiftleiste J202 hat eine spezielle Funktion. Der Hintergrund ist, dass IC201 mit einem internen Taktoszillator arbeitet, der nicht die Genauigkeit und Stabilität eines Quarz-Oszillators erreicht. Für die Abfrage der Sensoren reicht die Genauigkeit in jedem Fall aus, beim RS232-Sendesignal führen jedoch wenige Prozent Abweichung zu Übertragungsfehlern. Tritt ein solches Problem auf, dann lässt sich durch Stecken eines Jumpers auf die Kontakte 1-2 von J202 der RS232-Takt etwas erhöhen oder über die Kontakte 3-4 etwas vermindern. Mehr Informationen über die richtige Einstellung sind im Abschnitt Bedienung (USB-Steuerung) zu finden. Die übrigen Bauteile C201-202 dienen als Stützkondensator und sollten möglichst nah an J201 und IC201 angeordnet werden. Außerdem sollte noch der ISP-Anschluss J203 erwähnt werden, über diesen kann der Mikrocontroller programmiert werden. Eine Programmierung über den Bootloader des Hauptcontrollers ist leider nicht möglich.

Schaltung4 Die Sensor-Option erlaubt den Anschluss von 3 Sensortypen. Das nebenstehende Bild zeigt den Anschluss eines Kombisensors DHT22 oder AM2302 für Temperatur und Luftfeuchtigkeit. Dieser Sensortyp ist relativ preisgünstig und benötigt keine weiteren Bauteile. Während der Temperaturwert intern mit einem DS18B20 gemessen wird, kann man dem Luftfeuchtigkeitssensor nicht unbedingt vertrauen. Eines meiner Exemplare wurde möglicherweise falsch gelagert und zeigt einen viel zu niedrigen Wert an. Im Datenblatt wird zwar eine Prozedur beschrieben, die das Problem beheben soll, diese ist aber mit Hobby-Mitteln praktisch nicht durchführbar.

Schaltung5 Dieses Bild zeigt einen alternativen Kombisensor für Temperatur und Luftfeuchtigkeit. Diese Variante ist etwas teurer und ansonsten identisch mit dem Luftfeuchtigkeitssensor, der beim Temperatur-Messsystem verwendet wird. IC401 ist eigentlich ein Batterie/Akku-Monitor und enthält einen internen Temperatursensor. Außerdem wird ein integrierter AD-Konverter verwendet, um Betriebsspannung und Ausgangsspannung des Luftfeuchtigkeitssensors IC402 zu messen. D401 und C401 erzeugen die Betriebsspannung für IC401 und IC402 und gleichen Schwankungen aus. R401 und C402 haben eine ähnliche Funktion und mindern Schwankungen bei der Messung der Ausgangsspannung von IC402.

Schaltung6 Dieses Bild zeigt den Anschluss von 2 Temperatursensoren. Es ist auch möglich, beide Sensoren gemeinsam an Bus1 oder Bus2 anzuschließen. Damit reicht eine 2-adrige Leitung für den Anschluss beider Sensoren aus. Alternativ ist auch ein einzelner Sensor möglich, dieser kann dann wahlweise an Bus1 oder Bus2 angeschlossen werden.

SymbolHardware

Platine oben 1 Ich habe die komplette Uhr mit beiden Optionen aufgebaut und dafür eine Platinenfläche von 271mm x 127mm benötigt. Da die von mir favorisierten Lochrasterplatinen nicht in dieser Größe erhältlich sind, kommen 3 Platinen im Euro-Format (160mm x 100mm) zum Einsatz. Diese wurden zunächst zugeschnitten und an den Längsseiten mit Aluminium-Winkelprofil verschraubt. Das ergibt eine stabile Basis, auf der dann alle Bauelemente platziert werden können. Hier sollte man mit den LED-Anzeigen und dem Crumb128 beginnen. Man kann übrigens die kleinen LEDs auch nach unten auf eine Linie mit den großen LEDs setzen und das Crumb128 darüber anordnen, wenn das besser gefällt.

Ich habe versucht, die gesamte Uhr möglichst flach zu bauen. Dabei bestimmen die LED-Anzeigen die Höhe und alles andere darf diese Höhe nicht überschreiten. Hier musste ich allerdings einen Kompromiss eingehen und das Crumb128 mit den Stiftleisten fest einlöten. Einsteigern rate ich jedoch davon ab und empfehle, die mitbestellten Stift- und Buchsenleisten des Crumb128-Modul zu nutzen. Die LED-Anzeigen müssen dabei etwas höher gesetzt werden, wofür z.B. einreihige Buchsenleisten verwendet werden können. Auch ich habe diese Leisten verwendet, um die flacheren Anzeigen der Sekunden-Option auf die gleiche Höhe wie die großen Anzeigen zu bringen. Ganz genau passt es trotzdem nicht und so war es erforderlich, die großen LEDs ungefähr 1mm höher einzulöten. Dazu habe ich 1mm dicke Plastikstreifen unter die Ecken der Anzeigen gelegt (nicht auf dem Bild sichtbar).

Zu den restlichen Bauteilen: Oberhalb der Anzeige ist der DCF77-Empfänger mit der Antenne untergebracht. Rechts oben befinden sich die 4 Schieberegister-ICs der Sekunden-Option und direkt am Platinenrand die beiden Taster. Die Bauteile unter dem Crumb128-Modul gehören zum Spannungswandler und direkt links daneben ist das Poti zur Einstellung der LED-Spannung angeordnet. Weiter links befinden sich die Bauelemente der Sensor-Option. Zwischen der Stunden- und Minuten-Anzeige sind die beiden LEDs des Doppelpunktes platziert. Bei diesen wurde die Leuchtfläche flach abgeschliffen und das restliche Gehäuse mit schwarzer Farbe gestrichen. Leider ist die Leuchtfläche nicht optimal, hier sind LEDs mit flacher Oberseite vermutlich besser geeignet. Direkt unter dem Doppelpunkt ist der Lichtsensor angeordnet, der ebenfalls bis auf die Oberseite geschwärzt wurde. Rechts daneben befindet sich das Poti für die Einstellung der Helligkeitsregelung. Übrig bleibt noch der Steckverbinder unten links, an diesen werden später die Sensoren angesteckt.

Um Schrauben am Gehäuse zu vermeiden, habe ich mal etwas neues ausprobiert. Dazu wurde an jede Ecke des Platinenrahmens ein Neodym-Magnet im Format 5x5x5mm³ geklebt. Ein weiterer identischer Magnet befindet sich in jeder Gehäuseecke. So kann man die Platineneinheit ins Gehäuse einlegen und die Magnete halten diese fest. Die beiden großen Löcher links oben und unten sind notwendig, damit man mit einem Finger hineingreifen und die Platineneinheit wieder aus dem Gehäuse lösen kann.

Platine oben 2 Hier ist der rechte untere Teil der Platine etwas vergrößert dargestellt. Zu sehen sind Crumb128, die Spannungsversorgung für die LEDs und ein Teil der Sensor-Option.

Platine unten 1 Dieses Bild zeigt die Platineneinheit von unten. Hier sind jede Menge Verbindungen zu sehen, die aus 0,3mm Kupferlackdraht hergestellt worden sind. Etwas dickere Kupferdrähte wurden für Masse- und Stromleitungen verwendet. Alle LED-Vorwiderstände wurden aus Platzgründen im SMD-Format auf dieser Seite der Platine untergebracht. Hier können sie direkt neben die LED-Anschlüsse gelötet werden.

An die 4 aufgeklebten Muttern auf dem Aluminium-Profil wird später die Gehäuse-Rückwand angeschraubt. In diesem Fall stören die Schrauben nicht, da die Rückwand normalerweise nicht sichtbar ist.

Platine unten 2 Auf diesem Bild ist ein Teil der Platinenunterseite etwas vergrößert dargestellt. Es zeigt die LED-Anschlüsse der Sekunden-Option und die Platzierung der Vorwiderstände. Auf der rechten Seite sind auch einige Anschlüsse von einer der großen LED-Anzeigen mit den Vorwiderständen zu sehen.

Rahmen unten Dieses Bild zeigt die in einen Holzrahmen eingebaute Platineneinheit. Der Rahmen wurde aus 6mm Sperrholz angefertigt und ist bei meiner Uhr 25mm hoch. Auf der (von vorn gesehen) rechten Seite wurden 2 Löcher für die Taster gebohrt und außerdem ein viereckiger Ausschnitt für den USB-Anschluss ausgesägt. Wie schon weiter oben beschrieben, wird die Platineneinheit nur durch 4 Neodym-Magnete im Rahmen gehalten. Bei der Bemessung der Rahmengröße sollte man bedenken, dass die Platine wegen der Taster immer schräg eingesetzt und herausgenommen werden muss.

Unterseite Auf diesem Bild wurde eine Platte aus 3mm Plexiglas als Rückwand an die Platineneinheit geschraubt. Leider spiegelt sich alles mögliche auf dem Foto, aber es ist eine gleichmäßige rote Fläche. Die beiden Löcher dienen als Wandaufhängung und sind an Stellen gebohrt, wo sich keine Bauteile auf der darunter liegenden Platine befinden.

Übrigens, ich habe die Frontplatte und auch die Rückwand bei Modulor (siehe Links, Software) passend zuschneiden lassen. Für die Rückwand wurde 3mm starkes transluzentes rotes Plexiglas und für die Frontplatte 3mm starkes transparentes rotes Plexiglas verwendet.

Oberseite So sieht dann die fertige Uhr aus. Durch die transparente rote Plexiglas-Front sieht man nur noch die leuchtenden Segmente, was ein sehr gutes Ablesen ermöglicht. Bei der alten Wohnraumuhr hatte ich klares Plexiglas verwendet, welches zwar sehr technisch aussieht, das Ablesen aber deutlich erschwert. Die Frontplatte ist übrigens fest mit dem Rahmen verklebt.

Es stört übrigens nicht, wenn sich der Helligkeitssensor hinter der farbigen Frontplatte befindet. Über das Poti R36 lässt sich auch hier eine gute Einstellung finden. Wie immer beim Fotografieren von LEDs zeigen sich auch hier einige Schwächen der Kamera. Während die LEDs des Doppelpunktes wirklich einen hellen Punkt in der Mitte haben, sind die Segmente der kleinen LEDs im Original gleichmäßig ausgeleuchtet.

Hinweis: Wer nicht selbst ein Gehäuse bauen möchte, findet in der Stückliste 3 Vorschläge für Kunststoffgehäuse.

Noch ein Tipp: Für die Stromversorgung empfiehlt es sich, ein möglichst kurzes USB-Kabel zu verwenden. Wenn das Kabel zu lang oder von schlechter Qualität ist, dann treten Spannungsschwankungen auf der 5V-Leitung auf und der A/D-Konverter des ATmega128A reagiert darauf sehr empfindlich. In der Praxis führt dies zu Helligkeitsschwankungen der Anzeige, die besonders bei dunkler Umgebung auffallen. Man kann diesen Effekt allerdings mit einer Einstellung (Menü 2 - Helligkeitsmodus) mindern.

SymbolSoftware

Die Wohnraumuhr 2 besteht (wie schon beschrieben) aus dem Hauptmodul und 2 Optionen. Das Hauptmodul verwendet einen Mikrocontroller ATmega128A, der alle Funktionen der Uhr steuert und das schließt auch die Sekunden-Option ein. Die Sensor-Option hat einen eigenen Mikrocontroller ATtiny84A und dieser steuert die Kommunikation mit den Sensoren. Bei Vollausbau der Wohnraumuhr sind also 2 Software-Pakete erforderlich und beide wurden vollständig in C geschrieben.

SymbolHauptmodul

Der Quelltext für den Mikrocontroller ATmega128A des Hauptmoduls besteht aus den folgenden 5 Dateien:

main.centhält das komplette Hauptprogramm
functions.henthält zusätzliche Funktionen (String-Verarbeitung, USB-Kommunikation, Konvertierungen)
interrupt.henthält alle Interrupt-Funktionen (serielle Kommunikation, PWM-Anzeigesteuerung, Zeitzählung, DCF77, Taster-Abfrage)
strings.henthält eine Stringliste in deutscher und englischer Sprache
tables.henthält Segment-Tabellen für die Anzeige und verschiedene andere Tabellen

main.c:
Der Quelltext beginnt zunächst mit einer Liste von Bibliotheken, die vom Programm benötigt werden. Anschließend werden diverse Konstanten definiert, die auch modifiziert werden können. Auch die Belegung des EEPROM-Speichers wird mit Konstanten realisiert, die man aber nicht ändern sollte. Danach folgt ein großer Definitionsblock für Variablen mit viel Kommentartext und die 4 H-Dateien aus der Tabelle weiter oben werden eingebunden. Darunter beginnt der eigentliche Programmteil, der in 2 Blöcke unterteilt ist - die Initialisierung und die Hauptprogrammschleife. Völlig unabhängig vom eigentlichen Programm gibt es noch einen weiteren Block, der nur beim Systemstart kurz aktiv wird: der Bootloader. Dieser wurde als fertiges Programm verwendet und ist deshalb nicht im Quelltext zu finden.

Initialisierung: Diese wird bei jedem Systemstart oder Reset ausgeführt und stellt zunächst alle I/O-Ports ein, konfiguriert USARTs und Timer für die benötigte Funktion und aktiviert außerdem den Analog-Digital-Konverter. Der nachfolgende Block liest alle Einstellungen aus dem EEPROM-Speicher und prüft die Werte auf Plausibilität. Nicht zulässige Werte oder leere Speicherzellen werden dabei auf eine Standard-Einstellung gesetzt. Somit ergibt sich bei Verwendung eines fabrikneuen Mikrocontrollers automatisch eine sinnvolle Grundeinstellung der Uhr. Weiterhin werden noch einige Variablen in eine Voreinstellung gebracht und anschließend die Hauptprogrammschleife gestartet.

Hauptprogrammschleife: Dieser Programmteil erledigt alle zyklischen Aufgaben der Wohnraumuhr und läuft in einer endlosen Schleife. Den Anfang macht die Anzeigesteuerung und hier wird in Abhängigkeit von Zeitpunkt und verfügbaren Daten festgelegt, welche Information angezeigt werden soll (Zeit, Datum, Sensor 1, Sensor 2 oder Konfigurations-Menü). Der folgende große Block bereitet die Daten für die Anzeige auf und speichert die Segment-Belegung in einem Puffer ab. Diese Daten werden dann später von einer Interrupt-Funktion an die Anzeigen ausgegeben. Im nächsten Abschnitt erfolgt die Auswertung der empfangenen DCF77-Daten und zwar immer dann, wenn vom Timer3-Interrupt ein vollständig empfangenes Datenpaket gemeldet wird. Der DCF77-Datensatz wird dann dekodiert und ein Plausibilitätstest durchgeführt. Zur Sicherheit schließt sich noch ein Vergleich der Zeitinformation mit den beiden vorherigen Datensätzen an und wenn alles stimmt, wird die Zeit übernommen.

Der folgende Abschnitt kümmert sich um die über RS232 oder von der Sensor-Option empfangenen Daten. Hier werden die gewünschten Sensorwerte herausgefiltert, geprüft und in einem Puffer zur späteren Ausgabe abgelegt. Weiterhin erfolgt hier die Sensor-Autokonfiguration. Dabei werden beim Systemstart von der Sensor-Option die angeschlossenen Sensoren ermittelt und über ein spezielles Datenpaket an das Hauptmodul gesendet. Dieses sorgt dann für die richtige Einstellung der Uhr zur Darstellung der Sensorwerte. Ein weiterer Abschnitt steuert die USB-Kommunikation. Hier werden zum einen alle über RS232 empfangenen Sensorwerte für Diagnosezwecke direkt über USB wieder ausgegeben und zum anderen eine Menüsteuerung realisiert. Wird die Uhr an einen PC angeschlossen, dann kann man über ein Terminalprogramm die empfangenen Sensorwerte mitlesen und außerdem über eine Menüsteuerung die Wohnraumuhr konfigurieren.

Der nächste Abschnitt wertet die beiden Taster aus und auch hier gibt es eine Menüsteuerung zur Konfiguration der Uhr. Es folgen noch einige kleinere Programmteile, die verschiedene Timeout-Zähler bedienen und bei deren Ablauf bestimmte Funktionen ausgeführt werden. Den Abschluss der Hauptprogrammschleife bildet ein Block, der bei Änderungen in der Konfiguration alle Daten im EEPROM der Uhr sichert.

Bootloader: Dies ist ein spezielles Programm, welches nur beim Systemstart aufgerufen wird. Es wird in einem abgegrenzten Bereich des Flash-Speichers abgelegt und hat die Aufgabe, eine serielle Verbindung zu einem PC herzustellen und auf Kommandos zu warten. Klappt der Verbindungsaufbau, dann kann auf diesem Weg eine neue Uhren-Software in den Flash-Speicher übertragen werden. Kommt keine Verbindung zustande, dann wird der Bootloader nach ungefähr 2-3 Sekunden wieder verlassen und das normale Programm der Wohnraumuhr gestartet. Den Bootloader habe ich nicht selbst entwickelt und als fertiges kostenloses Programm von der Firma Chip45 übernommen.

funktions.h:
Diese Datei enthält über 20 Funktionen, die vom Hauptprogramm benötigt werden. Den Anfang machen 2 EEPROM-Funktionen und einige Funktionen für die Ausgabe von Strings und einzelnen Zeichen. Hier schließen sich eine Reihe von Funktionen an, die für das Konvertieren und Senden von Daten über den USB-Anschluss notwendig sind. Weiterhin gibt es eine Funktion für die Wochentagsberechnung und die Sommerzeit-Umstellung. Der Rest sind diverse Konvertierungen, die immer wieder benötigt werden.

interrupt.h:
In der Wohnraumuhr 2 werden insgesamt 5 Interrupt-Funktionen verwendet:

Die PWM-Helligkeitssteuerung läuft folgendermaßen ab: Alle 977µs wird durch den Timer1 ein Interrupt ausgelöst. Daraufhin gibt die zugehörige Interrupt-Funktion die aktuelle Segment-Belegung an alle Anzeigen aus und schaltet die Anzeigen damit ein. Außerdem wird der gemittelte Helligkeitswert gelesen. Ist dieser kleiner als 24, was einem relativ kurzen PWM-Impuls entspricht, dann wird über kleine Warteschleifen die Impulszeit abgewartet und dann sofort die Anzeige durch Abschalten aller Segmente wieder ausgeschaltet. Bei größeren Helligkeitswerten ab 24 wird nicht gewartet und stattdessen der Timer0 mit einem Zähler geladen. Nach Ablauf des Zählers von Timer0 wird wiederum ein Interrupt ausgelöst und die zugehörige Funktion schaltet die Anzeige wieder aus. So kann bei längeren PWM-Impulsen die Zeit zwischen dem Ein- und Ausschalten der LEDs vom Mikrocontroller für andere Aufgaben genutzt werden.

strings.h:
In dieser Datei befinden sich 2 lange Listen mit Texten, die für die LED-Anzeige sowie für die Menüsteuerung über USB verwendet werden. Eine Liste ist in Deutsch, die andere und Englisch verfasst. Grundsätzlich sind auch andere Sprachversionen möglich. Zu jeder Liste gehört noch eine Tabelle, in der die Anfangsadresse jedes Strings enthalten ist.

tables.h:
Diese Datei enthält verschiedene Listen und Tabellen. Die ersten beiden Listen sind wichtig für die Ansteuerung der LED-Anzeigen, hier sind die Segment-Belegungen für die Siebensegment- und die Sechzehnsegment-Anzeigen festgelegt. Die nachfolgende Tabelle ist für die Konvertierung von Umlauten notwendig und wird bei der Menüsteuerung über USB benötigt. Die folgenden beiden Listen enthalten die Anzahl der Tage in einem normalen Jahr und in einem Schaltjahr. Über die nächste Tabelle wird die Anzeige gesteuert. Hier ist festgelegt, wie die zur Verfügung stehenden Daten in einem 10-Sekunden-Intervall angezeigt werden. Die folgende Liste wird für die Einstellung der Helligkeitsschwelle bei der Tag/Nacht-Umschaltung verwendet. Eine weitere Liste enthält den Zeichenvorrat, der bei der Eingabe von Text verwendet wird. Die letzte Liste enthält die Nummern der Scrolltexte für die Menüsteuerung der Uhr.

SymbolSensor-Option

Der Quelltext für den Mikrocontroller ATtiny84A der Sensor-Option besteht aus den folgenden 3 Dateien:

main.centhält das komplette Hauptprogramm
functions.henthält zusätzliche Funktionen (RS232-Kommunikation, Kommunikation mit den Sensoren, Konvertierungen)
tables.henthält eine CRC8-Tabelle

main.c:
Der Quelltext beginnt auch hier mit einer Liste von Bibliotheken, die vom Programm benötigt werden. Anschließend werden diverse Konstanten und Variablen definiert und die beiden H-Dateien aus der Tabelle weiter oben eingebunden. Darunter beginnt der eigentliche Programmteil, der wiederum in 2 Blöcke unterteilt ist - die Initialisierung und die Hauptprogrammschleife.

Initialisierung: Diese wird bei jedem Systemstart oder Reset ausgeführt und stellt zunächst alle benötigten I/O-Ports ein. Nach einer kurzen Wartezeit wird geprüft, ob ein Sensor vom Typ DHT22 oder AM2302 angeschlossen ist. Falls nicht, wird anschließend eine 1-Wire-Sensorsuche gestartet. Das Ergebnis der Sensorsuche wird dann über einen speziellen Datensatz mit 6 Zeichen über RS232 gesendet. Damit informiert die Sensor-Option das Hauptmodul über die aktuelle Sensorkonfiguration. Anschließend beginnt die Hauptprogrammschleife mit ihrer Arbeit.

Hauptprogrammschleife: Dieser Programmteil erledigt alle zyklischen Aufgaben der Sensor-Option und läuft in einer endlosen Schleife. Abhängig von der aktuellen Konfiguration werden nun Messungen an den Sensoren gestartet und die Ergebnisse ausgelesen. Je nach Sensortyp sind unterschiedliche Sensorabfragen und Rechenwege erforderlich, um den Temperaturwert in Zehntel-Grad und den Luftfeuchtigkeitswert in Prozent zu ermitteln. Teilweise ist es erforderlich, den Mittelwert aus 8 aufeinander folgenden Messungen zu bilden, um Schwankungen auszugleichen. Die fertigen Messwerte werden dann im gleichen Format wie beim Temperatur-Messsystem über RS232 ausgegeben. Das hat den Vorteil, dass die Software des Hauptmoduls ohne Anpassungen sowohl die Daten des Temperatur-Messsystems als auch die Daten der Sensor-Option lesen kann. Ein kompletter Zyklus mit Messung und Datenausgabe dauert etwa 5 Sekunden.

functions.h:
Diese Datei enthält viele Funktionen, die vom Hauptprogramm benötigt werden. Die erste Funktion gibt ein Zeichen über RS232 aus, wobei hier der Controller selbst die TX-Leitung bedienen muss, da kein UART vorhanden ist. Eine weitere wichtige Funktion wandelt einen 16-Bit-Messwert in ASCII um. Es folgt eine Gruppe von Funktionen, die für die 1-Wire-Kommunikation benötigt werden, wobei die Funktion für die Sensorsuche relativ umfangreich ist. Den Abschluss bildet eine Funktion zum Lesen des DHT22-Sensors.

tables.h:
Diese Datei enthält nur eine Liste mit 256 Werten, die für die CRC-Prüfung der empfangenen 1-Wire-Daten benötigt werden.

SymbolInbetriebnahme

Zur Inbetriebnahme der Wohnraumuhr 2 sind mehrere Schritte erforderlich, wobei unter bestimmten Umständen einige Schritte entfallen können:

SchrittBeschreibungHinweis
1Drehen des Trimmpotis R42 auf Mittelstellung
2Installation des Bootloaders auf dem Hauptmodul und Setzen der Fuse-Bits mittels Programmiergerät über den ISP-Anschluss des Crumb128entfällt, wenn das Crumb128 mit vorinstalliertem Bootloader bestellt wird
3Installation der Software auf dem Hauptmodul mittels Bootloader über den USB-Anschluss des Crumb128
4Wenn die Uhren-Software läuft, Einstellen der Spannung an C6 mit R42 auf 9,5V
5Installation der Software auf der Sensor-Option und Setzen der Fuse-Bits mittels Programmiergerät über den ISP-Anschluss J203nur notwendig, wenn die Sensor-Option vorhanden ist
6Kontrolle der Datenübertragung zwischen Sensor-Option und Hauptmodulnur notwendig, wenn die Sensor-Option vorhanden ist

Im Folgenden Abschnitt werden die Schritte noch einmal ausführlicher beschrieben.

SymbolSchritt 1 - Drehen des Trimmpotis R42 auf Mittelstellung

Dieser Schritt sorgt dafür, dass die LED-Spannung in der Nähe des Sollwertes liegt. Die genaue Einstellung erfolgt später, wenn die Software auf dem Hauptmodul installiert wurde.

SymbolSchritt 2 - Installation des Bootloaders auf dem Hauptmodul

Dieser Schritt ist normalerweise nicht erforderlich, wenn das Crumb128-Modul mit vorinstalliertem Bootloader bestellt wurde. Die Inbetriebnahme kann also mit dem Schritt 3 fortgesetzt werden. Für den Fall, dass es Probleme beim Schritt 3 gibt, beschreibe ich hier die Prozedur zur Installation des Bootloaders. Hierfür wird die folgende Datei aus dem Software-Paket des Hauptmoduls wohnuhr2-atmega128a-v101.zip benötigt:

Wohnuhr2\Bootloader\chip45boot2_atmega128_uart0_v2.9Q.hex

Weiterhin wird ein Programmiergerät (z.B. mySmartUSB light) benötigt. Dieses wird über das 6-polige Flachbandkabel mit dem ISP-Anschluss des Crumb128 verbunden und anschließend an den PC angesteckt. Außerdem muss der USB-Anschluss des Crumb128 zwecks Stromversorgung an ein Netzteil oder an einen freien USB-Anschluss des PC angeschlossen werden. Beim erstmaligen Anschluss der Wohnraumuhr bzw. des Crumb128 an den PC wird automatisch ein Treiber installiert (Silicon Labs CP210x USB to UART Bridge).

Crumb128-3 Verwendet man das myAVR ProgTool, dann sehen die Einstellungen so aus wie im Bild nebenan. Wichtig ist der Haken bei Flash brennen: und die Auswahl der richtigen Datei (chip45boot2_atmega128_uart0_v2.9Q.hex) sowie der Haken bei Fuses brennen: und die folgenden 3 Werte:

Low: 0xBF
High: 0xDC
Ext.: 0xFF

Bitte nicht vergessen, vorher auf die Seite Hardware zu wechseln. Hier muss der richtige Programmer und dessen Port ausgewählt werden. Normalerweise erkennt das myAVR ProgTool den angeschlossenen Programmer und zeigt dessen Werte an. Über das Fragezeichensymbol neben dem Port kann man eine Status-Abfrage starten und hier sollte kontrolliert werden, dass die Stromversorgung beim Brennen inaktiv ist sowie die Spannung auf 5V steht. Gegebenenfalls lassen sich die Parameter durch Anklicken der blau markierten Textstellen ändern. Hier muss auch der angeschlossene Mikrocontroller richtig erkannt werden (ATmega128).

Passt alles, dann wird über den (im Bild nicht sichtbaren) Button Brennen der Programmiervorgang gestartet, der hoffentlich fehlerfrei durchläuft. Danach kann das Programmiergerät und die Stromversorgung wieder entfernt werden. Die „richtige“ Software für die Wohnraumuhr wird im nächsten Schritt mithilfe des soeben installierten Bootloaders in das Crumb128-Modul geschrieben.

SymbolSchritt 3 - Installation der Software auf dem Hauptmodul

Für diesen Schritt muss die Wohnraumuhr über den USB-Anschluss des Crumb128 mit dem PC verbunden werden. Beim ersten Kontakt mit dem PC wird dabei ein Treiber installiert (Silicon Labs CP210x USB to UART Bridge) und ein virtueller COM-Port eingerichtet. Weiterhin benötigen wir von der Homepage des Bootloader-Entwicklers chip45 das Programm chip45boot2 GUI V1.13 (oder neuer) für Windows. Es ist auch möglich, den Bootloader mit Mac OS oder Linux zu verwenden. Entsprechende Links und Hinweise sind auf der Homepage von chip45 zu finden.

Bootloader 1 Sind alle Voraussetzungen erfüllt, dann schauen wir kurz in den Geräte-Manager von Windows. Hier muss der im Bild markierte Eintrag vorhanden sein, wobei die zugewiesene COM-Port-Nummer vom Bild abweichen kann. Die COM-Port-Nummer merken wir uns, denn die ist wichtig für die nächste Aktion.

Bootloader 2 Wir starten nun das Programm chip45boot2 GUI V1.13 und stellen folgende Parameter ein:

Select COM Port - Hier wird der im Geräte-Manager angezeigte COM-Port ausgewählt (hier COM6).
Baudrate - 230400 auswählen.
Flash Hexfile - Hier wird über den Button Select Flash Hexfile die folgende Datei aus dem Software-Paket des Hauptmoduls ausgewählt:

Wohnuhr2\Wohnuhr2\Release\Wohnuhr2.hex

Weitere Einstellungen sind nicht erforderlich.

Bootloader 3 Jetzt wird auf den Button Connect to Bootloader geklickt und anschließend sollte das Status-Feld rechts unten mit dem Hinweis Connected! grün aufleuchten.

Klappt der Verbindungsaufbau nicht, dann bitte nochmals auf Connect to Bootloader klicken und anschließend sofort mit einem spitzen Gegenstand den winzigen Reset-Taster des Crumb128 drücken. Dieser befindet sich zwischen der USB-Buchse und dem Quarz. Diese Prozedur ist übrigens nur bei der ersten Installation der Software notwendig. Später erkennt die laufende Uhrensoftware eine Anfrage an den Bootloader und startet diesen dann automatisch.

Bootloader 4 Nach dem Herstellen der Verbindung kann nun die Software in den Mikrocontroller übertragen werden. Dazu wird einfach auf den Button Program Flash geklickt und die Übertragung beginnt. Dieser Zustand ist am gelben Status-Feld und dem Hinweis Uploading zu erkennen. Der gesamte Vorgang dauert ungefähr 20 Sekunden, anschließend färbt sich das Status-Feld grün und die Meldung Done! erscheint.

Damit ist die Installation abgeschlossen und chip45boot2 GUI V1.13 kann über den Button Exit beendet werden. Dabei wird im Mikrocontroller der Bootloader beendet und die Uhren-Software gestartet. Die Uhr sollte nun für 5 Sekunden die Versionsnummer anzeigen und anschließend zur Zeitanzeige wechseln.

SymbolSchritt 4 - Einstellen der LED-Spannung

Da die Spannung für die 4 LED-Anzeigen des Hauptmoduls durch die Uhrensoftware eingeschaltet wird, ist erst jetzt die genaue Einstellung möglich. Für diesen Schritt wird ein Messgerät an den Kondensator C6 angeschlossen und mit R42 eine Spannung von 9,5V eingestellt.

SymbolSchritt 5 - Installation der Software auf der Sensor-Option

Die Schritte 5 und 6 sind nur erforderlich, wenn die Uhr mit der Sensor-Option aufgebaut wurde, anderenfalls ist die Inbetriebnahme an dieser Stelle beendet.

Im Gegensatz zum Hauptmodul ist bei der Sensor-Option keine Bootloader-Funktion vorhanden. Hier ist also immer ein Programmiergerät erforderlich, um die Software zu installieren oder zu aktualisieren. Zunächst benötigen wir das Software-Paket für die Sensor-Option wohnuhr2-attiny84a-v100.zip und entpacken die folgende Datei:

Wohnuhr2-Sensor\Wohnuhr2-Sensor\Release\Wohnuhr2-Sensor.hex

Weiterhin benötigen wir ein Programmiergerät (z.B. mySmartUSB light). Dieses wird über das 6-polige Flachbandkabel mit dem ISP-Anschluss der Sensor-Option J203 verbunden und anschließend an den PC angesteckt. Außerdem muss der USB-Anschluss des Crumb128 zwecks Stromversorgung mit einem Netzteil oder einem freien USB-Anschluss des PC verbunden werden.

Sensor-Option Verwendet man das myAVR ProgTool, dann sehen die Einstellungen so aus wie im Bild nebenan. Wichtig ist der Haken bei Flash brennen: und die Auswahl der richtigen Datei (Wohnuhr2-Sensor.hex) sowie der Haken bei Fuses brennen: und die folgenden 2 Werte:

Low: 0xE2
High: 0xDD

Bitte nicht vergessen, vorher auf die Seite Hardware zu wechseln. Hier muss der richtige Programmer und dessen Port ausgewählt werden. Normalerweise erkennt das myAVR ProgTool den angeschlossenen Programmer und zeigt dessen Werte an. Über das Fragezeichensymbol neben dem Port kann man eine Status-Abfrage starten und hier sollte kontrolliert werden, dass die Stromversorgung beim Brennen inaktiv ist sowie die Spannung auf 5V steht. Gegebenenfalls lassen sich die Parameter durch Anklicken der blau markierten Textstellen ändern. Hier muss auch der angeschlossene Mikrocontroller richtig erkannt werden (ATtiny48).

Passt alles, dann wird über den (im Bild nicht sichtbaren) Button Brennen der Programmiervorgang gestartet, der hoffentlich fehlerfrei durchläuft. Danach kann das Programmiergerät und die Stromversorgung wieder entfernt werden.

Hinweis: Falls es zu einem späteren Zeitpunkt erforderlich sein sollte, eine neue Software auf der Sensor-Option zu installieren, dann muss der komplette Schritt 5 wiederholt werden - mit einem Unterschied: Es ist nicht erforderlich, die Fuse-Bits erneut zu programmieren. Bei Verwendung des myAVR ProgTool muss also nur der Haken bei Flash brennen: gesetzt und die richtige Hex-Datei ausgewählt werden.

SymbolSchritt 6 - Kontrolle der Datenübertragung zwischen Sensor-Option und Hauptmodul

Für diesen Schritt muss die Wohnraumuhr über den USB-Anschluss des Crumb128 mit dem PC verbunden werden. Alles weitere ist im Abschnitt Bedienung (USB-Steuerung) beschrieben.

SymbolBedienung

SymbolAnzeige

Zunächst einige Worte über die Anzeige der Wohnraumuhr 2. Trotz der begrenzten Möglichkeiten der Sieben- und Sechzehnsegment-LEDs lassen sich viele Informationen darstellen. So ist es möglich, nicht nur die Uhrzeit, sondern auch das Datum und 2 Sensorwerte anzuzeigen. Auch die Versionsnummer der installierten Software wird beim Einschalten der Uhr für einige Sekunden sichtbar. Die folgende Tabelle zeigt eine Übersicht über die Möglichkeiten:

AnzeigemodusBeispiel ohne
Sekunden-Option
Beispiel mit
Sekunden-Option
Bemerkung
Uhrzeit23:4723:47 29 Der Doppelpunkt zwischen Stunde und Minute blinkt im Sekundentakt.
Datum30.11.30.11. Do. Das Datum wird nur angezeigt, wenn eine gültige Zeit über DCF77 empfangen oder die Uhr manuell gestellt wurde.
Sensor 121.721.7 °C Der Sensorwert 1 wird nur angezeigt, wenn ein entsprechender Datensatz empfangen wurde und dessen Wert nicht älter als 2 Minuten ist.
Sensor 252.52. % Der Sensorwert 2 wird nur angezeigt, wenn ein entsprechender Datensatz empfangen wurde und dessen Wert nicht älter als 2 Minuten ist.
Version1.011.01 V. Die Versionsnummer erscheint für 5 Sekunden beim Einschalten der Uhr.

Außer der Version wechseln die Anzeigemodi automatisch in einem 10-Sekunden-Zyklus. Dabei wird vor Beginn jedes Zyklus geprüft, welche Informationen vorliegen (Datum und Sensorwerte) und anschließend die entsprechende Zyklus-Variante aus der folgenden Tabelle ausgewählt:

Zyklus-VarianteSekundeBemerkung
0123456789
1UhrzeitUhrzeitUhrzeitUhrzeit UhrzeitUhrzeitUhrzeitUhrzeit UhrzeitUhrzeitkeine Daten vorhanden
2UhrzeitUhrzeitSensor 1Sensor 1 UhrzeitUhrzeitUhrzeitSensor 1 Sensor 1Uhrzeitnur Sensorwert 1 vorhanden
3UhrzeitUhrzeitSensor 2Sensor 2 UhrzeitUhrzeitUhrzeitSensor 2 Sensor 2Uhrzeitnur Sensorwert 2 vorhanden
4UhrzeitUhrzeitSensor 1Sensor 1 Sensor 1Sensor 2Sensor 2Sensor 2 UhrzeitUhrzeitbeide Sensorwerte vorhanden
5UhrzeitUhrzeitDatumDatum UhrzeitUhrzeitUhrzeitDatumDatum Uhrzeitnur Datum vorhanden
6UhrzeitUhrzeitDatumDatum DatumSensor 1Sensor 1Sensor 1 UhrzeitUhrzeitnur Datum und Sensor 1 vorhanden
7UhrzeitUhrzeitDatumDatum DatumSensor 2Sensor 2Sensor 2 UhrzeitUhrzeitnur Datum und Sensor 2 vorhanden
8UhrzeitUhrzeitDatumDatum Sensor 1Sensor 1Sensor 2Sensor 2 UhrzeitUhrzeitalle Daten vorhanden

Die Uhr kennt außerdem noch einen Nachtmodus. Dieser ist jedoch nicht von der Zeit abhängig und wird aktiviert, wenn die Helligkeit einen bestimmten Wert unterschreitet. Während des Nachtmodus lassen sich wahlweise das Datum, der Sensorwert 1 und/oder der Sensorwert 2 ausblenden. Auch der Nachtzustand wird zu Beginn eines 10-Sekunden-Zyklus geprüft und fließt dann in die Auswahl der Variante aus der oben stehenden Tabelle ein. Der Schwellwert für die Tag/Nacht-Umschaltung ist in 10 Stufen einstellbar. Weiterhin wird sichergestellt, dass sich während der Anzeige von Sensordaten keine Werte ändern. Wird also während der Anzeige eines Sensorwertes ein Datensatz mit einem neuen Wert empfangen, dann erscheint dieser erst im nächsten Zyklus.

Die Uhr ist mit einem DCF77-Empfänger ausgestattet und empfängt ständig das Zeitsignal im Hintergrund. In den meisten Fällen wird allerdings der Empfang wegen der PWM-Helligkeitssteuerung stark gestört und es ist keine Zeitsynchronisierung möglich. Aus diesem Grund wird die Anzeige zu einer bestimmten Zeit komplett abgeschaltet, um wenigstens einmal am Tag eine genaue Zeitinformation zu empfangen. Das gleiche passiert 2 Minuten nach dem Einschalten der Uhr. Während der Abschaltung bleibt nur der rechte Dezimalpunkt der Sekunden-Option aktiv und zeigt das empfangene DCF77-Signal direkt an. Wird die Uhr ohne Sekunden-Option aufgebaut, dann gibt es leider keine Möglichkeit zur direkten Anzeige des DCF77-Signals. Benötigt man zur Fehlersuche dieses Signal, dann kann man provisorisch an den Anschluss Con2-22 des Crumb128 eine LED mit Vorwiderstand 1k nach +5V schalten.

Der rechte Dezimalpunkt der Minutenstelle hat während der Anzeige der Uhrzeit noch eine Zusatzfunktion. Beim Einschalten der Uhr blinkt dieser und weist darauf hin, dass die Uhr noch keine gültige Zeit hat. Sobald die Uhr manuell gestellt oder über das DCF77-Signal synchronisiert wird, schaltet sich der Dezimalpunkt wieder aus. Neben dem Blinken kann der Dezimalpunkt auch dauernd leuchten. Das passiert immer dann, wenn die Uhr über DCF77 synchronisiert wurde und danach über 25 Stunden kein DCF77-Signal empfängt. Das ist aber nicht kritisch und verschwindet bei der nächsten Synchronisierung wieder. Bei manueller Zeiteinstellung wird die Überwachung des DCF77-Signals übrigens ganz ausgeschaltet und erst wieder aktiviert, sobald eine Synchronisierung stattgefunden hat.

SymbolMenüsteuerung

Für die Bedienung der Wohnraumuhr sind 2 Taster vorgesehen. Diese werden im Normalbetrieb nicht benötigt und können durchaus auch versteckt auf der Rückseite angebracht werden. Mit diesen Tastern wird über eine Menüsteuerung die Uhr konfiguriert und bei Bedarf manuell gestellt. Anstatt der Stunde erscheint dann die Menü-Nummer auf der Anzeige und die Minutenstelle wird zur Parameteranzeige. Ist die Sekunden-Option installiert, dann erscheint hier eine Laufschrift mit der Funktion des gewählten Menüs. Über den Taster 1 wird die Konfiguration gestartet und zum nächsten Menü geschaltet, mit dem Taster 2 wird der Parameterwert geändert und gleichzeitig auch gespeichert. Eine Ausnahme sind hier die Menüs für die Zeiteinstellung - hier werden die eingestellten Parameter zunächst zwischengespeichert und erst das letzte Menü übernimmt die Zeit. Für die gesamte Menüsteuerung gilt: Wird 2 Minuten lang kein Taster gedrückt, dann wechselt die Uhr wieder in die normale Anzeige zurück.

Beide Taster unterscheiden zwischen einem kurzen Tastendruck (kleiner als 1 Sekunde) und einem langen Tastendruck (größer als 1 Sekunde). Die folgende Tabelle zeigt die verschiedenen Möglichkeiten:

TasterAktion bei kurzem TastendruckAktion bei langem Tastendruck
1Wechsel von der Normalanzeige in die Menüsteuerung,
Wechsel zum nächsten Menü,
Wechsel vom letzten Menü in die Normalanzeige
direkter Wechsel zur Zeiteinstellung (Menü 20)
2Erhöhen des Parameterwertes um 1schnelles Erhöhen des Parameterwertes, nicht in allen Menüs verfügbar

Bei allen Menüs wird auf der Stundenanzeige die Nummer oder der Name des gerade gewählten Menüs dargestellt. Der zu ändernde Parameter erscheint immer blinkend (zweimal pro Sekunde) auf der Minutenanzeige. Wurde die Uhr mit der Sekunden-Option aufgebaut, dann zeigt diese zusätzlich über eine Laufschrift die aktuelle Funktion des Menüs. Es gibt allerdings eine Ausnahme: Die Menüs 10 und 11 betreffen eine Einstellung, welche nur auf der Sekunden-Option funktioniert. Hier erscheint der zu ändernde Parameter blinkend auf der Sekundenanzeige. Auf der Minutenanzeige blinkt in diesem Fall nur ein Minus-Zeichen, damit man ohne Sekunden-Option erkennt, dass hier nichts einzustellen ist.

Die folgende Übersicht beschreibt ausführlich die gesamte Menüsteuerung.

Menü 1 - Sprache

Menü-Anzeige:01.
Wertebereich:0 ... 1
Voreinstellung:0
Laufschrift:SPRACHE/LANGUAGE
Beschreibung:Mit dieser Einstellung wird die Sprache für die Wochentage und Menütexte festgelegt: 0 - Deutsch, 1 - Englisch.

Menü 2 - Helligkeitsmodus

Menü-Anzeige:02.
Wertebereich:0 ... 1
Voreinstellung:0
Laufschrift:HELLIGKEITS-MODUS
Beschreibung:Hier wird der Modus für die Helligkeitssteuerung eingestellt: 0 - Direkt, 1 - Verzögert. Im direkten Modus wird die Helligkeit kontinuierlich gesteuert. Systembedingt kann bei dunkler Umgebung die Helligkeit leicht schwanken. Wenn das stört, dann kann hier der verzögerte Modus aktiviert werden. In diesem Fall wird die Helligkeit nur einmal pro Sekunde zeitgleich mit der Umschaltung der Anzeige geändert. Schwankungen fallen dadurch weniger auf.

Menü 3 - Helligkeitsschwelle

Menü-Anzeige:03.
Wertebereich:0 ... 10
Voreinstellung:5
Laufschrift:HELLIGKEITS-SCHWELLE
Beschreibung:Mit dieser Einstellung kann die Helligkeitsschwelle für die Tag/Nacht-Umschaltung festgelegt werden. Höhere Werte erfordern eine höhere Helligkeit für die Umschaltung in den Tag-Modus. Hier muss man einfach ein wenig experimentieren.

Menü 4 - Feste DCF77-Synchronisierungszeit

Menü-Anzeige:04.
Wertebereich:0 ... 1
Voreinstellung:1
Laufschrift:FESTE DCF-SYNC-ZEIT
Beschreibung:Diese Einstellung aktiviert eine feste DCF77-Synchronisierungszeit: 0 - Aus, 1 - Ein. Wenn diese Funktion eingeschaltet ist, dann wird die Anzeige der Uhr zu einer festgelegten Zeit deaktiviert, um eine sichere Synchronisierung zu ermöglichen. Außerdem wird 2 Minuten nach dem Einschalten der Uhr aus dem gleichen Grund die Anzeige deaktiviert. Bei ausgeschalteter fester Synchronisierungszeit bleibt die Anzeige ständig aktiviert.

Menü 5 - DCF77-Synchronisierungsstunde

Menü-Anzeige:05.
Wertebereich:0 ... 23
Voreinstellung:3
Laufschrift:DCF-SYNC-STUNDE
Beschreibung:Mit dieser Einstellung wird die Zeit (Stunde) für die Synchronisierung festgelegt und ist nur wirksam, wenn die feste Synchronisierungszeit im Menü 4 eingeschaltet ist (1). Zur hier eingestellten Stunde wird die Anzeige der Uhr zur Reduzierung von DCF77-Empfangsstörungen deaktiviert. Sobald eine gültige Zeit empfangen wurde, aktiviert sich die Anzeige wieder. Anderenfalls schaltet sich die Anzeige nach 30 Minuten wieder ein. Die Anzeige kann übrigens jederzeit durch Drücken eines Tasters wieder eingeschaltet werden.

Menü 6 - DCF77-Invertierung

Menü-Anzeige:06.
Wertebereich:0 ... 1
Voreinstellung:1
Laufschrift:DCF-INVERTIERUNG
Beschreibung:Mit dieser Einstellung kann man die vom DCF77-Empfänger kommenden Signale invertieren: 0 - Normal, 1 - Invertiert. Die richtige Einstellung für die gängigsten Empfänger kann der nachfolgenden Tabelle entnommen werden:
DCF77-EmpfängerEinstellung
Pollin 810054Invertiert (1)
Reichelt DCF77 MODULInvertiert (1)
Conrad 641138Normal (0) oder Invertiert (1) - abhängig vom benutzten Ausgang
ELV 091610Normal (0)

Menü 7 - DCF77-Pull-up

Menü-Anzeige:07.
Wertebereich:0 ... 1
Voreinstellung:0
Laufschrift:DCF-PULL-UP
Beschreibung:Mit dieser Einstellung lässt sich ein Pull-up-Widerstand am DCF77-Eingang aktivieren: 0 - aus, 1 - ein. Der Pull-up-Widerstand wird immer dann benötigt, wenn der verwendete DCF77-Empfänger einen offenen Ausgang hat (Open-Drain oder Open-Collector). Die richtige Einstellung für die gängigsten Empfänger kann der nachfolgenden Tabelle entnommen werden:
DCF77-EmpfängerEinstellung
Pollin 810054Aus (0)
Reichelt DCF77 MODULAus (0)
Conrad 641138Ein (1)
ELV 091610Ein (1)

Menü 8 - Sensornummer 1

Menü-Anzeige:08.
Wertebereich:0 ... 31
Voreinstellung:0
Laufschrift:SENSOR-NUMMER 1
Beschreibung:Eine Einstellung ist hier nur notwendig, wenn Daten vom Temperatur-Messsystem empfangen werden oder die Sensor-Option installiert ist. Hier wird der Sensor ausgewählt, dessen Daten die Uhr als Sensor 1 anzeigen soll. Zur Auswahl stehen alle 31 Sensoren, die das Temperatur-Messsystem zur Verfügung stellt. Außerdem gibt es noch die Einstellung 0, mit der die Anzeige von Sensor 1 ausgeschaltet werden kann. Bei Verwendung der Sensor-Option muss ebenfalls eine Sensornummer ausgewählt werden, hier sind jedoch nur die Werte 0 ... 2 und 29 nutzbar. Weitere Informationen liefern die folgenden beiden Tabellen:
EinstellungBedeutung beim Datenempfang vom Temperatur-Messsystem
0Die Anzeige von Sensor 1 ist ausgeschaltet.
1 ... 27Sensor 1 zeigt den Wert von Temperatursensor 1 ... 27 an.
28Sensor 1 zeigt den Wert vom Luftdrucksensor an.
29 ... 31Sensor 1 zeigt den Wert von Luftfeuchtigkeitssensor 1 ... 3 an.
EinstellungBedeutung bei installierter Sensor-Option
0Die Anzeige von Sensor 1 ist ausgeschaltet.
1 ... 2Sensor 1 zeigt den Wert von Temperatursensor 1 oder 2 an.
29Sensor 1 zeigt den Wert vom Luftfeuchtigkeitssensor an.

Menü 9 - Sensornummer 2

Menü-Anzeige:09.
Wertebereich:0 ... 31
Voreinstellung:0
Laufschrift:SENSOR-NUMMER 2
Beschreibung:Eine Einstellung ist hier nur notwendig, wenn Daten vom Temperatur-Messsystem empfangen werden oder die Sensor-Option installiert ist. Hier wird der Sensor ausgewählt, dessen Daten die Uhr als Sensor 2 anzeigen soll. Zur Auswahl stehen alle 31 Sensoren, die das Temperatur-Messsystem zur Verfügung stellt. Außerdem gibt es noch die Einstellung 0, mit der die Anzeige von Sensor 2 ausgeschaltet werden kann. Bei Verwendung der Sensor-Option muss ebenfalls eine Sensornummer ausgewählt werden, hier sind jedoch nur die Werte 0 ... 2 und 29 nutzbar. Weitere Informationen liefern die folgenden beiden Tabellen:
EinstellungBedeutung beim Datenempfang vom Temperatur-Messsystem
0Die Anzeige von Sensor 2 ist ausgeschaltet.
1 ... 27Sensor 2 zeigt den Wert von Temperatursensor 1 ... 27 an.
28Sensor 2 zeigt den Wert vom Luftdrucksensor an.
29 ... 31Sensor 2 zeigt den Wert von Luftfeuchtigkeitssensor 1 ... 3 an.
EinstellungBedeutung bei installierter Sensor-Option
0Die Anzeige von Sensor 2 ist ausgeschaltet.
1 ... 2Sensor 2 zeigt den Wert von Temperatursensor 1 oder 2 an.
29Sensor 2 zeigt den Wert vom Luftfeuchtigkeitssensor an.

Menü 10 - Sensortext 1

Menü-Anzeige:10.
Wertebereich:ASCII-Zeichen (einige Sonderzeichen, Ziffern, Großbuchstaben, teilweise Kleinbuchstaben)
Voreinstellung:2 Leerzeichen
Laufschrift:keine
Beschreibung:Eine Einstellung ist hier nur notwendig, wenn Daten vom Temperatur-Messsystem empfangen werden oder die Sensor-Option installiert ist. Außerdem ist eine Einstellung und Anzeige des Sensortextes nur mit installierter Sekunden-Option möglich. Der Sensortext 1 besteht aus 2 ASCII-Zeichen, die auf der Sekunden-Option während der Anzeige des Sensorwertes 1 erscheinen. Damit kann z.B. eine passende Einheit (°C, hP oder %) realisiert werden oder auch ein Ort (Au, In, Wo, oder ähnliches).
Dieses Menü unterscheidet sich von den anderen durch eine besondere Art der Eingabe. Diese erfolgt hier nicht auf der Minutenanzeige, da diese keine ASCII-Zeichen darstellen kann. Die Zeichen werden stattdessen auf der Sekundenanzeige eingegeben und zwar in 2 Schritten. Zunächst blinkt das erste Zeichen und mit dem Taster 2 kann dieses Zeichen geändert werden. Hat man das richtige Zeichen gefunden, wird mit Taster 1 auf das zweite Zeichen umgeschaltet und dann beginnt dieses zu blinken. Nun kann das zweite Zeichen geändert werden und ein erneuter Druck auf Taster 1 schaltet dann zum nächsten Menü weiter. Technisch bedingt können nicht alle Zeichen dargestellt werden und so ergibt sich folgender Zeichenvorrat:
_°%*+-/0123456789?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdEfGhiJKLmnoPQrStuvwXYZäöüß

Menü 11 - Sensortext 2

Menü-Anzeige:11.
Wertebereich:ASCII-Zeichen (einige Sonderzeichen, Ziffern, Großbuchstaben, teilweise Kleinbuchstaben)
Voreinstellung:2 Leerzeichen
Laufschrift:keine
Beschreibung:Eine Einstellung ist hier nur notwendig, wenn Daten vom Temperatur-Messsystem empfangen werden oder die Sensor-Option installiert ist. Außerdem ist eine Einstellung und Anzeige des Sensortextes nur mit installierter Sekunden-Option möglich. Der Sensortext 2 besteht aus 2 ASCII-Zeichen, die auf der Sekunden-Option während der Anzeige des Sensorwertes 2 erscheinen. Damit kann z.B. eine passende Einheit (°C, hP oder %) realisiert werden oder auch ein Ort (Au, In, Wo, oder ähnliches).
Dieses Menü unterscheidet sich von den anderen durch eine besondere Art der Eingabe. Diese erfolgt hier nicht auf der Minutenanzeige, da diese keine ASCII-Zeichen darstellen kann. Die Zeichen werden stattdessen auf der Sekundenanzeige eingegeben und zwar in 2 Schritten. Zunächst blinkt das erste Zeichen und mit dem Taster 2 kann dieses Zeichen geändert werden. Hat man das richtige Zeichen gefunden, wird mit Taster 1 auf das zweite Zeichen umgeschaltet und dann beginnt dieses zu blinken. Nun kann das zweite Zeichen geändert werden und ein erneuter Druck auf Taster 1 schaltet dann zum nächsten Menü weiter. Technisch bedingt können nicht alle Zeichen dargestellt werden und so ergibt sich folgender Zeichenvorrat:
_°%*+-/0123456789?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdEfGhiJKLmnoPQrStuvwXYZäöüß

Menü 12 - Sensoroffset 1

Menü-Anzeige:12.
Wertebereich:-30 ... 30
Voreinstellung:0
Laufschrift:SENSOR-OFFSET 1
Beschreibung:Mit dieser Einstellung ist es möglich, den angezeigten Wert von Sensor 1 um einen bestimmten Betrag zu erhöhen (Wertebereich 1 ... 30) oder zu vermindern (Wertebereich -30 ... -1). Bei der Einstellung des Offsets ist zu beachten, dass die Darstellung der 3-stelligen Werte -30 ... -10 über eine Wechselanzeige erfolgt. So erscheint beispielsweise beim Wert -25 abwechselnd ein Minuszeichen und der Wert 25 in der Anzeige. Die folgende Tabelle zeigt, wie sich die Offset-Einstellung auf einen Beispiel-Sensorwert auswirkt:
Sensorwert 1Offset -30Offset -10Offset -5 Offset 0Offset 5Offset 10Offset 30 Bemerkung
22,5 °C19,5 °C21,5 °C22,0 °C22,5 °C23,0 °C23,5 °C25,5 °CEin Offset von 1 ändert den Wert um 0,1 °C.
1004 hPa974 hPa994 hPa999 hPa1004 hPa1009 hPa1014 hPa1034 hPaEin Offset von 1 ändert den Wert um 1 hPa.
47 %17 %37 %42 %47 %52 %57 %77 %Ein Offset von 1 ändert den Wert um 1 %.

Menü 13 - Sensoroffset 2

Menü-Anzeige:13.
Wertebereich:-30 ... 30
Voreinstellung:0
Laufschrift:SENSOR-OFFSET 2
Beschreibung:Mit dieser Einstellung ist es möglich, den angezeigten Wert von Sensor 2 um einen bestimmten Betrag zu erhöhen (Wertebereich 1 ... 30) oder zu vermindern (Wertebereich -30 ... -1). Bei der Einstellung des Offsets ist zu beachten, dass die Darstellung der 3-stelligen Werte -30 ... -10 über eine Wechselanzeige erfolgt. So erscheint beispielsweise beim Wert -25 abwechselnd ein Minuszeichen und der Wert 25 in der Anzeige. Die folgende Tabelle zeigt, wie sich die Offset-Einstellung auf einen Beispiel-Sensorwert auswirkt:
Sensorwert 2Offset -30Offset -10 Offset -5 Offset 0Offset 5Offset 10Offset 30 Bemerkung
22,5 °C19,5 °C21,5 °C22,0 °C22,5 °C23,0 °C23,5 °C25,5 °CEin Offset von 1 ändert den Wert um 0,1 °C.
1004 hPa974 hPa994 hPa999 hPa1004 hPa1009 hPa1014 hPa1034 hPaEin Offset von 1 ändert den Wert um 1 hPa.
47 %17 %37 %42 %47 %52 %57 %77 %Ein Offset von 1 ändert den Wert um 1 %.

Menü 14 - Automatische Sensorkonfiguration

Menü-Anzeige:14.
Wertebereich:0 ... 1
Voreinstellung:1
Laufschrift:AUTOMATISCHE SENSOR-KONFIGURATION
Beschreibung:Wenn die Uhr mit der Sensor-Option aufgebaut wurde, dann bewirkt diese Einstellung beim Einschalten der Uhr eine automatische Konfiguration der beiden Sensoranzeigen. Dabei werden die Einstellungen in den Menüs 8-11 entsprechend der vorgefundenen Sensoren angepasst. In den meisten Fällen sind dann keine weiteren Einstellungen bei den Sensoren notwendig. Werden jedoch nachträglich in den Menüs 8-11 manuelle Änderung durchgeführt, dann muss die automatische Sensorkonfiguration ausgeschaltet werden (0). Anderenfalls werden beim nächsten Neustart der Uhr die Änderung wieder rückgängig gemacht. Die folgende Tabelle zeigt die Wirkung der automatischen Sensor-Konfiguration auf die Menüs 8-11:
SensorenMenü 8Menü 9Menü 10Menü 11
kein Sensor00keine Änderungkeine Änderung
DHT22/AM2302129°C%
DS2438/HIH4000129°C%
1x DS18B2010°Ckeine Änderung
2x DS18B2012°C°C

Menü 15 - Datum-Reihenfolge

Menü-Anzeige:15.
Wertebereich:0 ... 1
Voreinstellung:0
Laufschrift:DATUM-REIHENFOLGE
Beschreibung:Diese Einstellung wirkt auf die Anzeige des Datums und legt die Reihenfolge der Werte fest. Die Voreinstellung 0 entspricht der Reihenfolge Tag. Monat. und bei der Einstellung 1 wird die Reihenfolge Monat. Tag. verwendet.

Menü 16 - Datum anzeigen

Menü-Anzeige:16.
Wertebereich:0 ... 2
Voreinstellung:0
Laufschrift:DATUM ANZEIGEN
Beschreibung:Mit dieser Einstellung lässt sich die Anzeige des Datums folgendermaßen beeinflussen:
EinstellungWirkung
0Das Datum wird immer angezeigt.
1Das Datum wird nur am Tag angezeigt.
2Das Datum wird niemals angezeigt.

Menü 17 - Sensor 1 anzeigen

Menü-Anzeige:17.
Wertebereich:0 ... 1
Voreinstellung:0
Laufschrift:SENSOR 1 ANZEIGEN
Beschreibung:Mit dieser Einstellung lässt sich die Anzeige des Sensors 1 folgendermaßen beeinflussen:
EinstellungWirkung
0Der Wert von Sensor 1 wird immer angezeigt.
1Der Wert von Sensor 1 wird nur am Tag angezeigt.
Hinweis: Soll der Wert von Sensor 1 gar nicht angezeigt werden, dann muss im Menü 8 (Sensornummer 1) der Wert 0 eingestellt werden.

Menü 18 - Sensor 2 anzeigen

Menü-Anzeige:18.
Wertebereich:0 ... 1
Voreinstellung:0
Laufschrift:SENSOR 2 ANZEIGEN
Beschreibung:Mit dieser Einstellung lässt sich die Anzeige des Sensors 2 folgendermaßen beeinflussen:
EinstellungWirkung
0Der Wert von Sensor 2 wird immer angezeigt.
1Der Wert von Sensor 2 wird nur am Tag angezeigt.
Hinweis: Soll der Wert von Sensor 2 gar nicht angezeigt werden, dann muss im Menü 9 (Sensornummer 2) der Wert 0 eingestellt werden.

Menü 19 - Automatische Sommerzeit

Menü-Anzeige:19.
Wertebereich:0 ... 1
Voreinstellung:1
Laufschrift:AUTOMATISCHE SOMMERZEIT
Beschreibung:Diese Einstellung aktiviert die automatische Sommerzeitumstellung am letzten Sonntag im März und Oktober und funktioniert auch ohne DCF77-Signal. Falls irgendwann die Sommerzeit abgeschafft werden sollte oder die Uhr in einem Gebiet ohne Sommerzeit betrieben wird, dann kann man mit der Einstellung 0 die Sommerzeit-Automatik deaktivieren.

Menü 20 - Tag einstellen

Menü-Anzeige:tA.
Wertebereich:1 ... 31
Voreinstellung:aktueller Tag
Laufschrift:TAG
Beschreibung:Über dieses Menü kann der Tag manuell eingestellt werden. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung im Menü 25 als vollständige Zeit übernommen.

Menü 21 - Monat einstellen

Menü-Anzeige:Mo.
Wertebereich:1 ... 12
Voreinstellung:aktueller Monat
Laufschrift:MONAT
Beschreibung:Über dieses Menü kann der Monat manuell eingestellt werden. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung im Menü 25 als vollständige Zeit übernommen.

Menü 22 - Jahr einstellen

Menü-Anzeige:JA.
Wertebereich:20 ... 99
Voreinstellung:aktuelles Jahr
Laufschrift:JAHR
Beschreibung:Über dieses Menü können die letzten beiden Ziffern des Jahres manuell eingestellt werden, wobei das Jahrhundert auf 20 festgesetzt ist. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung im Menü 25 als vollständige Zeit übernommen.

Menü 23 - Stunde einstellen

Menü-Anzeige:St.
Wertebereich:0 ... 23
Voreinstellung:aktuelle Stunde
Laufschrift:STUNDE
Beschreibung:Über dieses Menü kann die Stunde manuell eingestellt werden. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung im Menü 25 als vollständige Zeit übernommen.

Menü 24 - Minute einstellen

Menü-Anzeige:Mi.
Wertebereich:0 ... 59
Voreinstellung:aktuelle Minute
Laufschrift:MINUTE
Beschreibung:Über dieses Menü kann die Minute manuell eingestellt werden. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung im Menü 25 als vollständige Zeit übernommen.

Menü 25 - Zeit übernehmen

Menü-Anzeige:Uhrzeit (blinkt)
Wertebereich:-
Voreinstellung:-
Laufschrift:ZEIT UEBERNEHMEN
Beschreibung:Dieses Menü wird nur sichtbar, wenn mindestens ein Zeitparameter in den Menüs 20-24 verändert wurde, anderenfalls wird dieses Menü übersprungen und zur normalen Anzeige zurückgekehrt. Die manuelle Einstellung der Zeit läuft folgendermaßen ab:
SchrittBeschreibung
1Menü 20 auswählen, das geht am schnellsten mit einem langen Druck auf Taster 1. Dabei wird die aktuelle Zeit zur Einstellung in einen Zwischenspeicher kopiert.
2Im Menü 20 Tag einstellen.
3Menü 21 auswählen und Monat einstellen.
4Menü 22 auswählen und Jahr einstellen.
5Menü 23 auswählen und Stunde einstellen.
6Menü 24 auswählen und nächste Minute einstellen.
7Menü 25 auswählen und warten, bis die blinkende Zeit erreicht ist, anschließend Taster 2 drücken. Dabei wird die vorher eingestellte Zeit übernommen und die Uhr gestartet. Möchte man den Vorgang an dieser Stelle abbrechen, dann einfach Taster 1 drücken.

SymbolUSB-Steuerung

Neben der Menüsteuerung lässt sich die Wohnraumuhr auch über die USB-Schnittstelle konfigurieren. Hier ist die Eingabe etwas komfortabler und falls man eine Verbindung zum Temperatur-Messsystem hat oder die Sensor-Option installiert ist, dann lassen sich alle empfangenen Daten mitlesen. Um die USB-Steuerung nutzen zu können, muss die Uhr über den USB-Anschluss mit einem PC verbunden sein. Es wird hier die gleiche Verbindung genutzt, über die mittels Bootloader die Software installiert wurde. Hier wird jedoch nicht mit dem chip45boot2 GUI V1.13 gearbeitet, sondern mit einem Terminalprogramm. Ganz oben auf dieser Seite sind Links zu 2 empfehlenswerten Terminalprogrammen zu finden, die kostenlos sind und als Open-Source-Software mit Quelltext zur Verfügung stehen. Ich habe für die nachfolgenden Bilder TeraTerm verwendet, PuTTY ist aber ebenso geeignet. Nach dem Start des Terminalprogramms ist auch nicht viel einzustellen. Wichtig sind nur der COM-Port (auf meinem System COM6) und die Baudrate von 230400. Der COM-Port sollte durch die Kommunikation mit dem Bootloader bereits bekannt sein.

USB-Steuerung 1 Das nebenstehende Bild zeigt sich, wenn man die Wohnraumuhr einschaltet und die Sensor-Option installiert ist. Hier hat die Sensor-Option einen DHT22-Sensor erkannt und einen entsprechenden Konfigurations-Datensatz gesendet (S:1x10). Das Hauptmodul nutzt diesen zur automatischen Sensor-Konfiguration und gibt außerdem die erkannte Konfiguration im Klartext aus. Anschließend werden alle 5 Sekunden zyklisch die Sensorwerte übermittelt. Diese sind vollkommen identisch zu denen des Temperatur-Messsystems. In meinem Beispiel liefert der Temperatursensor des DHT22 als Sensor 1 einen Wert von 25,1°C und der Luftfeuchtigkeitssensor des DHT22 als Sensor 29 (Kennung x) einen Wert von 44%.

Hier sollte man die Anzeige eine Weile beobachten und kontrollieren, dass alle Werte fehlerfrei übermittelt werden. Falls hier gelegentlich falsche Zeichen oder „Hieroglyphen“ erscheinen, dann ist offensichtlich der interne Taktoszillator von IC201 der Sensor-Option etwas verstimmt. Optimal wäre natürlich eine Kalibrierung des Oszillators, aber das erfordert zusätzliche Messtechnik und ein Testprogramm. Einfacher ist es, einen Jumper auf die Kontakte 1-2 des Steckverbinders J202 zu stecken und zu schauen, ob sich das Problem damit lösen lässt. Falls es nicht besser oder sogar noch schlimmer wird, dann bitte den Jumper auf die Kontakte 3-4 stecken.

Kommen die Sensordaten vom Temperatur-Messsystem, dann lassen sich diese ebenfalls hier mitlesen. Auch hier sollten keine Fehler auftreten, anderenfalls muss man je nach Medium die Kabel- oder Funk-Verbindung kontrollieren.

USB-Steuerung 2 Unabhängig von der Sensoranzeige lässt sich am PC durch einen Druck auf Enter die USB-Konfiguration aufrufen und die sollte so aussehen wie im nebenstehenden Bild. Hier sind die Menü-Elemente in der gleichen Reihenfolge angeordnet wie bei der Menüsteuerung direkt an der Uhr. Für eine einfachere Bedienung habe ich Buchstaben verwendet. In einigen Menüs, wo nur eine Funktion ein- oder ausgeschaltet wird, genügt ein Druck auf den entsprechenden Buchstaben. Menüs, die die Eingabe eines Wertes erwarten, zeigen nach dem Drücken des Buchstabens eine Eingabezeile. Hier muss der gewünschte Wert und anschließend Enter eingegeben werden. Ist die Eingabe plausibel, dann wird der neue Wert übernommen, anderenfalls bleibt die vorherige Einstellung erhalten. Es ist übrigens nicht möglich, eine Eingabe zu korrigieren. Hat man sich vertippt, dann drückt man einfach Enter, wählt die Menü-Funktion nochmals aus und gibt den gewünschten Wert neu ein.

Nach jeder Eingabe wird das komplette Menü neu aufgebaut und mit den aktuellen Daten angezeigt. Um Probleme mit Umlaut-Konvertierungen zu vermeiden, wird bei der gesamten Menü-Führung auf Umlaute verzichtet. Die einzigen Menü-Funktionen, in der Umlaute vorkommen können, betreffen die Eingabe der Sensortexte. Hier sind aber bekannte Umschreibungen wie ae, oe, ue möglich. Bei der Eingabe der Uhrzeit werden, so wie bei der Menüsteuerung auch, die neuen Werte zunächst zwischengespeichert. Erst nach Auswahl der Funktion zur Zeitübernahme wird die zwischengespeicherte Zeit an die Uhr übergeben. Und auch das USB-Menü wird nach 2 Minuten Inaktivität automatisch wieder verlassen und zur Sensoranzeige zurückgekehrt (falls denn welche angeschlossen sind).

Die folgende Übersicht beschreibt alle Menü-Funktion noch etwas ausführlicher. Da die Funktionen identisch zur Menüsteuerung über Anzeige und Taster sind, werden hier weitgehend die gleichen Beschreibungstexte verwendet:

a - Sprache/Language: Deutsch
Über diesen Menüpunkt wird die Sprache für die Wochentage und Menütexte festgelegt, dabei wird zwischen Deutsch und Englisch umgeschaltet.

b - Helligkeitsmodus: direkt
Hier wird der Modus für die Helligkeitssteuerung eingestellt, es findet immer ein Wechsel zwischen direkt und verzoegert statt. Im direkten Modus wird die Helligkeit kontinuierlich gesteuert. Systembedingt kann bei dunkler Umgebung die Helligkeit leicht schwanken. Wenn das stört, dann kann hier der verzögerte Modus aktiviert werden. In diesem Fall wird die Helligkeit nur einmal pro Sekunde zeitgleich mit der Umschaltung der Anzeige geändert. Schwankungen fallen dadurch weniger auf.

c - Helligkeitsschwelle: 5
Über diesen Menüpunkt kann die Helligkeitsschwelle für die Tag/Nacht-Umschaltung im Bereich 0 ... 10 direkt eingegeben werden. Höhere Werte erfordern eine höhere Helligkeit für die Umschaltung in den Tag-Modus. Hier muss man einfach ein wenig experimentieren.

d - Feste DCF77-Synchronisierungszeit: ein
Dieser Menüpunkt aktiviert eine feste DCF77-Synchronisierungszeit und es erfolgt immer ein Wechsel zwischen den Einstellungen aus und ein. Wenn diese Funktion eingeschaltet ist, dann wird die Anzeige der Uhr zu einer festgelegten Zeit deaktiviert, um eine sichere Synchronisierung zu ermöglichen. Außerdem wird 2 Minuten nach dem Einschalten der Uhr aus dem gleichen Grund die Anzeige deaktiviert. Bei ausgeschalteter fester Synchronisierungszeit bleibt die Anzeige ständig aktiviert.

e - DCF77-Synchronisierungsstunde: 3:00
Mit dieser Einstellung wird die Zeit (Stunde) für die Synchronisierung im Bereich 0 ... 23 festgelegt und ist nur wirksam, wenn die feste DCF77-Synchronisierungszeit eingeschaltet ist (Menü d auf ein gesetzt). Zur hier eingestellten Stunde wird die Anzeige der Uhr zur Reduzierung von DCF77-Empfangsstörungen deaktiviert. Sobald eine gültige Zeit empfangen wurde, aktiviert sich die Anzeige wieder. Anderenfalls schaltet sich die Anzeige nach 30 Minuten wieder ein. Die Anzeige kann übrigens jederzeit durch Drücken eines Tasters wieder eingeschaltet werden.

f - DCF77-Invertierung: ein
Über diesen Menüpunkt kann man die vom DCF77-Empfänger kommenden Signale invertieren, dabei wird zwischen den Einstellungen aus und ein gewechselt. Die richtige Einstellung für die gängigsten Empfänger kann der nachfolgenden Tabelle entnommen werden:

DCF77-EmpfängerInvertierung
Pollin 810054ein
Reichelt DCF77 MODULein
Conrad 641138aus oder ein - abhängig vom benutzten Ausgang
ELV 091610aus

g - DCF77-Pull-up: aus
Über diesen Menüpunkt lässt sich ein Pull-up-Widerstand am DCF77-Eingang aktivieren, auch hier wird zwischen den Einstellungen aus und ein gewechselt. Der Pull-up-Widerstand wird immer dann benötigt, wenn der verwendete DCF77-Empfänger einen offenen Ausgang hat (Open-Drain oder Open-Collector). Die richtige Einstellung für die gängigsten Empfänger kann der nachfolgenden Tabelle entnommen werden:

DCF77-EmpfängerPull-up
Pollin 810054aus
Reichelt DCF77 MODULaus
Conrad 641138ein
ELV 091610ein

h - Sensornummer 1: aus
Eine Einstellung ist hier nur notwendig, wenn Daten vom Temperatur-Messsystem empfangen werden oder die Sensor-Option installiert ist. Hier wird der Sensor ausgewählt, dessen Daten die Uhr als Sensor 1 anzeigen soll. Zur Auswahl stehen alle 31 Sensoren, die das Temperatur-Messsystem zur Verfügung stellt. Außerdem gibt es noch die Einstellung 0 (im Menü wird aus angezeigt), mit der die Anzeige von Sensor 1 ausgeschaltet werden kann. Bei Verwendung der Sensor-Option muss ebenfalls eine Sensornummer ausgewählt werden, hier sind jedoch nur die Werte 0 ... 2 und 29 nutzbar. Weitere Informationen liefern die folgenden beiden Tabellen:

EinstellungBedeutung beim Datenempfang vom Temperatur-Messsystem
0 (aus)Die Anzeige von Sensor 1 ist ausgeschaltet.
1 ... 27Sensor 1 zeigt den Wert von Temperatursensor 1 ... 27.
28Sensor 1 zeigt den Wert vom Luftdrucksensor.
29 ... 31Sensor 1 zeigt den Wert von Luftfeuchtigkeitssensor 1 ... 3.
EinstellungBedeutung bei installierter Sensor-Option
0 (aus)Die Anzeige von Sensor 1 ist ausgeschaltet.
1 ... 2Sensor 1 zeigt den Wert von Temperatursensor 1 oder 2.
29Sensor 1 zeigt den Wert vom Luftfeuchtigkeitssensor.

i - Sensornummer 2: aus
Eine Einstellung ist hier nur notwendig, wenn Daten vom Temperatur-Messsystem empfangen werden oder die Sensor-Option installiert ist. Hier wird der Sensor ausgewählt, dessen Daten die Uhr als Sensor 2 anzeigen soll. Zur Auswahl stehen alle 31 Sensoren, die das Temperatur-Messsystem zur Verfügung stellt. Außerdem gibt es noch die Einstellung 0 (im Menü wird aus angezeigt), mit der die Anzeige von Sensor 2 ausgeschaltet werden kann. Bei Verwendung der Sensor-Option muss ebenfalls eine Sensornummer ausgewählt werden, hier sind jedoch nur die Werte 0 ... 2 und 29 nutzbar. Weitere Informationen liefern die folgenden beiden Tabellen:

EinstellungBedeutung beim Datenempfang vom Temperatur-Messsystem
0 (aus)Die Anzeige von Sensor 2 ist ausgeschaltet.
1 ... 27Sensor 2 zeigt den Wert von Temperatursensor 1 ... 27.
28Sensor 2 zeigt den Wert vom Luftdrucksensor.
29 ... 31Sensor 2 zeigt den Wert von Luftfeuchtigkeitssensor 1 ... 3.
EinstellungBedeutung bei installierter Sensor-Option
0 (aus)Die Anzeige von Sensor 2 ist ausgeschaltet.
1 ... 2Sensor 2 zeigt den Wert von Temperatursensor 1 oder 2.
29Sensor 2 zeigt den Wert vom Luftfeuchtigkeitssensor.

j - Sensortext 1:
Eine Einstellung ist hier nur notwendig, wenn Daten vom Temperatur-Messsystem empfangen werden oder die Sensor-Option installiert ist. Der Sensortext 1 besteht aus 2 ASCII-Zeichen, die auf der Sekunden-Option während der Anzeige des Sensorwertes 1 erscheinen. Damit kann z.B. eine passende Einheit (°C, hP oder %) realisiert werden oder auch ein Ort (Au, In, Wo, oder ähnliches). Der Sensortext 1 kann direkt eingegeben werden, wobei beachtet werden muss, dass einige Sonderzeichen nicht auf der Uhr darstellbar sind. Außerdem müssen einige Zeichen in anderer Schreibweise eingegeben werden:

Zeichen im SensortextZeichen im TerminalprogrammHinweis
°#
äaenur an zweiter Stelle als Kleinbuchstabe möglich
öoenur an zweiter Stelle als Kleinbuchstabe möglich
üuenur an zweiter Stelle als Kleinbuchstabe möglich
ßssnur an zweiter Stelle als Kleinbuchstabe möglich

k - Sensortext 2:
Eine Einstellung ist hier nur notwendig, wenn Daten vom Temperatur-Messsystem empfangen werden oder die Sensor-Option installiert ist. Der Sensortext 2 besteht aus 2 ASCII-Zeichen, die auf der Sekunden-Option während der Anzeige des Sensorwertes 2 erscheinen. Damit kann z.B. eine passende Einheit (°C, hP oder %) realisiert werden oder auch ein Ort (Au, In, Wo, oder ähnliches). Der Sensortext 2 kann direkt eingegeben werden, wobei beachtet werden muss, dass einige Sonderzeichen nicht auf der Uhr darstellbar sind. Außerdem müssen einige Zeichen in anderer Schreibweise eingegeben werden:

Zeichen im SensortextZeichen im TerminalprogrammHinweis
°#
äaenur an zweiter Stelle als Kleinbuchstabe möglich
öoenur an zweiter Stelle als Kleinbuchstabe möglich
üuenur an zweiter Stelle als Kleinbuchstabe möglich
ßssnur an zweiter Stelle als Kleinbuchstabe möglich

l - Sensoroffset 1: 0
Mit dieser Einstellung ist es möglich, den angezeigten Wert von Sensor 1 um einen bestimmten Betrag zu erhöhen (Wertebereich 1 ... 30) oder zu vermindern (Wertebereich -30 ... -1). Die folgende Tabelle zeigt, wie sich die Offset-Einstellung auf einen Beispiel-Sensorwert auswirkt:

Sensorwert 1Offset -30Offset -10Offset -5Offset 0 Offset 5Offset 10Offset 30Bemerkung
22,5 °C19,5 °C21,5 °C22,0 °C22,5 °C23,0 °C23,5 °C25,5 °CEin Offset von 1 ändert den Wert um 0,1 °C.
1004 hPa974 hPa994 hPa999 hPa1004 hPa1009 hPa1014 hPa1034 hPaEin Offset von 1 ändert den Wert um 1 hPa.
47 %17 %37 %42 %47 %52 %57 %77 %Ein Offset von 1 ändert den Wert um 1 %.

m - Sensoroffset 2: 0
Mit dieser Einstellung ist es möglich, den angezeigten Wert von Sensor 2 um einen bestimmten Betrag zu erhöhen (Wertebereich 1 ... 30) oder zu vermindern (Wertebereich -30 ... -1). Die folgende Tabelle zeigt, wie sich die Offset-Einstellung auf einen Beispiel-Sensorwert auswirkt:

Sensorwert 2Offset -30Offset -10Offset -5Offset 0 Offset 5Offset 10Offset 30Bemerkung
22,5 °C19,5 °C21,5 °C22,0 °C22,5 °C23,0 °C23,5 °C25,5 °CEin Offset von 1 ändert den Wert um 0,1 °C.
1004 hPa974 hPa994 hPa999 hPa1004 hPa1009 hPa1014 hPa1034 hPaEin Offset von 1 ändert den Wert um 1 hPa.
47 %17 %37 %42 %47 %52 %57 %77 %Ein Offset von 1 ändert den Wert um 1 %.

n - Automatische Sensorkonfiguration: ein
Wenn die Uhr mit der Sensor-Option aufgebaut wurde, dann bewirkt diese Einstellung beim Einschalten der Uhr eine automatische Konfiguration der beiden Sensoranzeigen. Dabei werden die Einstellungen in den Menüs h-k entsprechend der vorgefundenen Sensoren angepasst. In den meisten Fällen sind dann keine weiteren Einstellungen bei den Sensoren notwendig. Werden jedoch nachträglich in den Menüs h-k manuelle Änderung durchgeführt, dann muss die automatische Sensorkonfiguration ausgeschaltet werden. Anderenfalls werden beim nächsten Neustart der Uhr die Änderung wieder rückgängig gemacht. Die folgende Tabelle zeigt die Wirkung der automatischen Sensor-Konfiguration auf die Menüs h-k:

SensorenMenü hMenü iMenü jMenü k
kein Sensor00keine Änderungkeine Änderung
DHT22/AM2302129°C%
DS2438/HIH4000129°C%
1x DS18B2010°Ckeine Änderung
2x DS18B2012°C°C

o - Datum-Reihenfolge: Tag/Monat
Diese Einstellung wirkt auf die Anzeige des Datums und legt die Reihenfolge der Werte fest. Bei Auswahl dieses Menüpunktes wird zwischen Tag/Monat und Monat/Tag gewechselt.

p - Datum anzeigen: immer
Mit diesem Menüpunkt lässt sich die Anzeige des Datums folgendermaßen einstellen: immer, nur am Tag oder nie.

q - Sensor 1 anzeigen: immer
Mit diesem Menüpunkt lässt sich die Anzeige des Sensors 1 folgendermaßen einstellen: immer oder nur am Tag. Soll der Sensor 1 gar nicht angezeigt werden, dann muss im Menü h der Wert 0 eingestellt werden.

r - Sensor 2 anzeigen: immer
Mit diesem Menüpunkt lässt sich die Anzeige des Sensors 2 folgendermaßen einstellen: immer oder nur am Tag. Soll der Sensor 2 gar nicht angezeigt werden, dann muss im Menü i der Wert 0 eingestellt werden.

s - Automatische Sommerzeit: ein
Diese Einstellung aktiviert die automatische Sommerzeitumstellung am letzten Sonntag im März und Oktober und funktioniert auch ohne DCF77-Signal. Falls irgendwann die Sommerzeit abgeschafft werden sollte oder die Uhr in einem Gebiet ohne Sommerzeit betrieben wird, dann kann hier die Sommerzeit-Automatik deaktiviert werden.

t - Tag: aktueller Tag
Über diesen Menüpunkt kann der Tag manuell eingestellt werden. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung über den Menüpunkt y als vollständige Zeit übernommen.

u - Monat: aktueller Monat
Über diesen Menüpunkt kann der Monat manuell eingestellt werden. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung über den Menüpunkt y als vollständige Zeit übernommen.

v - Jahr: aktuelles Jahr
Über diesen Menüpunkt können die letzten beiden Ziffern des Jahres manuell eingestellt werden, wobei das Jahrhundert auf 20 festgesetzt ist. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung über den Menüpunkt y als vollständige Zeit übernommen.

w - Stunde: aktuelle Stunde
Über diesen Menüpunkt kann die Stunde manuell eingestellt werden. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung über den Menüpunkt y als vollständige Zeit übernommen.

x - Minute: aktuelle Minute
Über diesen Menüpunkt kann die Minute manuell eingestellt werden. Die Eingabe wird zunächst zwischengespeichert und erst bei Bestätigung über den Menüpunkt y als vollständige Zeit übernommen.

y - Zeit uebernehmen
Dieser Menüpunkt wird nur sichtbar, wenn mindestens eine Zeiteinstellung in den Menüs t-x verändert wurde. Durch Auswahl dieses Menüs wird die vorher eingestellte Zeit übernommen und die Uhr gestartet.

z - Konfiguration beenden
Dieser Menüpunkt beendet den Konfigurations-Dialog und es wird wieder die Sensoranzeige aktiviert.

Die USB-Steuerung bietet noch eine weitere Funktion: Man kann ein Reset an der Uhr auslösen. Diese Funktion wurde eingebaut, um den Bootloader ohne Aktion an der Uhr zu aktivieren. chip45boot2 GUI V1.13 sendet beim Verbindungsaufbau mit dem Bootloader fortlaufend das Zeichen U, bis der Bootloader startet und eine Antwort sendet. Wenn die Uhr mindestens 2 aufeinander folgende U erkennt, dann löst sie ein Reset aus und startet damit den Bootloader. Man kann diese Funktion nutzen (einfach im Terminalfenster UU tippen), um die Sensor-Option und die dort angeschlossenen Sensoren zu überprüfen. Ungefähr 4 Sekunden nach dem Start der Uhr werden Informationen über die Sensoren ausgegeben und beim Verbinden der Uhr mit einem PC und dem anschließenden Start eines Terminalprogramms reicht die Zeit nicht, um diese Informationen mitzulesen. Hier kann man die Reset-Funktion UU verwenden und beim anschließenden Neustart bequem die Sensorinformationen mitlesen.

SymbolSonstiges

Die Wohnraumuhr ist zum Zeitpunkt der Texterstellung im Dezember 2017 immer noch sehr beliebt und wird oft nachgebaut. Allerdings ist die Schaltung etwas veraltet und viele Funktionen wurden nachträglich ergänzt, obwohl die Hardware gar nicht dafür vorgesehen war. So entstanden 2 Hardware-Varianten, insgesamt 4 Software-Varianten und trotzdem waren immer Kompromisse bei der Anzeige notwendig. Hier war also ein Redesign mehr als überfällig.

Im Frühjahr 2017 wurde also ein neues Konzept entwickelt. Da sich die Größe der LED-Anzeigeelemente bei der alten Uhr bewährt hat, wurden für die neue Uhr die gleichen Elemente verwendet. Allerdings sollten jetzt wirklich alle Segmente und auch ein blinkender Doppelpunkt angesteuert werden, somit war ein Mikrocontroller mit mehr Anschlüssen notwendig. Ich habe mich für den ATmega128A entschieden und damit man dieses SMD-Bauteil stressfrei verarbeiten kann, entschied ich mich für ein fertiges Modul, welches noch einige weitere Vorteile bringt. So ist ein USB-Anschluss integriert, der eine Software-Installation ohne zusätzliches Programmiergerät ermöglicht und außerdem zur Stromversorgung genutzt werden kann. Damit ist es möglich, Standard-Netzteile mit Mini-USB-Anschluss zu verwenden. Die hohe LED-Spannung wird nun über einen zeitgemäßen Schaltregler erzeugt.

Grundsätzlich wurde die Idee, eine möglichst einfache Uhr zu konstruieren, auch bei der Wohnraumuhr 2 umgesetzt. Sofern nur das Hauptmodul aufgebaut wird, ist der Schaltungsaufwand und auch der Funktionsumfang vergleichbar mit der alten Wohnraumuhr. Trotzdem sollte die neue Uhr auch einige Dinge mitbringen, die bei der alten Uhr oft bemängelt wurden. Das ließ sich am besten über Zusatz-Optionen realisieren, die man nach Bedarf ergänzen oder eben weglassen kann. So wurde bei der alten Uhr oft das Fehlen einer Sekundenanzeige bemängelt und da noch einige Controller-Anschlüsse verfügbar waren, wurde eine solche Anzeige ergänzt. Damit diese Anzeige auch beim Datum und den Sensorwerten sinnvoll verwendet werden kann, habe ich Sechzehnsegment-LEDs verwendet. Die Sensor-Option war hingegen ursprünglich nicht vorgesehen. Hier sollte eigentlich das Hauptmodul direkt mit den Sensoren kommunizieren, was ich leider durch das strenge Timing der PWM-Anzeige und dem 1-Wire- bzw. DHT22-Protokoll nicht in den Griff bekommen habe. Also wurde die Sensor-Option entwickelt und die gesamte 1-Wire-Kommunikation auf einen zusätzlichen Mikrocontroller ausgelagert.

Die Entwicklung der Software hat dann einige Monate in Anspruch genommen, schließlich sollte die Software komplett in C entstehen. Die Software der alten Wohnraumuhr wurde in AVR-Assembler geschrieben und konnte somit nicht verwendet werden. Einige Teile der Software konnte ich von anderen Projekten, wie z.B. der Matrixuhr oder dem LCD-Wecker nutzen, trotzdem musste vieles neu geschrieben werden. Auch ist viel Zeit durch den Versuch, 1-Wire auf dem Hauptmodul zum Laufen zu bringen, verloren gegangen. Grundsätzlich hat es zwar funktioniert, aber es gab immer wieder Störungen auf der Anzeige und damit wollte ich mich nicht zufrieden geben. Im Prinzip musste also noch eine Miniversion eines Sensormoduls aufgebaut und programmiert werden. Und auch hier wollte ich C verwenden, wodurch der Quellkode des originalen Sensormoduls nicht verwendet werden konnte. Nun ist die Uhr aber endlich fertig und ich hoffe, diese wird genau so erfolgreich wie das vorherige Modell :-)