Energie-
Verbrauch
Bewegungs-
melder
ioBroker-DHT22
ioBroker-
Laufschrift
ioBroker LED-
Thermometer
ioBroker-OLED
ioBroker
Multi-OLEDs
ioBroker
Mini-Mülltonne
Ball on Plate
Sonstige
Basteleien
Wort-Uhr in Deutsch / Word-Clock in German | ||||||||||||||||||||||||||||||||||||||||||||||||
Hinweis: Downloads ganz unten auf dieser Seite / Downloads at the bottom of this page
|
||||||||||||||||||||||||||||||||||||||||||||||||
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||
Irgendwie habe ich ein Faible für elektronische Uhren, deshalb stand als neueste Bastelei der Bau einer sog. Wort-Uhr (Wordclock) an. Eine Wortuhr hat keine Zeiger, sondern basiert - wie der Name vermuten läßt ;-) - auf Wörten. Wenn jemand nach der Uhrzeit fragt, sagt man z.B. "Es ist zehn vor halb neun", "Es ist dreiviertel sieben", oder "Es ist elf Uhr" - und genau das zeigt die Wortuhr an. Meistens wird die Zeit im 5 Minuten-Raster mitgeteilt, also "fünf nach", "zehn nach", "viertel nach", "zehn vor halb", etc. und man "unterschlägt" dabei die Minuten, die dazwischen liegen. Diese "unterschlagenen" Minuten kann man mit der Wortuhr aber trotzdem optisch sichtbar machen, nämlich mit 4 Leuchtdioden, die an den 4 Ecken des "Buchstaben-Ziffernblattes" angebracht sind. Die Leuchtdioden symbolisieren jeweils "plus 1 Minute". Zeigt die Wortuhr z.B. "Es ist viertel nach neun" und es leuchten zusätzlich 3 von den 4 Leuchtdioden, so ist es 09:18 Uhr (09:15 plus 3 Minuten). Technisch gesehen basiert eine Wortuhr auf einzelnen Leuchtdioden, bzw. LED-Gruppen (s. Bild 4), welche je nach Uhrzeit eingeschaltet werden und dann durch eine transparente Buchstabenmaske die entspr. Wörter, bzw. die Uhrzeit bilden. Es gibt die "Wordclock" auch fertig zu kaufen, aber z.B. die QLOCKTWO von Biegert & Funk liegt mit ca. 1000 € dann doch etwas über meinem Budget ;-) Selber bauen macht sowieso mehr Spaß als kaufen - also im Internet recherchiert: Es gibt verschiedene Lösungsansätze, die Technik einer Wortuhr umzusetzen: Microcontroller steuern einzelne LEDs z.B. im Multiplexbetrieb an, oder seriell über Schieberegister. Als Microcontroller werden "Standalone"-Controller, oder Arduinos verwendet. Es können anstatt einzelner LEDs auch LED-Stripes verwendet werden, die man einfach auf die benötigte Wortlänge zuschneiden kann (nach jeder 3. Einzel-LED) Da ich mit dem Arduino die meiste Erfahrung habe, sollte die Steuerung also auch hier ein Arduino übernehmen. Multiplexbetrieb kann Schwierigkeiten verursachen, da die Helligkeit der LED's möglichst der Umgebungshelligkeit angepasst werden sollte und es dabei bei Dämmerung/Dunkelheit u.U. zu Flackereffekten kommen kann, bzw. tagsüber die maximale Helligkeit der LED's nicht erreicht wird. Ich wollte die LEDs dimmen und es erschien mir der einfachere Weg, dies mittels Schieberegistern zu erreichen. Nach Internetsuche bin ich auf diese Anleitung gestossen, die für mich am besten umzusetzen war: Es ist ein nicht unerheblicher Aufwand notwendig, um die Technik in einem halbwegs schönen Gehäuse unterzubringen und dabei ist der in der obigen Anleitung erwähnte IKEA Ribba Bilderrahmen (12,99 €) ein guter Tipp, denn bei 4,5 cm Tiefe des Rahmens, kann man die Elektronik dort gut einbauen. 50x50 cm Innenmaße lassen auch ein rel. große "Wort-Maske" zu, so dass sich die Uhrzeit auch aus einiger Entfernung noch gut ablesen läßt. Die "Wortmaske" (siehe auch Bild 9) habe ich allerdings gegenüber der in obiger Anleitung verwendeten, gemäß folgender Skizze abgeändert: ![]() Hier sind als Besonderheiten anzumerken:
Hinweis: Die Wortmaske kann in Original-Größe (im CorelDraw10-Format) ganz unten auf dieser Seite unter "Downloads" heruntergeladen werden. Falls aus CorelDraw10 gedruckt werden soll unter "Drucken" -> "Layout" -> "Gekachelte Seiten drucken" wählen ! Ebenso liegt sie dort als GIF-Datei sowohl in normaler, als auch in gespiegelter Fassung bereit. Elektronische Steuerung (s. Schaltplan Bild 0): Wie hier beschrieben, wird zur Steuerung der Wort-Uhr anstatt eines Arduino Uno, ein Arduino Nano verwendet. Der Arduino erhält seine Zeitinformationen von einem Uhrenbaustein RTC DS3231 (dieser ist software-kompatibel zur DS1703 aus obiger Anleitung). Der Vorteil des DS3231 ist, daß er temperaturkompensiert ist, d.h. seine Genauigkeit ist besser. Der Arduino wandelt die Zeitinformationen in 3 Bytes mit jeweils 8 Bit um (s. Skizze 2), was insgesamt 24 Bit ergibt, also genau so viele, wie benötigt werden, um die 24 LED-Stripes anzusteuern. Diese 3 Bytes, bzw. 24 Bit, werden vom Arduino dann seriell an 3 Schieberegister 74HC595 übergeben. Durch die Verwendung der Schieberegister werden nur 3 PINs des Arduino benötigt, für Data, Latch und Clock. Die Ausgänge der Schieberegister sind mit 24 Transistor Darlington-Schaltungen (untergebracht in 3 ICs vom Typ ULN2803) verbunden, die Ausgänge der ULN2803 steuern dann die entspr. LED-Stripes. Benötigt werden die ULN2803, weil zum Einen die LED-Stripes mit 12V betrieben werden und zum Anderen der Arduino, bzw. die Schieberegister nicht den notwendigen Strom für die LED-Stripes liefern können. Tipp: Nicht! die wasserfesten LED-Stripes verwenden. Diese Stripes sind mit Kunststoff ummantelt und die Anschlußlitzen lassen sich erst nach mühsamen Entfernen des Kunststoffes an den Lötpunkten anlöten. Ich habe einen nicht wasserfesten 5m LED-Stripe mit 600 SMD-LEDs (Typ 3528), also 120 SMD-LEDs pro Meter, verwendet.
Zusätzlich sind noch 2 Taster (Buttons) an den PINs 7 und 8 des Arduino angeschlossen, mit denen die Uhrzeit eingestellt werden kann. Durch Betätigen des Stunde-/Minuten-Tasters, werden jeweils die Stunden, bzw. Minuten, um 1 erhöht. Beim Drücken des Minuten-Tasters, werden außerdem die Sekunden auf "0" gesetzt. So ist eine sekundengenaue Einstellung der Uhrzeit möglich - mittels Vergleich einer Uhr mit Sekundenzeiger. Auf eine automatische Sommer-/Winterzeitumstellung wurde bewusst verzichtet, da dafür das Datum relevant ist. Das Datum könnte man zwar auswerten, aber nicht direkt an der Uhr sehen und deshalb auch nicht mit den Tastern einstellen. Die Umstellung lässt sich ja leicht manuell durch (mehrfaches) Betätigen des Stunden-Tasters durchführen, bis die gewünschte Stunde erreicht ist. Wie eingangs schon erwähnt, sind noch 4 "Minuten-LEDs" (blau, 3mm) an den PINs 5,6 und 9,10 des Arduino angeschlossen. Diese PINs sind PWM-fähig, d.h. über sie kann die Helligkeit der entspr. LED geregelt werden. PIN 11 des Arduino, der ebenfalls PWM-fähig ist, ist mit den OutputEnable-PINs (OE) der Schieberegister verbunden. Duch schnelles Ein- und Ausschalten (PWM) des OE-PINs wird die Helligkeit aller LED-Stripes gesteuert. An PIN A0 vom Arduino ist ein LDR (lichtabhängiger Widerstand) angeschlossen, der die Umgebungshelligkeit erfasst. Die Spannung an diesem Widerstand wird vom Arduino ausgewertet, um dann die PWM-PINs softwaremäßig entspr. zu steuern. Das wiederum resultiert in Helligkeitsänderungen der 4 "Minuten-LEDs", bzw. der LED-Stripes: tagsüber=helles Umgebungslicht läßt LEDs und Stripes hell leuchten (s. Foto 1 am Ende dieser Seite), während abends=wenig Umgebungslicht die LEDs/Stripes entspr. gedimmt werden (s. Foto 2 und Foto 3). Mechanischer Aufbau (s. Bild 4 - Bild 9): Aufgebaut wurde die kpl. Schaltung auf einer Lochrasterplatine ( s. Bild 1 und 2). Dabei wurde darauf geachtet, eine möglichst "längliche" Platine (ca. 22 x 5,5 cm) zu erhalten, damit diese noch neben die "Wort-Maske" in den IKEA Rahmen passt. Zwischenzeitlich hat ein Freund auch eine Platine (170 x 50 mm) dafür entworfen (s. Bild 3). Die "Wort-Maske" wurde mit einem Tintenstrahldrucker spiegelverkehrt, von hinten auf 4 Stck. DIN A4 Overheadfolien gedruckt. Nach meinen Erfahrungen deckt das Schwarz am Besten auf Folien der Firma 3M, Bezeichnung: Transparency Film CG3460. Diese 4 Folien wurden anschließend mit Tesa-Film und schwarzem Isolierband zu einer großen Folie zusammengesetzt. Es stellte sich jedoch heraus, dass das durch das Schwarz noch etwas Licht von den LED-Stripes gelangte, also wurden nochmals 4 Overheadfolien bedruckt, zusammengeklebt und deckungsgleich!!! über die erste Folie geklebt. Das geht ganz gut, in dem man den Tesa-Film an den Rändern der Einzel-Folien anbringt, denn dieser Bereich ist später nicht sichtbar, da er vom Passepartout verdeckt wird. Hinter die Folie wurden noch 4 Stck. Transparent-Papier (A3) doppellagig geklebt, damit das Licht der LED-Stripes diffuser, bzw. homogener wird. Sollte ich nochmals eine Wort-Uhr bauen, werde ich aber wohl einen (Online-)Print-Shop in Anspruch nehmen, der kpl. Transparent-Folie mit den Maßen von ca. 40x40 cm in einem Stück drucken kann, evtl. auch als selbstklebende Folie. Damit das Licht einzelner LED-Stripes nicht die Buchstaben benachbarter Stripes beleuchtet, wurde noch ein "Blendrahmen" (s. Bild 4 und Bild 5) benötigt. Dieser wurde aus Buchenholz-Leisten mit den Maßen 20x5 mm angefertigt. Dazu an den jeweiligen Kreuzungspunkten der Leisten einen 5mm breiten Schlitz bis zur Hälfte (10 mm) sägen, dann können die Leisten entspr. zusammen gesteckt werden. (Ist eine Mordsarbeit ;-) ) Anschl. die Kreuzungspunkte mit etwas Holzleim fixieren. Ich habe den "Blendrahmen" dann noch weiß eingesprüht, damit die einzelnen Kammern das Licht besser reflektieren. Die LED-Stripes leuchten aber so hell, dass ich bei weiteren Wortuhren auf das Lackieren verzichtet habe, Dann wurde die Position des Blendrahmens auf der Original IKEA Papprückwand markiert und die enspr. "Kammern" für die LED-Stripes mit Bleistift angezeichnet. Anschließend jeweils zwei kleine Löcher auf der linken Seite jeder Kammer bohren, durch die dann die Anschlußlitzen für die LED-Stripes geführt werden ( s. Bild 6). Die LED-Stripes entspr. der Länge der jeweiligen Kammer zuschneiden (ist nur nach jeder 3ten LED möglich!) und auf die glatte Seite der IKEA-Rückwand kleben. Falls einzelne Stripes zu lang für ihre Kammer sind, einfach das Ende etwas hochbiegen und wenn der Blendrahmen aufgesetzt wird, die Überlänge darauf kleben. Nun können alle Plus-Anschlüsse (Anoden) der LED-Stripes parallel mit einer Litze verbunden werden. Die Minus-Anschlüsse (Kathoden) werden jeweils an eine Ader eines 8poligen Flachbankabels gelötet ( s. Bild 6 - Bild 8). So ergeben sich 3 Flachbandkabel mit 8 Adern ( = 24 Anschlüsse), deren Enden auf je eine 8 polige Stiftleiste gelötet werden. Diese 3 Stiftleisten können dann bequem auf die entspr. Buchsenleisten der Platine gesteckt werden. Zum Schluß noch Anschlußlitzen an die 4 blauen "Minuten-LEDs" löten und an das andere Ende jeder Anschlußlitze jeweils eine 2polige Stiftleiste anlöten. Tipp: Eine Ader, z.B. die, welche zur Anode der LED führt, mit wasserfestem Stift markieren, dann ist es einfacher, die 2polige Stiftleiste richtig herum in die entspr. Buchsenleiste zu stecken.. Den LDR in eine runde LED-Fassung setzen und ebenfalls mit einer 2poligen Anschlußlitze versehen und in die entspr. Bohrung stecken. Durch die Verwendung einer langen LED-Fassung (oder Kunstoffröhrchens) läßt sich der LDR gut in der Bohrung befestigen, evtl. zusätzlich das Röhrchen in der Bohrung verkleben.. Tipp: Jede Ader an den Stiftleisten am Besten mit Schrumpfschlauch überziehen, das beugt Kurzschlüssen vor ;-) Jetzt kann die Lochrasterplatine mit der Schaltung auf der IKEA-Rückwand befestigt werden. Da die Bauteile auf der Platine eine gewisse Bauhöhe haben, habe ich einfach 2 Rechtecke ausgesägt und die Platine dann von hinten festgeschraubt (s. Bild 7 und Bild 8). Dadurch wird die Gesamthöhe verringert und zusätzlich ergibt sich der Vorteil, dass die Buttons zum Stellen der Uhr bequem erreicht werden können. Außerdem kommt man so gut an die USB-Buchse des Arduino Nano heran, falls evtl. noch Umprogrammierungen vorgenommen werden sollen. Letztendlich habe ich als Rückwand noch eine 4mm Sperrholzplate (50x50 cm) im Baumarkt besorgt und in diese ebenfalls mit der Laubsäge eine rechteckige Aussparung für die Elektronik gesägt s. (Bild 9). Versorgt wird die Wort-Uhr von einem 12V/1A Steckernetzteil und nimmt max. ca. 300-400 mA auf, da ja nicht alle LED-Stripes gleichzeitig leuchten. Optional (s. Bild 11): Ich habe die Wort-Uhr mit 2 kunstoff-ummantelten Spann-Seilen ( Meterware für 12V-Seilsystem aus dem Baumarkt) an unserer Holzdecke befestigt. Auf Foto 1 unten auf dieser Seite, kann man die beiden Seile erkennen. Diese Seile dienen gleichzeitig auch als Spannungszuführung. Um die Seile im IKEA-Rahmen zu befestigen, müssen zuerst 2 Löcher entspr. Durchmessers oben in den Rahmen gebohrt werden und anschl. die Seile durchgesteckt werden. Dann kann man im Rahmen an die Ende der Seile dünnere Anschlußlitzen zur Spannungsversorgung löten. Damit die Seile nicht rutschen, einfach an der Innenseite des Rahmens dünne Kabelbinder um die Seile ziehen. Tipp: Mit Kabelbindern um die Seile kann man den "Hänge-Rahmen" prima waagerecht ausrichten. Vorsichtshalber habe ich zusätzlich aber noch kleine Seilklemmen angebracht - man weiß ja nie ;-) Von einem selbstgefertigten Holz-Anschlußkasten an der Zimmerdecke wurde dann durch einen Kabelkanal ein Lautsprecherkabel (mißbraucht als 12V-Leitung) zum Netzteil geführt, welches in einer Steckdose an der Wand steckt. - Den Kabelkanal selbst kann man nur sehen, wenn man direkt darunter steht, ansonsten wird er von einem Deckenbalken verdeckt. Bauteil-Liste (keine Gewähr für Vollständigkeit): Elektronik ( s. Schaltplan Bild 0 ):
Gehäuse etc.:
Alternative Blendrahmenherstellung (s. Bild 12 - Bild 16): Freunde haben die Wortuhr gesehen und fragten, ob ich ihnen auch eine bauen könnte. Ich stimmte zu, allerdings wollte ich mir die mühsame Sägerei mit den dünnen Buchenholzleisten vereinfachen, und habe dieses Mal die Rahmen aus 18mm MDF-Platten gesägt. Zuerst wurde mit CorelDraw10 eine Schablone der Wörter/Abstandsleisten im Maßstab 1:1 (B x H: 40cm x 42cm) entworfen und auf 4 Stck. DIN A4-Papier ausgedruckt und diese mit Tesa-Film zusammengeklebt. Der Ausdruck geht mit CorelDraw rel. einfach, da es die Option "Drucken" -> "Layout" -> "Gekachelte Seiten drucken" gibt. Damit werden großformatige Ausdrucke auf die entspr. Anzahl an DIN A4-Seiten aufgeteilt.
Anschließend wurden von Buchenholzleisten (BxHxL: 5mm x 20mm x 950mm) entspr. Abschnitte (ca. 29mm) abgesägt und gem. Schablone in die Aussparungen geklebt (s. Bild 14). Nachdem der Leim getrocknet war, wurden die etwas überstehenden 20mm hohen Leisten mit einem Bandschleifer bündig auf die 18mm MDF-Platte abgeschliffen. Zum Schluß noch Löcher für die Kabeldurchführungen zu den LED-Stripes in die Papprückwand des IKEA Ribba Rahmen bohren, LED-Stripes zuschneiden, aufkleben und an die 3Stck. 8poligen Flachbankabel anlöten -> Blendrahmen ist fertig. | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Nachtrag 23.02.2016 Modifizierung der Helligkeits-Steuerung: Einige Freunde und Verwandte, denen ich Wort-Uhren geschenkt hatte, bemängelten, daß sie abends zu hell leuchten. Daraufhin habe ich einige Änderungen vorgenommen: 1.) Einfügen von 3 Dioden in die Plus-Leitung der LED-Stripes, so daß diese jetzt mit geringerer Spannung versorgt werden: 12V-0,7V-(3x0,7V) = 9,2V. (Ist bei Tageslicht immer noch hell genug) Man könnte natürlich auch anstatt der Dioden einen 9V-Regler verwenden, aber hier war es halt am einfachsten, die freiliegende Plus-Leitung aufzutrennen und die Dioden dazwischen zu löten. 2.) Vergrößerung der Vorwiderstände für die Minuten-LED's von 470 Ω auf 5,6 kΩ. siehe rot hinterlegte Änderungen im anl. Schaltplan: | ||||||||||||||||||||||||||||||||||||||||||||||||
![]()
Bild 17 Schaltplan mit modifizierter Helligkeitssteuerung (Zum Vergrößern Grafik anklicken) | ||||||||||||||||||||||||||||||||||||||||||||||||
3.) Softwaremodifikation der Helligkeitssteuerung Aufgrund der Hardwareänderungen habe ich das Mapping des Helligkeits-Sensors (LDR), sowie die Max- und Min-Werte der LED-Stripes und Minuten-LEDs wie folgt angepasst: loop(){ sensorValue = analogRead(sensorPin); // Read LDR-values sensorValue = map(sensorValue,0,1023,4,255); // Map LDR-values (1 = min brightness of LED-Stripes, 0 = off) // Why mapping from 4 and not from 0 ?: // Because then the maximum of invSensorValue = 255-4 = 251, so // the LED-Stripes are not switched off completely invSensorValue = 255 - sensorValue; // Invert sensorValue for dimming LED-Stripes // set brightness for all LED-Stripes if(sensorValue >200 ){invSensorValue = 0;} // 0 = maximum brightness of LED-Stripes analogWrite(oePin, invSensorValue); // Write at OE-Pin's of 74HC595 to change brightness of Stripes // set min/max brightness of minute/corner LEDs brightnessLEDs = sensorValue/4; // Divisor (4) depends on your type of LEDs - just try if(brightnessLEDs >50){brightnessLEDs = 50;} // 50 = defined maximum brightness of corner LEDs if(brightnessLEDs <2) {brightnessLEDs = 2; } // 2 = defined minimum brightness of corner LEDs // (if it would be 0, the LED's would be turned off completely) : : : : } // end of loop | ||||||||||||||||||||||||||||||||||||||||||||||||
Wer es also lieber "dunkler" mag, kann den Original-Code zur Helligkeits-Steuerung ( Im Sketch am Anfang der loop() ) durch den obigen Code ersetzen. (copy & paste des roten Codes) |
Downloads | |
Arduino-Sketch: | wordclock_deutsch.ino |
Front_final.cdr (CorelDraw V.10) : | Front_final.cdr |
Front_final_black.cdr (CorelDraw V.10) : | Front_final_black.cdr |
Front_final_black_gespiegelt.cdr (CorelDraw V.10) : | Front_final_black_gespiegelt.cdr |
wortfolie.pdf: | wortfolie.pdf |
wortfolie_gespiegelt.pdf: | wortfolie_gespiegelt.pdf |