![]() |
Zusammen
mit der Nixie-Röhre war sie in der Anfangszeit der Digitaltechnik die
erste Anzeigenart, die menschlich lesbare Ziffern hervorbrachte: Die
Siebensegmentanzeige. Sie heißt so, weil der Dezimalpunkt als
Segment nicht mitgezählt wird. Aus den übrigen sieben Leuchtbalken
lassen sich leicht alle arabischen Zahlzeichen formen. Im Gegensatz zur
Nixie-Röhre, Gott habe sie selig, hat sich die Siebensegmentanzeige bis
heute als Ausgabemedium etabliert. Nicht nur ihre minimalistische Art,
auch die unterschiedlichen Darreichungsformen ihrer Leuchtelemente,
haben ihr das Überleben gesichert. Siebensegmentanzeigen gibt es aus Glühbirnen, Vakuum-Floureszenzen, Flüssigkristallen
und vielen anderen Erscheinungsformen. Aber das wohl am häufigsten
eingesetzte Medium ist die LED. Und in dieser Form kommt sie auch in meinem nächsten Weckuhr-Projekt zum Einsatz. Dort bildet eine Gruppe von acht Siebensegmentanzeigen das Ausgabemedium der Uhr und das verhalf dem Projekt auch zu seinem Namen ... |
|||||||||||||||
Octet-7 |
||||||||||||||||
|
![]() |
|||||||||||||||
|
|
|||||||||||||||
|
Wie
schafft man es, eine Digitalanzeige komplett in Glas einzugießen? Gar nicht. Die überwiegende Mehrzahl elektronischer
Komponenten würde das Versenken in flüssigem Glas nicht überleben. Um
also
herauszubekommen, wie eine in einen Glaskörper vergossene Anzeige
aussehen wird, muss eine andere Möglichkeit her. Naheliegend ist es,
keinen massiven Glasstab zu verwenden, sondern ein Glasrohr, in das die
Anzeige samt Elektronik, wie bei einem Buddelschiff verstaut wird.
Danach wird das Rohr mit einer Substanz geflutet, die durchsichtig und
nichtleitend ist und sich so mit dem Glas verbindet, dass keine Grenzen
am optischen Übergang auftreten. Zuerst dachte ich an Silikonöl.
Silikonöl erfüllt die drei Eigenschaften, hat aber den Nachteil flüssig
zu sein. Das Problem würde sich nicht gleich zu Anfang zeigen sondern
erst nach einiger Zeit. Die Viskosität des Öls bahnt sich im Laufe der
Zeit seinen Weg nach außen und verursacht Pfützen. Im Gegenzug dazu
bildet sich am oberen Rand der Röhre eine Luftblase, die das
Anzeigeröhrchen in eine übergroße Wasserwaage verwandelt. Also, kein
Öl.![]() ![]() |
|||||||||||||||
|
||||||||||||||||
|
Die Anzeige![]() Damit der Chip in seinem Silikon-Bett nicht zu heiß wird, ist der Maximalstrom der Segmente mittels R1 auf ca. 25mA begrenzt. Zusätzlich wurde dem IC noch ein schmaler Kühlkörper spendiert, was die Wärmeabfuhr erleichtert. Die Kommunikation zwischen Anzeige und Controller ist durch ein 3-Leiter-SPI realisiert. Trotz der moderaten Übertragungsfrequenz von knapp 2 MHz, sollte man Störungen berücksichtigen und die Anschlussleitungen nicht zu lang werden lassen. Bei der Octet-7-Uhr sind es ca. 30 cm. Der Schaltplan der Anzeige ist links zu sehen, ebenso das Layout der Platine, die extra so geformt ist, dass sie in ein Glasröhrchen mit 19mm Innendurchmesser passt. Die Daten der Anzeige, sowie auch der der anderen Komponenten, sind im technischen Dokument zusammengefasst. Darin finden sich auch Stücklisten und Pinbelegungen. |
|||||||||||||||
|
||||||||||||||||
|
Das SteuergerätDie Kombination aus Bedieneinheit und Controllermodul bildet das Octet-7 Steuergerät.![]() ![]() ![]() Vielleicht noch ein Wort zur Spannungsversorgung: Die ganze Uhr arbeitet auf Basis von 5V. Es gibt nun zwei Optionen die Uhr mit der nötigen Spannung zur versorgen: Entweder man nutzt ein stabilisiertes Netzteil, das direkt die nötigen 5V liefert oder man überlässt dem integrierten Schaltregler die Arbeit und versorgt die Uhr mit einer Gleichspannung irgendwo zwischen 9 und 30 Volt. Nutzt man die direkte 5V Versorgung, muss Jumper J1 mit einer Lötbrücke geschlossen werden. Danach kann natürlich die Bestückung des Schaltreglers entfallen. |
|||||||||||||||
|
||||||||||||||||
|
Die FirmwareAnders als bei der GenuhR und dem Weckomaten habe ich mich bei diesem Projekt dazu entschlossen, die Firmware allgemein zur Verfügung zu stellen. Den C-Code habe ich an vielen Stellen kommentiert und dokumentiert. Die Quellen stehen in Form eines Atmelstudio-7-Projektes zum Herunterladen bereit. Übersetzt wird mit der GNU-Toolchain für AVR-Controller, wie sie bereits das Atmelstudio mit an Bord hat, dort allerdings unter dem Namen Atmel-Toolchain. Natürlich ist das Vorhandensein der Atmel (inzwischen Microchip) hauseigenen Entwicklungsumgebung kein Muss. Jede andere, bis hin zum nackten Makefile geht natürlich auch. Nun ist es aber nicht zwingend nötig, die Firmware selbst zu kompilieren. Wer möchte, kann auch die fertig übersetzte Binärdatei (Intel Hex-Format) direkt auf den Controller flashen. Für die Fusebits empfehle ich 0xFD, 0xDB, 0xF7 (Ext/High/Low).Ich habe natürlich den Code für den Octet-7-Wecker nicht komplett neu geschrieben. Viele Passagen und Funktionalitäten sind von der Firmware des Weckomaten und weitergehend sogar von der der GenuhR in den Octet-7-Wecker gewandert. So gesehen ist es also kein Wunder, dass die Weckuhr ähnliche Funktionalitäten hat, wie die Vorgängerprojekte. Octet-7 bezieht seine Zeit aus der Luft. Genauer gesagt aus dem 77,5 kHz Langwellenband, in das die PTB (Physikalisch-Technische Bundesanstalt) die offizielle deutsche Zeit als Funkzeit ausstrahlt. Genaueres zur Funkzeit und wie sie auch in der Octet-7 verarbeitet wird, kann man in meinem Artikel Die Sache mit der Funkzeit aus der Zeitschrift c't Hacks / Make 02/2014, S.84-91 nachlesen. Er ist kostenfrei bei heise.de herunterladbar. Octet-7 empfängt die Funkzeit und stellt damit ihre eigene, interne Uhr. Wie oben bereits erwähnt läuft die Uhr auch bei Ausbleiben des Funksignals oder kleineren Unterbrechung der Stromversorgung weiter, so dass bei Wiederkehr der Spannung 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 aktiven Funkzeit-Verbindung statt, insofern man die Option in den Einstellungen nicht abgeschaltet hat (s. Octet-7 Geräteeinstellung "dSt"). Wie auch schon beim Weckomaten und der GenuhR, verfügt die Octet-7-Uhr über das Wissen wann staatliche und christliche (westeuropäische) Feiertage sind. Je nach Einstellung der Weckerbetriebsart (s. Geräteeinstellung "AO") bleibt an solchen Feiertagen der Wecker stumm. Man spart sich das Ausschalten und - vielleicht noch wichtiger - das Wiedereinschalten. Dabei wird berücksichtigt, dass in den verschiedenen Bundesländern unterschiedliche Regelungen bezüglich der Feiertage existieren. Der Nutzer kann sein Bundesland in der Geräteeinstellung "LAnd" selbst auswählen, intern richtet sich der Weckomat dabei nach dieser Tabelle. Es gibt noch eine Reihe weiterer Einstellungen. Man erreicht das entsprechende Menü, indem man den Druckknopf des Drehinkrementalgebers länger als 4 Sekunden gedrückt hält. ![]() Eine Drehung am Inkrementalgeber-Knopf öffnet das Weckzeit-Menü. Es besteht aus nur zwei Menüpunkten bzw. derer drei, wenn man die Menü verlassen-Funktion mitzählt. Als Erstes erscheint die aktuell eingestellte Weckzeit. Durch Drücken und Drehen kann sie in Schrittweiten von 5-Minuten verändert werden. Der zweite Menüpunkt ermöglicht das explizite Ein- und Ausschalten des Weckers. Ist der Wecker zum Zeitpunkt des Menüpunktaufrufs gestellt, erscheint dort "AL Aus", andernfalls "AL Ein". Ein gestellter Wecker ist an der leuchtenden LED D1 im Display zu erkennen. Dabei zeigt D1 auch einen implizit gestellten Wecker an: Zehn Stunden vor Eintritt des nächsten Weckalarms reaktiviert sich der Wecker von selbst und D1 beginnt wieder zu leuchten. Wird der Wecker explizit gestellt, gilt jedoch stets der nächstmögliche Wecktermin. ![]() ![]() Ein weiteres Einsatzziel findet sich in der Funktion der Weckwiederholung. Wer sich nach Eintreten des Weckalarms gerne noch einmal im Bett umdreht, kann die Schlummerfunktion mittels Bewegungsmelder aktivieren - Handzeichen genügt. Parametrisieren lässt sich die Schlummerfunktion in den Einstellungen "SnoSEn", "SnoLE" und "Snoo". Ein weiterer, schon oben angesprochener Sensor in der Frontplatte ist der Fotowiderstand (LDR). Wie auch schon bei GenuhR und dem Weckomaten dient der LDR dazu, die Helligkeit der Anzeige an die Helligkeit der Umgebung anzupassen. Das ist insbesondere bei Dunkelheit von Vorteil. | |||||||||||||||
|
||||||||||||||||
|
Der AufbauKommen wir zum Aufbau. Größte Herausforderung dabei stellte wohl die Integration der Glasröhre mitsamt ihrer Anzeige, aber dazu gleich mehr. Fangen wir unten an.Das Bodenteil ist aus Beton. (Also ein Stein). Selbst gegossen. Versiertere Leser werden hier zurecht vielleicht zu feinkörnigerem Ausgangsmaterial raten, aber für den Fuß dieser Weckuhr war Gröberes auch akzeptabel. ![]() ![]() ![]() ![]() ![]() ![]() Die Glasröhre mit der Anzeige hat Ähnlichkeit mit einem Reagenzglas. Doch etwas breiter im Durchmesser lag ihre Aufgabe ursprünglich wohl darin, eine Blume zu halten, doch sie als Vase zu bezeichnen wäre vielleicht etwas übertrieben. Mit einem Reagenzglas gemeinsam hat sie die leichte Ausstülpung an der Öffnung oben. ![]() Da es ohne größeren Aufwand nicht möglich war, die Ausstülpung loszuwerden, musste eine Lösung her, die Glasröhre mitsamt ihrer Ausstülpung zu befestigen. Da bezüglich der Maße und der Ausmaße der Halterungen Grenzen gesetzt sind, habe ich hier eine exakt passende Halterung mittels 3D-Druck hergestellt. Der linke und der rechte Halter sehen zwar gleich aus, jedoch besteht der linke aus der eigentlichen Haltevorrichtung und einem Ring. Die ausgestülpte Seite des Glasrohres kann im Halter versenkt und dann mittels des Rings arretiert werden. Letztendlich wird die Glasröhre zwischen die Halterungen gesetzt und diese auf der Betonplatte befestigt. Die Kabel laufen durch einen dafür vorgesehenen Kabelschacht im Inneren der Konstruktion bis auf die Unterseite des Bodenteils. Damit sich das Gehäuse des Octet-7 Steuergerätes optisch auf gleicher Höhe zur Anzeige befindet, musste es auf einem Sockel passender Höhe platziert werden. Es war naheliegend, diesen Sockel ebenfalls per 3D-Drucker herzustellen. Wie bei der Anzeigenhalterung verläuft im Inneren des Sockels ein Kabelschacht, durch den die elf Anschlussleitungen zum Controller-Modul führen. Das Aluminiumgehäuse ist durch vier Schrauben mit dem Sockel verbunden. Da der Abstand zwischen Platine und Boden im Inneren keinen Platz für die Kontermuttern zulässt, wurde das Octet-7 Steuergeräte um 180° verdreht montiert, also auf dem Dach. Die Bauteile auf der Platine lassen zwar ausreichend Platz zum Deckel, trotzdem sollte man darauf achten, an welcher Stellen man die Bohrungen für die Befestigung vorsieht. ![]() ![]() Bleibt noch die Netzteil-Einheit. Sie vereinigt das Netzteil für die Spannungsversorgung und ein Solid-State-Relais für den Schaltkontakt. Es ist nicht nötig, das Netzteil selbst aufzubauen. Im Handel findet man genügend fertige Module, die man für die Reintegration mit dem Solid-State-Relais umfunktionieren kann. Um Ausfälle und Fehlfunktionen zu vermeiden, würde ich bei der Auswahl des Moduls allerdings dazu raten, etwas auf Qualität zu achten - also vielleicht nicht gerade das billigste aus der Grabbelkiste zu verwenden. ![]() ![]() ![]() ![]() Die Verschaltung der Komponenten findet überwiegen auf der Unterseite des Bodenteils statt. ![]() Den Abschluss des Aufbaus, der aus technischer Sicht den Anfang der ganzen Sache darstellt, bildet eine schaltbare Zwischensteckdose. Überflüssig zu sagen, dass in der Steckdose und in der Netzteil-Einheit 230V - herrschen, also aufgepasst! | |||||||||||||||
| Alles einzeln herunterladen? Nicht nötig. Ich habe das komplette Projekt samt Quellcode, Doku, Gerberdaten und sogar
STL-Dateien für den 3D-Druck in ein ZIP-Paket zusammengeschnürt und links zum herunterladen bereitgestellt. Das
Urheberrecht bleibt
natürlich bei mir (geht auch gar nicht anders) aber ich habe das
Projekt dieses Mal unter eine FreeBSD-Lizenz gestellt. Das heißt, es ist
frei nutzbar, jeder kann es
nachbauen
und nach Belieben einsetzen. Ich würde mich allerdings freuen, wenn man
mich bei Projekten erwähnt.
Und: Für Fragen, Angegungen und
Hinweise bin ich immer offen ... | |||||||||||||||
| ![]() |