Bastelprojekte: Elektronik

WoDoCoBo B: Moodlight

Bastelprojekte: - Hortlicht - Flintstone - Moodlight -Mood Cluster - Dragonology - Doomsday Machine -
Moodlight

Schon seit einer ganzen Weile reizte es mich mehr in Sachen Beleuchtung zu basteln. Angesteckt von nifelans Moddingfieber überall CCDs einzubauen beschäftigte ich mich ein wenig mit den zur Verfügung stehenden Elementen (LEDs, CCDs, EL-Folien). Besonders angetan hat es mir die Idee des 'Moodlights', farbige Beleuchtung welche frei wählbar ist. Es soll also sowohl das aus diversen Produkten bekannte sanfte Durchwechseln der Farben möglich sein als auch das direkte (und dauerhafte) Einstellen einer einzigen Farbe.
Als Technik bieten sich hier LEDs an, welche in den Grundfarben vorliegen und gedimmt werden können, wodurch sich beliebige Farben mischen lassen. Ok, nicht wirklich beliebig, da die Intensitätsstufen (Farbauflösung) eher gering ist, doch für meinen Anwendungsfall reichen 32 Helligkeitsstufen aus. Das entspricht fast schon 16-Bit-Farben, welche 5-6-5 Bits für die Farben haben, also 32 Stufen für Rot und Blau, 64 Stufen für Grün. Meine Stufen sind nicht so genau einstellbar, für einfache Dimm-, Überblend- sowie Farbeffekte reicht es jedoch aus.

Damit die drei Einzelfarben als gemeinsame Farbe wahrgenommen werden ist ein Diffusor notwendig. Selbst bei Rainbow/Fullcolor-LEDs sieht man die drei Einzelfarben sehr deutlich als einzelne Lichtkegel.

CCFLs (Kaltlichtkathoden) erschienen mir aufgrund der benötigten hohen Spannung und der unterstellten schlechten Dimmbarkeit (was evtl. die Lebensdauer verkürzt) als unpraktisch. Sie hätten jedoch zweifelsohne den Vorteil sehr hell zu sein - da benötigt man selbst bei superhellen LEDs gleich einige.

EL-Folien sind eine interessante Spielerei, jedoch habe ich momentan keine und für diese Art Projekt sind sie nicht geeignet.

Microsoft

...ausgerechnet von Microsoft! Am Linuxtag gab es unerwartete Werbegeschenke, und das begehrteste kam von Microsoft. Sie hatten einen Würfel im Gepäck, 7cm Kantenlänge, weißes milchiges Plastik, der im Inneren drei Batterien aufnahm und nnach dem Einschalten den schönen Effekt mit dem sanften Überblenden in verschiedenen Farben realisierte (mit drei LEDs, natürlich). Ich sah an verschiedenen Ständen diese Würfel auftauchen, das MS-Logo war schnell abgekratzt bzw. mit eigenen Klebefolien überdeckt. Am Gentoo-Stand stapelte sich nach kurzer Zeit ein kleiner Turm dieser Würfel - und hier wurde auch der erste bereits geöffnet.

Das war die ideale Motivation für mich mein Projekt wieder aufzugreifen und testweise umzusetzen. Zusammen mit einem anderen Drachen - Mendra - zerlegte ich den Würfel und baute ihn für meine Bedürfnisse um. Konkret heißt dies daß wir den kleinen IC abkratzten und Adern für die Leuchtdioden direkt nach aussen führten. Rasch war mein Schreibtisch wieder mit Elektronikzeugs vollgestellt und die Wochenendpläne geändert. Während Mendra den Lötkolben schwang, beschäftigte ich mich mit der Ansteuerung, die ich letztlich in Software umsetzte.

Es gibt prinzipiell zwei Methoden eine LED zu dimmen: man kontrolliert die Spannung, welche sie durchfließt, oder man läßt sie Pulsieren so daß der Eindruck einer verminderten Leuchtkraft entsteht.

Das erste Verfahren ist das eindeutig schönere. Es entsteht kein unschönes Flimmern oder gar Flackern bei zu niedrig gewählten Frequenzen, es wäre viel feiner regulierbar und auch technische Geräte mit einer deutlich höheren Abtastfrequenz als das Auge - Kameras beispielsweise - hätten kein Problem damit. Jedoch scheint dies nicht so einfach zu sein: ich fand fast keinerlei Informationen dazu, und was ich herausfand lief darauf hinaus daß man D/A-Wandler oder elektronische Potis verwenden muß, mit denen man einen Transistor (oder gar Operationsverstärker) steuert. Beides sind genaugenommen Widerstandsnetzwerke, aus denen digital die Menge ausgewählt werden kann.

Fast ausschließlich verwendet - oder zumindest im Internet genannt - wird dagegen die pulsierende Ansteuerung über PWM (Pulse Width Manipulation). Hierbei wird mit einer festen Frequenz die LED an- und ausgeschaltet, wobei der Zeitraum zwischen Anschalten und wieder Anschalten fest ist - die Helligkeit wird durch den Zeitraum Anschalten - Ausschalten variiert. (es gibt auch Frequensmodulation)

Aufgrund mangelnder Beuteile habe ich auch PWM verwendet, plane jedoch die Konstantstromquellenvariante in Zukunft auch auszuprobieren.

 
Das Innenleben des MoodLights in der Originalversion. Unter dem inneren Diffusor befindet sich eine kleine Platine mit vergossenem Chip, einem Widerstand und den drei LEDs. Ausserhalb ein weiterer Widerstand, der Schalter sowie zwei Drähte zum Batteriefach.
Der abgekratzte Chip (LEDs auf der Unterseite). Mit diesem lassen sich nicht beliebige Farben fest einstellen, er wechselt immer durch. Ausserdem wollte ich das ganze ja selbermachen...
 
Die fertige Kabelverlegung. Da der Würfel nicht vorsieht an einem Kabel zu hängen und ich kein allzugroßes Loch reinschneiden wollte entschied ich mich dafür nur eine kleine Aussparung zu feilen und dafür ein Flachbandkabel zu verwenden. Direkt dahinter ist ein (hier etwas zu starres) Kabel angeschlossen. Das Kabel hat vier Adern (Rot, Grün, Blau, gemeinsame Masse), für zukünftige Spielereien habe ich die Anschlüsse der integrierten Batteriehalterung (4,5V) nach aussen geführt. Momentan ist jedoch nichts daran angeschlossen und die Batterien dienen nur als Stabilitätsgewicht.
Andere Ansicht mit aufgesetztem halbkugelförmigen Diffusor. Er sorgt dafür daß der Würfel komplett ausgeleuchtet wirkt und nicht nur die obere Hälfte.
Das Flachbandkabel mit dem doch etwas unschönen Knubbel am Übergang zum nächsten Kabel wurde ersetzt durch ein flexibleres anderes. Dieses hat jetzt auch am Ende einen Westernstecker.
 
Das Moodlight im Regal, oberhalb des Computers. Kleinere Plastikwürfel mit Seifenflächen in unterschiedlichen Farben (war mal ein Knobelspiel, dessen Regeln ich vergessen habe) lagen dort und zusammen geben sie ein nettes Bild ab - sowohl bei Tag als auch Nachts mit aktiviertem Moodlight. Das Kabel ist unauffällig nach hinten verlegt und führt zur WoDoInCo.
Software

Das Dimmen der LEDs sollte über Softwaregesteuertes Ein/Ausschalten erfolgen - genauer gesagt PWM. Der Atmel enthält zwar drei Timer kann diese auch zur PWM-Steuerung von Ausgabepins verwenden. Jedoch eben nur diese drei, und die Pins liegen nicht nebeneinander sondern quer verteilt. Das war mir zu unpraktisch, so daß ich nur einen Timer (Timer0) verwendete und die Ansteuerung komplett in Software erledigte.

Leider stellte sich rasch heraus daß mein Programm ein starkes Flimmern hervorrief. Ich betrachtete es genau, auch den erzeugten Assemblercode, konnte jedoch keinen Fehler feststellen. Da zeitweise - je nach Umsetzungsversuch - auch die serielle Kommunikation zusammenbrach vermutete ich daß meine Routine zu fiel Zeit fraß und nicht rechtzeitig abgearbeitet werden konnte, bis der nächste Timerinterrupt eintrat. Da ich mich sehr kurz hielt kann ich nur Rätseln warum es nicht schnell genug war - eventuell kosten Sprungbefehle für if-Abfragen unheimlich viel?

Letztlich verwendete ich eine Lösung die an ein Schieberegister erinnert: ein Array mit 32 Werten die einfach nur nacheinander auf den Port geschrieben werden müssen, pro Interrupt eines. Das Erhöhen des Zeigers erfolgt über Addition, das Zurücksetzen über logisches AND. Ergo: keine if-Befehle im Interrupt.

Durch (bedingt zuverlässige) Messung hatte ich geschätzt daß der ursprüngliche Chip eine Frequenz von 128 Herz verwendet. Ich versuchte diesen Wert zu erreichen, jedoch schien nie mein rechnerischer Wert tatsächlich zu stimmen. Ich weiß nicht ob dies an einem Rechenfehler meinerseits liegt oder an der Langsamkeit des Atmels. Momentan habe ich eine Geschwindigkeit bei der ich kaum/kein Flimmern bemerken kann und die restliche Kommunikation noch funktioniert.

Ein paar der Links die ich als recht nützlich empfand
LED-TreiberInformationen über LEDs und ihre Ansteuerung
LED-Infoallgemeine Grundlagen über LEDs
Henne's SiteDMX-fähige Ansteuerung für Schalter und Dimmer, u.A. für LEDs (verwendet PWM)
digital EnlightenmentNoch ein DMX-Projekt, mit USB-Anschluss und eigenem Dimmer
B-KainkaLEDs am Spannungswandler betreiben (die Seite hat noch andere nette Projekte)
LED1Ein speziell auf LEDs ausgerichteter Versender
LED1Ein weiterer LED-Versender
Led LampDesignstudie einer stilvollen, farbwählbaren Schreibtischleuchte mit LEDs
sebs89Controller um 16 Lampen zu dimmen (basierend auf dem PC Dimmer)
SpokePOVSpokePOV: LED Bite Wheel Images
SparkfunEin US-Händler für Prototypenbauelemente
Led-Styles.deDas Forum zum Händler Led-Tech, mit vielen Infos für Anfänger
Emergency Party ButtonKlasse Anwendung von Heimautomatisierung, basierend auf MIDAS>/a>
AVR-LIBCDie AVR-Libc, mit der FAQ
EMS AVR Resource ListA list of useful AVR related links from the EvilMadScientists
xxxxxx
xxxxxx
xxxxxx
xxxxxx
xxxxxx
Stand: Juni 2005. Fragen, Kommentare, Hinweise an Zefiro.