Eigener RGB-LED-Controller

  • Hallo Leute,


    ich möchte euch mal mein letztes Projekt vorstellen. Ich habe mir einen eigenen kleinen Controller für bis zu insgesamt 15 High-Power-LEDs gebaut. Das ganze Ding ist ansich sehr einfach aufgebaut und nicht sonderlich kompliziert. Mein Ziel war es mir ein Zimmer nach meinen wünschen ausleuchten zu können um entsprechend Stimmung bzw. Atmosphäre für entsprechende Stituationen erzeugen zu können.


    Die ganze Schaltung benötigt einen Stromanschluss mit 5V von einer entsprechend belastbaren Quelle (ich verwende ein altes Computernetzteil). Das Herz des ganzen ist ein ATmega32 µC. Ein Programmieradapter ist ebenfalls direkt mit eingebaut um die SW relativ flexibel ändern zu können. Zusätzlich habe ich noch einen AMV aus einem NE555 dazugebaut, in den man nach belieben die Widerstände und somit die Taktrate ändern kann. Der µC selber bekommt seinen Takt von einen üblichen Quarz, in dem Fall mit ca. 10MHz.


    Im Augenblick hat der Controll vier Betriebsmodi, die man natürlich im Betrieb beliebig umschalten kann. Der erste ist ein manueller Modus, man kann halt einstellen welche Farben leuchten sollen und welche nicht, allerdings nur voll an oder komplett aus.
    Die nächsten beiden Modi sind relativ gleich. Den AMV kann man auf sehr sehr geringe Taktzeiten einstellen, so das der z.B. alle 10 Min. von 0 auf 1 welchselt. Immer wenn das passiert, ändert sich bei diese Modi das Licht zufällig in eine andere Farbe. Der genaue Unterschied zwischen den beiden Modi ist nun, das der eine auch nur die Leds komplett an oder aus machen kann und der andere die per PWM auch dimmen kann. Somit ergeben sich viele viele mögliche kombinationen, da jede Farbe in 255 Zwischenstufen aufgeteilt ist. Der Fall, das mal zufällig alle Leds ausgeschaltet werden wird abgefangen und kann somit nicht vorkommen.


    Man muss sich halt vorstellen das man in gemütlicher Runde zusammen sitzt und sich z.B. alle 6 Min. (ca. alle zwei Songs) das Licht ändert.


    Alle Übergänge werden per PWM weiche und linear gefadet.


    Der letzte Modus ist so eine Art Partymodus, allerdings wohl eher eine Spielerei von mir. Da man alle LEDs separat ansteuern kann, kann man ein "Blicklichtprogramm" programmieren, das halt alle LEDs in einer Reihenfolge nacheinander blicken. Ist ein wenig blöd zu erklären. Um das nicht in Assembler programmieren zu müssen, habe ich eine PHP-Skript geschrieben, mit welchem man einzelne Schritte angeben kann. In jedem Schritt kann man sagen welche LEDs an bzw. aus sein sollen und wie lange bis zum näcshten Schritt gewartet werden soll. Das Skript erzeugt dann eine kommentierte Assemblerdatei, die man nur noch kompilieren und auf den µC übertragen muss. Man kann so viele Schritte angeben, bis den Speicher vom ATmega32 voll ist. Ein Bild von dem Skript ist diesem Beitrag auch angehangen.



    Als weitere Spielerei, habe ich mir neulich noch eine simple 3-Kanal-Frequenzweiche gebaut. Diese kann man an die Steuerung anschließen, die dann folglich lustig nach der Musik leuchtet, welches übrigens, zu meiner Überraschung, erstaunlich gut funktierniert. Dafür auch der Stromanschluss für externe Geräte.


    So, das solls erstmal von mir gewesen sein. Falls jemand noch Fragen oder sonstiges hat, stehe ich gern zu Verfügung.
    Wenn jemand Schaltpläne, Assemblercode oder sonstiges haben möchte, soll auch kein Problem sein, werde alles gern hier Veröffentlichen.


    Schönen Gruß :)



    Ansicht von oben:
    [gallery]http://www.ledstyles.de/index.…D=816&type=page&from=user[/gallery]


    Ansicht von oben mit Beschreibungen:
    [gallery]http://www.ledstyles.de/index.…D=817&type=page&from=user[/gallery]


    Skript zum erzeugen von Assemblerdateien:
    [gallery]http://www.ledstyles.de/index.…D=818&type=page&from=user[/gallery]

  • Viele Dank erstmal :)


    Also, wenn ich die Möglichkeit hätte, mir eine Platine anzufertigen oder kostengünstig anfertigen zu lassen, dann tendiere ich auf jeden Fall zu einem festen Layout.


    Video kann ich gerne machen. Was möchtest du sehen? Irgendeinen Übergang, wie das Ding zur Musik blinkt oder wie das Ding sonst blinkt?


    Ein Schaltplan wird folgen, der Aufbau ist ansich echt simpel.


    Schönen Gruß

  • So, hier zwei Video.


    Zur Musik: http://www.youtube.com/watch?v=owC7iqdcErA
    Youtube hat aber glaube ich die Tonspur etwas versetzt wodurch das blinken nicht mehr genau zum Ton passt, aber es geht eigentlich noch. Vllt. wars auch die Kamera.



    Programmierte Sequenz: http://www.youtube.com/watch?v=y7MTccb5Eso
    Diese Sequenz habe ich mit diesem PHP-Skript gemacht. In diesem Fall macht es nicht tolles, da ich nur einen RGB-Punkt gefilmt habe. Die anderen Punkte sind so im Raum verteilt, das man diese mit der Kamera nicht hätte einfangen können, zumindest nicht ohne weiteres. Es leuchten immer in der Reihe die Farben Rot, Grün und dann Blau. Die Abstände bis zur nächsten Farbe werden erst immer kleiner dann wieder größer, so das man sieht, das es wirklich konkret programmiert ist. Das Video stellt leider nicht die wirklichen Möglichkeiten von diesem Modus da. Wenn man eine Sequenz mit allen RGB-Punkten erstellt, ist der Effekt um einiges besser.


    Viel Spaß beim schauen :)

  • Freut mich, vielen Dank :)


    Das war alles garnicht so wild. Bei hats allerdings etwas länger gedauert da ich vorher zwar auch was mit LEDs gemacht aber halt eher so Sachen wir ein Lauflicht mit ein paar 5mm LEDs oder nen kleinen Cluster für 12V zusammen gebaut. Die reine Lötarbeit hat relativ Zeit in Anspruch genommen. Da würde ich mal ein paar Tage für ansetzen, vllt. so 3-4, wenn man jeden Tag ein paar Stunden was macht. Die Entwicklungszeit ist auch eher gering, da der Aufbau halt nicht schwer ist. Mit allen Berechnungen und Überlegungen vllt. noch Woche, wenn man weiss was am Ende bei rauskommen soll.


    Bei der Software ist es ähnlich wie bei der Hardware. Mittlerweile läuft da die, ich sag mal zweite Generation drauf. Hatte vorher noch die groß was mit nem µC zu tun. Aber für jemanden der sich mit dem µC selbst auskennt und schon mal in Assembler gemacht hat, würde ich sagen, da bekommt man das gut an einem Wochenende hin.


    Das PHP-Ding dazu lass ich mal aussen vor. Das hab ich jetzt schon seit ein paar Jahren gemacht. Hab mich mal nen Nachmittag hingesetzt und das geschrieben. Nach und nach halt immernoch was hinzugefügt, das ist aber nicht der Rede wert.


    Kurze Zusammenfassung dieses Beitrags: Wenn man die Schaltpläne hat und ein wenig Assembler kann, braucht man vllt. noch Woche um aus den Einzelteilen das Ding zu bauen. Ansonsten halt länger. Die Planung ist für jeden denke ich individuell einzurechnen.


    P.S.: Beim löten gehe ich noch von einer Lochrasterplatine aus. Mit einer geätzten sollte das natürlich um einiges schneller gehen. ;)

  • Also, wenn ich die Möglichkeit hätte, mir eine Platine anzufertigen oder kostengünstig anfertigen zu lassen, dann tendiere ich auf jeden Fall zu einem festen Layout.

    Schau doch mal bei Platinenbelichter.de nach. Die Preise sind ganz ok. Etwas Wartezeit hat man meist.

  • Hast du auch schon eine Sequenz wo der Controller die LED's langsam mit sanften übergängen fadet? Diese harten Übergänge sind nämlich auf dauer etwas stressend. ;)
    Für die kurze Entwicklungszeit ist das aber schon ein Super Ergebnis. :thumbup:
    Auch der Musik Modus gefällt mir sehr gut. Kann man auch mehrere LED's unterschiedlich leuchten lassen, damit man nicht immer die selben farben hat inner Musik. Werden die Farben durch die Höhen und Tiefen des Liedes generiert?

  • Die harten Übergänge würden mich auch stören, aber sonst ist das ein gelungenes Projekt. Besonders die "bequeme" PHP-Steuerung finde ich eine gute Idee!


    Wie hast du die LEDs im Raum angebraucht? Einfach irgendwo hingelegt, oder haben die einen spezellen Lampenschirm, oder sowas?

  • Zu den Uebergaengen:
    Die Uebergaenge beim zweiten Video sind wirklich hart, also die LEDs werden einfach umgeschaltet, da habt ihr vollkommen recht. Die Modus ist auch eher fuer wild blinkendes Licht gedacht, also auch gern in der Geschwindigkeit von einem Stroboskop.
    Es ist aber moeglich Fades mit den Editor zu programmieren, habe da glaube ich irgendwo auch noch eine fertige Sequenz, werde mal nachschauen, wenn ich wieder zuhause bin.
    Zwischen den einzelnen Schritten wir allerdings nicht automatisch gefadet, die muesste man wie gesagt selbst programmieren.
    Bei anderen Modi, wo das Licht z.B. zufaellig die Farbe wechselt, sind die Uebergaenge gefadet, kann davon auch nachher nochmal nen Video machen, wenn es gewuenscht ist. :)



    Zu der Musik leuchten:
    Die Frequenzweiche ist aus einem simplen Tief-, Band- und Hochpass aufgebaut. Alles auch nur erster Ordnung, der Aufwand waere sonst wesentlich hoeher gewesen. Im Augenblick habe ich es einfach so gemacht, das beim µC der manuelle Modus aktiviert ist, sprich die Eingaenge fuer die einzelnen Farben (von den fuenf Anschluessen fuer Schalter, die mittleren Drei) werden die ganze Zeit einfach angeschaut ob da eine logische 0 oder 1 anliegt und dem entsprechend die LEDs an- oder ausgeschaltet. Wenn man jetzt z.B. die Tiefen gruen haben moechte, muss man im Augenblick das Signal von Tiefpass entsprechend umstecken.
    Allerdings kann man auf jeden Fall mit einem kleinen SW-Update diesen Modus interessanter gestallten, das sich halt nach einer gewissen Zeit die Farben aendern und dann automatisch nicht mehr rot sondern gruen zu den Baessen leuchtet.


    Ich hatte auch mal ueberlegt, so eine Art Musikerkennung einzubauen, die erkennt, wenn ein Song zu Ende ist und dann das Licht aendert oder sowas. Hab die Frequenzweiche erst Montag fertiggestellt, daher hab ich noch nicht gross weiter gemacht. ;)



    Anordnung der LEDs:
    Der Controller unterstuetzt insgesamt 15 LEDs, sprich 5 RGB-Punkte. Aus finanziellen Gruenden habe ich im Augenblick nur drei Punkte laufen, daher kann man auch nur neun LEDs im Skript ansteuern. Die RGB-Punkte sind in meinem Dreieck angebracht und zwar so, das diese den Raum indirekt beleuchten, also erst an die Decke und dann in den Raum. In einen speziellen Schirm oder sonstiges hab ich die nicht eingebaut.
    Die restlichen zwei RGB-Punkte wollte ich mir Anfang naechsten Monats zulegen, wenn die Kasse wieder etwas aufgefuellt ist :P



    So, ich hoffe ich konnte erstmal soweit alle Fragen beantworten, falls nicht, dann einfach weiter loechern :)


    Schonen Gruss und Tag