Home | Diary | Beschreibung | Galerie | Fotoberichte | IRC | Projekte | Gästebuch | Kontakt |
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.
...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 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. |
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 |
Informationen über LEDs und ihre Ansteuerung | |
LED-Info | allgemeine Grundlagen über LEDs |
Henne's Site | DMX-fähige Ansteuerung für Schalter und Dimmer, u.A. für LEDs (verwendet PWM) |
digital Enlightenment | Noch ein DMX-Projekt, mit USB-Anschluss und eigenem Dimmer |
B-Kainka | LEDs am Spannungswandler betreiben (die Seite hat noch andere nette Projekte) |
LED1 | Ein speziell auf LEDs ausgerichteter Versender |
LED1 | Ein weiterer LED-Versender |
Led Lamp | Designstudie einer stilvollen, farbwählbaren Schreibtischleuchte mit LEDs |
sebs89 | Controller um 16 Lampen zu dimmen (basierend auf dem PC Dimmer) |
SpokePOV | SpokePOV: LED Bite Wheel Images |
Sparkfun | Ein US-Händler für Prototypenbauelemente |
Led-Styles.de | Das Forum zum Händler Led-Tech, mit vielen Infos für Anfänger |
Emergency Party Button | Klasse Anwendung von Heimautomatisierung, basierend auf MIDAS>/a> |
AVR-LIBC | Die AVR-Libc, mit der FAQ |
EMS AVR Resource List | A list of useful AVR related links from the EvilMadScientists |
xxx | xxx |
xxx | xxx |
xxx | xxx |
xxx | xxx |
xxx | xxx |