Projekt: Wohnraumuhr 2
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.
Status | aktiv |
Letzte Bearbeitung | 26.07.2020 |
Aktueller Softwarestand Hauptcontroller | v1.01 vom 02.04.2020 |
Aktueller Softwarestand Zusatzcontroller | v1.00 vom 02.12.2017 |
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 C | wohnuhr2-atmega128a-v101.zip |
Software v1.00 vom 02.12.2017 für den Zusatzcontroller ATtiny84A mit komplettem Quelltext in C | wohnuhr2-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 Zetsche | wohnuhr2-layout.zip |
Homepage von PuTTY (Terminalprogramm) | http://www.putty.org/ |
Homepage von TeraTerm (Terminalprogramm) | http://ttssh2.osdn.jp/ |
Beschreibung | Allgemeine Informationen über die Wohnraumuhr 2 |
Schaltung | Beschreibung der Schaltung |
Hardware | Bilder und Hinweise zum Aufbau |
Software | Kurze Beschreibung der Software |
Inbetriebnahme | Inbetriebnahme der Wohnraumuhr 2 |
Bedienung | Bedienungsanleitung und komplette Beschreibung aller Funktionen |
Sonstiges | Einige Hintergrundinformationen zur Entwicklung der Wohnraumuhr 2 |
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:
- Verwendung eines kompakten Mikrocontroller-Boards mit ATmega128A, UART und USB-Anschluss als zentrale Steuereinheit
- 4-stellige Anzeige mit 56mm hohen Siebensegment-LEDs, alle Segmente und Dezimalpunkte können einzeln gesteuert werden
- zusätzlicher blinkender Doppelpunkt, bestehend aus 2 einzelnen LEDs
- Helligkeitsregelung der Anzeige über PWM
- Konfigurierbarer Nachtmodus
- Möglichkeit zur Invertierung der LED-Ausgänge zur Ansteuerung von Großanzeigen
- Anzeige von 2 Sensorwerten, die vom Temperatur-Messsystem geliefert werden
- Möglichkeit der Korrektur der Sensorwerte um ±3,0°C, ±30hPa oder ±30%
- Zeit-Synchronisierung erfolgt über einen DCF77-Empfänger
- 2 Taster dienen zur Konfiguration und zum Stellen der Uhr
- Stromversorgung über 5V-Standard-Netzteil mit Mini-USB-Anschluss (5V/0,5A)
- PC-Verbindung über Mini-USB-Anschluss für Software-Updates und zur Konfiguration der Uhr über ein Terminalprogramm
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:
- 2-stellige Zusatzanzeige mit 20mm hohen Sechzehnsegment-LEDs, alle Segmente und Dezimalpunkte können einzeln gesteuert werden
- zeigt zusätzlich zur Uhrzeit die aktuelle Sekunde
- zeigt zusätzlich zum Datum den aktuellen Wochentag
- zeigt zusätzlich bei den Sensorwerten die Einheit (°C, hP oder %), alternativ 2 ASCII-Zeichen wählbar
- zeigt zusätzlich während der Konfiguration das aktuelle Menü als Laufschrift
- Helligkeitsregelung der Anzeige über PWM
Als zweite Erweiterungsmöglichkeit gibt es die Sensor-Option. Diese besteht aus einem zusätzlichen Mikrocontroller ATtiny84A und zeichnet sich durch folgende Eigenschaften aus:
- Anschlussmöglichkeit für einen Kombisensor (1x Temperatur und 1x Luftfeuchtigkeit) oder reine Temperatursensoren (1x oder 2x Temperatur)
- Folgende Sensortypen sind möglich: DHT22/AM2302, DS2438/HIH-4000, DS1820, DS18S20, DS18B20, DS1822
- Automatische Konfiguration der Sensoranzeige beim Einschalten der Uhr
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.
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.
HauptmodulBei 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).
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.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.Sekunden-Option
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.
Sensor-OptionMit 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.
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.
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.
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.
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.
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.
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.
Ü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.
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.
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.
HauptmodulDer Quelltext für den Mikrocontroller ATmega128A des Hauptmoduls besteht aus den folgenden 5 Dateien:
main.c | enthält das komplette Hauptprogramm |
functions.h | enthält zusätzliche Funktionen (String-Verarbeitung, USB-Kommunikation, Konvertierungen) |
interrupt.h | enthält alle Interrupt-Funktionen (serielle Kommunikation, PWM-Anzeigesteuerung, Zeitzählung, DCF77, Taster-Abfrage) |
strings.h | enthält eine Stringliste in deutscher und englischer Sprache |
tables.h | enthä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.
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:
- USART0 RX - Ein Zeichen wurde über USB empfangen und diese Funktion speichert das Zeichen in einem Puffer zur weiteren Verarbeitung.
- USART1 RX - Ein Zeichen wurde über RS232 empfangen und diese Funktion speichert das Zeichen in einem Puffer zur weiteren Verarbeitung.
- TIMER0 OVF - Die Anzeige wurde über einen PWM-Impuls eingeschaltet und diese Funktion schaltet die Anzeige nun wieder aus (Helligkeitssteuerung).
- TIMER1 COMPA - Ein neuer PWM-Impuls beginnt und diese Funktion schaltet die Anzeige durch Ausgabe der aktuellen Segment-Belegung ein (1024Hz oder alle 977µs).
- TIMER3 COMPA - Diese Funktion liest zyklisch den DCF77-Eingang, die Helligkeit und die Taster, steuert die Laufschrift, die Zeitzählung und einige weitere Zähler (50Hz oder alle 20ms)
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.
Der Quelltext für den Mikrocontroller ATtiny84A der Sensor-Option besteht aus den folgenden 3 Dateien:
main.c | enthält das komplette Hauptprogramm |
functions.h | enthält zusätzliche Funktionen (RS232-Kommunikation, Kommunikation mit den Sensoren, Konvertierungen) |
tables.h | enthä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.
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.
Zur Inbetriebnahme der Wohnraumuhr 2 sind mehrere Schritte erforderlich, wobei unter bestimmten Umständen einige Schritte entfallen können:
Schritt | Beschreibung | Hinweis |
---|---|---|
1 | Drehen des Trimmpotis R42 auf Mittelstellung | |
2 | Installation des Bootloaders auf dem Hauptmodul und Setzen der Fuse-Bits mittels Programmiergerät über den ISP-Anschluss des Crumb128 | entfällt, wenn das Crumb128 mit vorinstalliertem Bootloader bestellt wird |
3 | Installation der Software auf dem Hauptmodul mittels Bootloader über den USB-Anschluss des Crumb128 | |
4 | Wenn die Uhren-Software läuft, Einstellen der Spannung an C6 mit R42 auf 9,5V | |
5 | Installation der Software auf der Sensor-Option und Setzen der Fuse-Bits mittels Programmiergerät über den ISP-Anschluss J203 | nur notwendig, wenn die Sensor-Option vorhanden ist |
6 | Kontrolle der Datenübertragung zwischen Sensor-Option und Hauptmodul | nur notwendig, wenn die Sensor-Option vorhanden ist |
Im Folgenden Abschnitt werden die Schritte noch einmal ausführlicher beschrieben.
Schritt 1 - Drehen des Trimmpotis R42 auf MittelstellungDieser 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.
Schritt 2 - Installation des Bootloaders auf dem HauptmodulDieser 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).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
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.
Schritt 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.
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.
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:
Weitere Einstellungen sind nicht erforderlich.
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.
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.
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.
Schritt 5 - Installation der Software auf der Sensor-OptionDie 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.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: ✓ 0xE2High: ✓ 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.
Schritt 6 - Kontrolle der Datenübertragung zwischen Sensor-Option und HauptmodulFü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.
Anzeige
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:
Anzeigemodus | Beispiel ohne Sekunden-Option | Beispiel mit Sekunden-Option | Bemerkung |
---|---|---|---|
Uhrzeit | 23:47 | 23:47 29 | Der Doppelpunkt zwischen Stunde und Minute blinkt im Sekundentakt. |
Datum | 30.11. | 30.11. Do. | Das Datum wird nur angezeigt, wenn eine gültige Zeit über DCF77 empfangen oder die Uhr manuell gestellt wurde. |
Sensor 1 | 21.7 | 21.7 °C | Der Sensorwert 1 wird nur angezeigt, wenn ein entsprechender Datensatz empfangen wurde und dessen Wert nicht älter als 2 Minuten ist. |
Sensor 2 | 52. | 52. % | Der Sensorwert 2 wird nur angezeigt, wenn ein entsprechender Datensatz empfangen wurde und dessen Wert nicht älter als 2 Minuten ist. |
Version | 1.01 | 1.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-Variante | Sekunde | Bemerkung | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ||
1 | Uhrzeit | Uhrzeit | Uhrzeit | Uhrzeit | Uhrzeit | Uhrzeit | Uhrzeit | Uhrzeit | Uhrzeit | Uhrzeit | keine Daten vorhanden |
2 | Uhrzeit | Uhrzeit | Sensor 1 | Sensor 1 | Uhrzeit | Uhrzeit | Uhrzeit | Sensor 1 | Sensor 1 | Uhrzeit | nur Sensorwert 1 vorhanden |
3 | Uhrzeit | Uhrzeit | Sensor 2 | Sensor 2 | Uhrzeit | Uhrzeit | Uhrzeit | Sensor 2 | Sensor 2 | Uhrzeit | nur Sensorwert 2 vorhanden |
4 | Uhrzeit | Uhrzeit | Sensor 1 | Sensor 1 | Sensor 1 | Sensor 2 | Sensor 2 | Sensor 2 | Uhrzeit | Uhrzeit | beide Sensorwerte vorhanden |
5 | Uhrzeit | Uhrzeit | Datum | Datum | Uhrzeit | Uhrzeit | Uhrzeit | Datum | Datum | Uhrzeit | nur Datum vorhanden |
6 | Uhrzeit | Uhrzeit | Datum | Datum | Datum | Sensor 1 | Sensor 1 | Sensor 1 | Uhrzeit | Uhrzeit | nur Datum und Sensor 1 vorhanden |
7 | Uhrzeit | Uhrzeit | Datum | Datum | Datum | Sensor 2 | Sensor 2 | Sensor 2 | Uhrzeit | Uhrzeit | nur Datum und Sensor 2 vorhanden |
8 | Uhrzeit | Uhrzeit | Datum | Datum | Sensor 1 | Sensor 1 | Sensor 2 | Sensor 2 | Uhrzeit | Uhrzeit | alle 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.
MenüsteuerungFü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:
Taster | Aktion bei kurzem Tastendruck | Aktion bei langem Tastendruck |
---|---|---|
1 | Wechsel 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) |
2 | Erhöhen des Parameterwertes um 1 | schnelles 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:
|
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:
|
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:
|
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:
|
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, Kü 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, Kü 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:
|
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:
|
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:
|
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:
|
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:
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:
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:
|
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.
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).
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.
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.
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änger | Invertierung |
---|---|
Pollin 810054 | ein |
Reichelt DCF77 MODUL | ein |
Conrad 641138 | aus oder ein - abhängig vom benutzten Ausgang |
ELV 091610 | aus |
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änger | Pull-up |
---|---|
Pollin 810054 | aus |
Reichelt DCF77 MODUL | aus |
Conrad 641138 | ein |
ELV 091610 | ein |
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:
Einstellung | Bedeutung beim Datenempfang vom Temperatur-Messsystem |
---|---|
0 (aus) | Die Anzeige von Sensor 1 ist ausgeschaltet. |
1 ... 27 | Sensor 1 zeigt den Wert von Temperatursensor 1 ... 27. |
28 | Sensor 1 zeigt den Wert vom Luftdrucksensor. |
29 ... 31 | Sensor 1 zeigt den Wert von Luftfeuchtigkeitssensor 1 ... 3. |
Einstellung | Bedeutung bei installierter Sensor-Option |
---|---|
0 (aus) | Die Anzeige von Sensor 1 ist ausgeschaltet. |
1 ... 2 | Sensor 1 zeigt den Wert von Temperatursensor 1 oder 2. |
29 | Sensor 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:
Einstellung | Bedeutung beim Datenempfang vom Temperatur-Messsystem |
---|---|
0 (aus) | Die Anzeige von Sensor 2 ist ausgeschaltet. |
1 ... 27 | Sensor 2 zeigt den Wert von Temperatursensor 1 ... 27. |
28 | Sensor 2 zeigt den Wert vom Luftdrucksensor. |
29 ... 31 | Sensor 2 zeigt den Wert von Luftfeuchtigkeitssensor 1 ... 3. |
Einstellung | Bedeutung bei installierter Sensor-Option |
---|---|
0 (aus) | Die Anzeige von Sensor 2 ist ausgeschaltet. |
1 ... 2 | Sensor 2 zeigt den Wert von Temperatursensor 1 oder 2. |
29 | Sensor 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, Kü 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 Sensortext | Zeichen im Terminalprogramm | Hinweis |
---|---|---|
° | # | |
ä | ae | nur an zweiter Stelle als Kleinbuchstabe möglich |
ö | oe | nur an zweiter Stelle als Kleinbuchstabe möglich |
ü | ue | nur an zweiter Stelle als Kleinbuchstabe möglich |
ß | ss | nur 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, Kü 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 Sensortext | Zeichen im Terminalprogramm | Hinweis |
---|---|---|
° | # | |
ä | ae | nur an zweiter Stelle als Kleinbuchstabe möglich |
ö | oe | nur an zweiter Stelle als Kleinbuchstabe möglich |
ü | ue | nur an zweiter Stelle als Kleinbuchstabe möglich |
ß | ss | nur 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 1 | Offset -30 | Offset -10 | Offset -5 | Offset 0 | Offset 5 | Offset 10 | Offset 30 | Bemerkung |
---|---|---|---|---|---|---|---|---|
22,5 °C | 19,5 °C | 21,5 °C | 22,0 °C | 22,5 °C | 23,0 °C | 23,5 °C | 25,5 °C | Ein Offset von 1 ändert den Wert um 0,1 °C. |
1004 hPa | 974 hPa | 994 hPa | 999 hPa | 1004 hPa | 1009 hPa | 1014 hPa | 1034 hPa | Ein 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 2 | Offset -30 | Offset -10 | Offset -5 | Offset 0 | Offset 5 | Offset 10 | Offset 30 | Bemerkung |
---|---|---|---|---|---|---|---|---|
22,5 °C | 19,5 °C | 21,5 °C | 22,0 °C | 22,5 °C | 23,0 °C | 23,5 °C | 25,5 °C | Ein Offset von 1 ändert den Wert um 0,1 °C. |
1004 hPa | 974 hPa | 994 hPa | 999 hPa | 1004 hPa | 1009 hPa | 1014 hPa | 1034 hPa | Ein 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:
Sensoren | Menü h | Menü i | Menü j | Menü k |
---|---|---|---|---|
kein Sensor | 0 | 0 | keine Änderung | keine Änderung |
DHT22/AM2302 | 1 | 29 | °C | % |
DS2438/HIH4000 | 1 | 29 | °C | % |
1x DS18B20 | 1 | 0 | °C | keine Änderung |
2x DS18B20 | 1 | 2 | °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.
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.
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.
Ü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.
Ü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.
Ü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.
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.
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 :-)