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. Aber es gibt eine Alternative: Vergießbares Silikon. Das gibt es im Handel zwecks Isolation von Verteilerkästen im Außenbereich. Es wird aus zwei Komponenten zusammengemischt und härtet zu einem Gelee aus, einer Art Silikon-Götterspeise. Die Substanz, ist vollkommen klar, lässt sich gut verarbeiten und verschmilzt quasi mit dem Glas. Das Resultat ist ein Glasstab mit integrierter Octet-7-Anzeige. Und das Ganze wäre sogar wasserdicht. |
|||||||||||||||
|
||||||||||||||||
|
Die AnzeigeDie Hauptaufgabe übernimmt der bereits betagte, aber funktionale Treiberbaustein MAX7219 des Herstellers Maxim. Wie bei Digitalanzeigen üblich, steuert er die Anzeige im Multiplexverfahren an. Dabei werden die Masseleitungen der Ziffern reihum mit 800 Hz (Scanrate) durchgeschaltet, was folglich voraussetzt, dass Segmente mit gemeinsamer Masse (Common Catode) zum Einsatz kommen. In der Octet-7 Anzeige werden Siebensegmentanzeigen vom Typ SC36-11 (Kingbright) in gelb verwendet. Sie haben eine Bauhöhe von 14 mm (Ziffernhöhe 9 mm) und passen leicht in die Glasröhre. Die Dezimalpunkte der Stellen 4 und 5 sind nicht mit den LEDs der Segmente verschaltet, sondern als separate LEDs auf der Platine herausgeführt (Jumper-konfigurierbar). Sie haben die Aufgabe, Statusinformationen der Uhr zu liefern. D1 leuchtet, wenn der Wecker gestellt ist, D2 signalisiert Fehlerzustände.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. Es ist in einem kleinen Halbschalengehäuse aus Aluminium (Typ AKG 55 24 50 von Fischer) untergebracht. Die Bedieneinheit, hier als Konsole bezeichnet, besteht nur aus drei Teilen: Drehinkrementalgeber, LED und Fotowiderstand. Alle zusammen sitzen auf der kleinen "Console"-Platine, die hinter der Frontplatte so montiert ist, dass die Bedienelemente durch die Frontplatte hindurchreichen und so die Bedienung der Uhr von vorn möglich machen. Hinter der Konsolenplatine befindet sich das Controllermodul. Das Layout der Controller-Platine ist so gestaltet, dass sie einerseits exakt die Kontaktierung der dazu senkrecht stehenden Konsolenplatine ermöglicht, andererseits aber auch in die Platinen-Schienen des Aluminiumgehäuses geschoben werden kann. Hier ist das Bauraumkonzept dazu. Ebenfalls darin zu sehen sind die Bemaßungen und Aussparungen der Frontplatte. Es fällt auf, dass neben den drei Komponenten der Konsolenplatine noch ein viertes Teil in der Frontplatte auftaucht: Es ist ein passiver IR-Bewegungssensor vom Typ AMN3, wie er auch schon beim Weckomaten zum Einsatz kommt. Er konnte aufgrund seiner Größe nicht in die Konsolenplatine aufgenommen werden und musste daher direkt auf dem Controllermodul platziert werden.Bleiben wir beim Controllermodul. Zentrale Einheit ist ein Microcontroller vom Typ Atmega328P. Der kommt dieses Mal im flachen TQFP32-Gehäuse daher, also SMD. Das spart Platz, so dass mitsamt einigen weiteren SMD-Komponenten das Controllermodul auf eine Fläche von nur 51x33 mm passt. Funktionale Unterstützung erfährt der Controller durch die Echtzeituhr vom Typ DS1307. Er ist über I²C mit dem Controller verbunden und dient dazu, die laufende Zeit konstant zu halten und über kürzere Stromausfällen hinweg zu retten. Der dazu notwendige Stützkondensator C14 ist mit 220µF allerdings etwas schwach bemessen, so dass bei Unterbrechungen von mehr als einer Stunde auch der Echtzeituhrenchip schon mal die Zeit vergisst. Des Weiteren findet sich auf der Unterseite der Controllerplatine ein Piezo-Signalgeber, der der akustischen Signalisierung dient. Wem der Signalgeber im Betrieb zu leise ist, kann mittels eines kleines Loches auf der entsprechenden Gehäuseseite dem Schall den Weg nach außen erleichtern und so den Schalldruck erhöhen. Neben einigen Abkoppelkondensatoren und Entprell-Bausteine sind das die wesentlichen Dinge, die auf dem Controllermodul verbaut sind. 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. Wo wir gerade bei der Bedienung sind: Ein kurzer Druck auf den Knopf des Drehinkrementalgebers schaltet das angeschlossene Solid-State-Relais, und damit wohl im häufigsten Anwendungsfall eine schaltbare Steckdose ein und aus. Dabei ist darauf zu achten, dass die angeschlossene Last die Leistung des SSRs nicht überfordert. 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. Drehinkrementalgeber gibt es von vielen Herstellern. Sie kodieren ihre Bewegungen ähnlich, aber nicht einheitlich. Je nachdem, welcher Encoder verbaut wird, muss im Code die passende Auswertung eingestellt werden. Vorbereitet sind bereits Auswertungen für Inkrementalgeber von DDM Hopt+Schuler, Alps und AB/TT. In meinem Aufbau ist ein Inkrementalgeber von AB/TT verbaut, daher ist dieser Typ auch in meinem Code vorausgewählt. Allgemein zum Thema Drehinkrementalgeber und deren Auswertung habe ich vor einiger Zeit mal einen kurzen Artikel geschrieben. Wie oben schon zu entnehmen war, ist auf der Frontplatte der Octet-7 ein Bewegungsmelder (PIR) integriert. Diesen nutzt der Controller um die Anzeige abzuschalten, wenn sich eine Zeit lang nichts regt. Möchte man dann doch wissen, wie spät es ist, genügt eine einfache Bewegung im Erfassungsbereich des PIRs. Empfindlichkeit und Abschaltzeit können in den Geräteeinstellungen "LEAUS" und "LEdSEn" vorgenommen werden. 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. Ein paar passend zugeschnittene und beschichtete Bretter aus dem Baumarkt wurden zu einer Gussform zusammengesetzt, so dass ein Quader mit einer Kantenlänge von 25×3×7 cm (B×H×T) beim Giessen entstand. Von oben wurde noch ein etwas kleinerer Holzklotz leicht in den flüssigen Beton gedrückt um später eine Vertiefung für die Kabelführung zu haben. Damit wurde die Oberseite des Betongusses später zur Unterseite des Gerätes. Nach Abschluss der Arbeit mussten an passenden Stellen noch Löcher für Befestigungen und Kabeldurchführungen gebohrt werden, dann war das Bodenteil fertig. 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. Mit einem Reagenzglas gar nicht gemeinsam ist der abgeflachte Boden. 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. In der Art der Versorgung und dem Funkzeitempfänger unterscheidet sich die Octet-7-Uhr funktional nicht von ihren Vorgängern. Wie die anderen erhält Octet-7 die Funkzeit mittels eines fertig aufgebauten DCF-77-Empfangsmoduls. Da der Funkzeitempfang leicht zu stören ist, befindet sich das Empfangsmodul in einem externen Gehäuse, dessen Anschlusskabel einen Abstand von bis zu 40cm zur Uhr zulassen. Je nach Gegebenheit ist vielleicht zusätzlich ein Entstörglied, bestehend aus Längswiderstand und Kondensator, zwischenzuschalten. 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. Je nach Typ des eingesetzten Solid State Relais, ist ein spezifischer Vorwiderstand, im Plan mit Rx gekennzeichnet, einzusetzen. Dem Datenblatt kann entnommen werden, welche Stromaufnahme der integrierte Optokoppler hat. Mehr als 30 mA sollten aber nicht fließen, schließlich wird das SSRs direkt vom einem Portpin des Controllers geschaltet. Um die Netzteilplatine und das Halbleiterrelais möglichst platzsparend zusammenbringen, habe ich ein passgenaues Gehäuse ebenfalls mit dem 3D-Drucker hergestellt. Andere Gehäuse erfüllen diese Aufgabe natürlich ebenso gut. Die Verschaltung der Komponenten findet überwiegen auf der Unterseite des Bodenteils statt. Die Kabel lassen sich im Beton mittels Heißkleber gut fixieren. Der Verdrahtungsplan der Komponenten dazu findet sich nebenstehend, ebenso die Anschlussbelegungen meiner Platinen. 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 ... | |||||||||||||||
|