Für
alle
Freunde des gepflegten Schaffens, gibt es zusätzlich zur GenuhR zwei weitere Online-Uhrenprojekte im Steampunk-Design. Das eine ist das Octet-7, ein interdisziplinäres Projekt mit Siebensegmentanzeigen, das andere ist dieses hier. Der Zeitpunkt der Entstehung liegt zwar schon ein paar Jahre zurück, was aber der Sache keineswegs ihren Reiz nimmt. Im Gegensatz zur GenuhR sind die Zutaten dieses Projektes auf dem heutigen Standard und dementsprechend einfacher zu besorgen. Die Rede ist vom ... Weckomat
|
|||||||
Im Aussehen unterscheidetet sich der Weckomat erheblich von der
GenuhR und dem Octet-7. In Sachen Funktionalität sind sie sich jedoch sehr ähnlich: Der Weckomat bezieht Zeit und
Datum automatisch
per DCF (Funkzeit, s. bei GenuhR sowie mein Artikel "Die Sache mit der
Funkzeit" aus der Zeitschrift c't Hacks / Make 02/2014, S.84-91,
kostenlos herunterladbar bei heise.de) und stellt damit seine innere Uhr. Diese Uhr läuft auch bei Ausbleiben des Funksignals oder
einer Unterbrechnung der Stromversogung über einen längeren Zeitraum hinweg
zuverlässig weiter, so dass bei Wiederkehr der Stromversogung die
Uhrzeit unmittelbar wieder zur Verfügung steht (Gangreserve). Ebenso verhält es sich
mit der Umstellung Sommer/Normalzeit. Die Zeitpunkte im Frühjahr und im
Herbst werden von der Software der Uhr selbst ermittelt und die
Umstellungen finden unabhängig von einer Funkverbindung
statt. Damit erübrigt sich dann auch die obligatorische Frage nach dem
Aufwachen an einem Morgen nach der Umstellung: Zeigt die Uhr noch die alte, oder schon die neue Zeit an?
Auch die Sorge, ob der Wecker nach Ausbleiben der Stromversorgung die eingestellte Weckzeit etwa vergisst, ist unbegründet. Alle Einstellungen merkt sich der Weckomat im internen, nichtflüchtigen Speicher, d.h. auch ohne Strom bleiben alle Parameter erhalten und das gilt natürlich auch für einen eventuell gestellten Wecker. Wie auch schon zu Zeiten der GenuhR, die Software des Weckomaten verfügt über das Wissen, wann welche Feiertage sind (staatliche wie auch christliche). Auf Wunsch kann an solchen Feiertagen der Wecker stumm bleiben. Man spart sich das Ausschalten und - vielleicht noch wichtiger - erspart sich das Verschlafen, wenn man vergisst, den vortags ausgeschalteten Wecker wieder zu aktivieren. Dabei wird berücksichtigt, dass in den verschiedenen Bundesländern unterschiedliche Regelungen bezüglich der Feiertage existieren. Der Nutzer kann selbst festlegen, in welchem Bundesland er wohnt - sprich welche Regelung für ihn in Frage kommt. Intern richtet sich der Weckomat dabei nach dieser Tabelle. Als Service zeigt der Weckomat die Umgebungstemperatur an. Der zuständige Sensor ist dieses Mal ein DS1621, von dem ich mir eine höhere Genauigkeit erhoffe. Der in der GenuhR eingesetzte eingesetzte LM92 lag schon mal ±3°C daneben. Wie der Name schon vermuten läßt, ist der Weckomat in erster Linie als Wecker konzipiert. Das bedeutet, er steht irgendwo im Sichtbereich des Schlafenden. Mich persönlich hat es immer gestört, ständig die Anzeige eines Weckers sehen zu müssen, wenn ich nachts mal ein Auge auftue. Dabei ist die Helligkeit nicht das Problem, das wird per LDR der Umgebungshelligkeit angepasst. Es ist mehr der "ich will dann gar nicht wissen wie spät es schon ist" - Effekt. Aus diesem Grund habe ich den Weckomat mit einem Infrarotsensor ausgestattet, der Bewegungen im Umfeld (Vorfeld) des Gerätes registriert. Der Controller schaltet die Anzeige einfach ab, wenn sich eine Zeitlang nichts regt. Möchte man dann doch wissen, wie spät es ist, genügt eine einfache Bewegung im Erfassungsbereich des Bewegungsmelders. Angenehmer Nebeneffekt dieser Abschaltung, ist eine nachhaltige Lebensverlängerung der Anzeige. Ein weiterer Einsatzort findet sich in der Funktion der Weckwiederholung. Wer sich nach Eintreten des Weckalarms gerne noch ein paarmal umdreht, kann die Schlummerfunktion mittels Bewegungsmelder aktivieren - Handzeichen genügt. Als externe Beschaltung gibt es wie bei der GenuR neben dem Netzteil eine geschaltete Steckdose, mittels der sich der Weckomat zu einem Radiowecker machen läßt. Wer jedoch vorhat seine Kaffemaschine zu schalten, sollte über ein stärkeres Solid-State-Relais nachdenken, denn: Das aktuell Eingesetzte hat eine Schaltleistung von ca. 400 Watt. Aus naheliegenden Gründen habe ich, wie bei der GenuhR, Netzteil und Schaltrelais zusammen in ein Gehäuse verbaut. Eine externe Bedienungsanleitung als PDF gibt es hier nicht. Der Umgang ist so einfach, dass die folgende Erklärung reichen wird: Bedienelemente des Gerätes sind Drehinkrementalgeber, LED und eine Taste. Mittels des Drehinkrementalgebers wird die Weckzeit eingestellt. Drehen verändert die Weckzeit, Drücken schaltet den Wecker ein bzw. aus. Einen gestellten Wecker erkennt man am Glockensymbol oben rechts in der Anzeige und an der leuchtenden LED. Die Taste hat nur die alleinige Aufgabe einen angeschlossenen Verbraucher direkt zu schalten. Ausgehend von einem Radio erscheint dazu in der Anzeige ein animiertes Notensymbol. Das Menü der Einstellungen erreicht man, indem man den Drehinkrementalgeber länger als 4 Sekunden gedrückt hält. Die Bedeutung der verschiedenen Einstellungen ist in dieser Tabelle zusammengefasst. |
|||||||
Hardware | |||||||
Anders als bei der GenuhR zeigt der Weckomat seine Informationen auf
einem 2,7" Punktmatrix-OLED an. Es verfügt über eine in der
Microcontrollerwelt schon recht ansehnliche Auflösung von 128×64
Pixels. Dank der OLEDs ist die Darstellung
sehr scharf und hat einen eindrucksvollen Kontrast. Bei dem hier
eingesetzten Typ handelt es sich um das VGY12864L-S005. Ich habe die
gelbe Variante für 5V im Einsatz. Man bekommt es bei einem in
Deutschland
wohlbekannten Eletronikanbieter (Nr. 180849, Stand: 2013). Ebenfalls dort erhältlich ist der
passive IR-Bewegungssensor AMN3 von Panasonic™ (Nr. 504927, Stand: 2013). Er ist zwar
nicht ganz billig, jedoch angenehm klein (Fingerhut)
und zuverlässig. Gerade Letzteres ist keine Selbstverständlichkeit. Der
eingesetzte Drehinkrementalgeber ist von DDM Hopt & Schuler und hat
eine eine 2er Rasterung. Man kann natürlich auch andere
einsetzen, insofern sie die passende Rasterung haben. Dazu, und zum Thema Drehinkrementalgeber allgemein, hier ein kurzer Artikel. Das Herzstück des Weckomaten bildet dieses mal ein ATmega32 von Atmel. Der Controller ist leicht zu bekommen und das Aufspielen der Firmware kann mit einem der handelsüblichen Programmiergeräte vonstatten gehen. In der Schaltung ist dafür die ISP- (H1) bzw. die JTAG-Schnittstelle (H2) vorgesehen. Wer den Programmablauf nachvollziehen möchte, sollte JTAG wählen. Einen entsprechenden Programmieradapter vorausgesetzt ermöglicht sie In-Circuit-Debugging. Auf eine PCB-Vorlage habe ich diesmal verzichtet. Die Schaltung ist so einfach, dass jeder sie nach individuellem Können und Budget selbst aufbauen kann. Meine Platine habe ich so gestaltet, dass alle relevanten Bauteile auf der Oberseite Platz finden und das OLED auf der Rückseite direkt mit der Platine verbaut wird. Auf diese Weise konnte ich das Ganze als Sandwich in das dafür vorgesehene Gehäuse setzen. Alle relevanten Anschlüsse sind mit Pfostenfeldsteckern (JP) herausgeführt. Externe Komponenten des Weckomaten sind neben dem Netzeil an SP1 noch der Helligkeitssensor (LDR) an JP1, das Solid-State-Relais an JP2 (bitte passenden Vorwiderstand R12 wählen), der PIR-Sensor an JP3 und das DCF-Empfangsmodul an JP4. Das hier eingesetzte Modul ist, wie das OLED und der IR-Bewegungssensor, vom wohlbekannten Eletronikanbieter Nr 641138 (Stand: 2013). Bislang habe ich damit gute Erfahrungen gemacht, aber auch Module anderer Herkunft sind denkbar. Gegebenenfalls ist dazu der Pullup R15 anzupassen oder ganz wegzulassen. Wie beispielsweise bei dem von Reichelt vertriebenen Modul (Nr. DCF77 MODUL). Es gibt das PWM-Signal über einen recht schwachen Push-Pull-Ausgang aus. Jedoch stellte sich heraus, dass das Modul extremst empfindlich auf Rippeln der Versorgungsspannung reagiert, was im Datenblatt aber auch nicht unerwähnt bleibt. Schon bei 40mV stellte es den Dienst komplett ein. Leider sind Rippeln bei Schaltreglern aber nicht gänzlich zu vermeiden. Erst mit einem 3K3 Längswiderstand plus 100nF Glättungskondensator konnte ich das Modul letztlich doch zur Zusammenarbeit bewegen. An JP5 ist der I²C-Bus herausgeführt. Der Controller erwartet dort einen Temperaturchip vom Typ DS1621. Bleibt noch JP7 zu erwähnen, an den die Bedienkonsole angeschlossen wird. Die Konsole besteht aus einem Drehinkrementalgeber mit Taste, einer zusätzlichen einzelnen Taste und einer LED (bitte passenden Vorwiderstand R11 wählen). |
|||||||
Software | |||||||
Kommen
wir zur Software. Sie ist komplett in C geschrieben und nutzt den vom Controller zur Verfügung gestellten Platz von 32K weitestgehend aus.
Wer mehr braucht, dem sei ein ATmega644 ans Herz gelegt. Er ist
Pinkompatibel, verfügt aber über doppelt so viel Programmspeicher. Als
Entwicklungsumgebung kam das von Atmel kostenlos zur Verfügung
gestellte AVR-Studio (V4.19) zum Einsatz. In Kombination mit dem GNU Compiler
für
AVR-Controller (WinAVR) ist das Ganze eine leistungsfähige IDE mit
Debugging-Möglichkeit. Wie auch bei der GenuhR, stelle ich allen
Interessierten die Quelltexte auf Anfrage zur Verfügung. (Atmel-Studio-4.19
Projekt). Die fertig übersetzte Firmware (V1.5) liegt im Intel-Hex-Format vor
und kann unmittelbar auf den Controller "geflasht" werden. Als
Einstellungen für die Fusebits empfehle ich 0x89BD, Lockbits
müssen nicht gesetzt werden (0xFF). | |||||||
Aufbau | |||||||
Im Gegensatz zur GenuhR habe ich bei diesem Projekt kein spezielles
Gehäuse gewählt oder Frontplatten fräsen lassen. Jeder ist also bei der
Umsetzung seiner individuellen Designvorstellung selbst gefragt. Meine war Folgende: Als Grundlage dient im wahrsten Sinne des Wortes ein ca. 1cm dickes, unbehandeltes 30 Jahre altes Brett aus Traubenkirschholz. Darin eingelassen ist die Konsole. Sie besteht aus einem geschliffenen und lackierten Aluminiumblech, das den Drehinkrementalgeber, eine weiße LED und ein Edelstahl-Taster aufnimmt. Die Kabel dazu verlaufen in einem Schacht auf der Unterseite des Brettchens zu zwei Edelstahl-Rohren, die senkrecht auf dem Brettchen stehen und mit einer 90°-Krümmung das Gehäuse mit der Weckomat-Zentraleinheit halten. In die Enden der Rohre sind jeweils Außengewinden geschnitten, so dass sie neben der Funktion als Kabelkanal auch als stabile Halterungen dienen. Das Gehäuse ist ein ca. 25×102×75 mm (H×B×T) großes Aluminiumgehäuse, das die Controller-Platine mitsamt Display beherbergt. Auf einer Seite ist eine 63×32 mm große Aussparung durch das das Display zu sehen ist. Mit auf der Vorderseite ist der LDR und der IR-Bewegungsmelder integriert. Im hinteren Teil des Brettchens ist der Temperatursensor unter einer rechteckigen Aliminiumplatte untergebracht. Dieser Platz stellt sicher, dass die Umgebungstemperatur nicht duch thermische Einflüsse der Zentraleinheit oder des Netzteils verfälscht wird. | |||||||
|
|||||||
Für Fragen, Angegungen und Hinweise bin ich immer offen: | |||||||
|