Master/Slave-LED-Controller

  • Nachdem ich nun endlich mal zwischen den Feiertage ein wenig Zeit hatte, habe ich meine Master/Slave-Controller endlich mal bestücken und programmieren können. Sicherlich gibt es das alles irgendwie schon, aber wie es so ist, man will ja auch selber Spaß haben, und egal was es gibt auf der Welt, es passt halt nie so richtig. Angefangen hat das alles mit den LED-Pixeln die ich hier mal entdeckte. Damit hatte ich angefangen zu spielen und in meinen Player als Hardwaresteuerung eingebaut um die gute alte Lichtorgel wieder zu beleben. Vieleicht interessiert es jemand oder dient als Anregung oder irgendwer hat noch eine Idee was man damit machen könnte


    Das war der erste Versuch und wie es dann so ist, Blut geleckt und überlegt, was bräuchte ich, oder besser was könnte ich brauchen. Herausgekommen ist dann das:
    Als Foto

    Als Schaltplan

    Als Eagle-Datei
    XMegaRGBFader.zip
    Die Windowsoftware inklusive FTDI-Treiber (leider mußte ich diese dann doch wieder auslagern weil das nicht in 150 KB gepasst hat)
    http://www.geitei.de/ledfader/pic/TreiberPlusDemo.zip


    Die Platine enthält einen USB-Anschluß, einen RS485-Anschluß, den Prozessor XMega32A4 für die 6 PWM-Kanäle mit 8 bit logarithmisch Abstufung mit Mosfet-Transitoren im SO08 Gehäuse, die Stromversorgung, einen 8 MBit (oder größer oder kleiner) Flashspeicher für Ablaufprogramme und schlußendlich eine 8fachen DIP-Schalter. Ein als Master ausgewählter Controller kann per RS485 31 Controller steuern, er nimmt die Befehle dann per USB entgegen und fungiert somit zum einen als PWM-Controller und zum anderen als USB->RS485 Wandler.
    In der Software sind ein paar feste Programme erstellt unter anderem auch der beliebte RGB-Fader. Man kann im Flashspeicher Ablaufprogramm ablegen (bei einem MByte Speicher und 10 ms Taktung ca 6000 Sekunden) und dann per Mastertaktung diese auf allen Controllern syncron steuern.
    Ich hatte kleine Gehäuse vorgesehen und dann festgestellt das ich mich doch vertan habe und die Platine nochmal überarbeitet, sodas die neue Version genausso aufgebaut ist nur halt 9 PWM-Kanäle hat und dann in die Aluschienengehäuse von Fischer passt.
    In dem Zuge werde ich auch noch die Platinen für die Steuerung von den LED-Pixeln mit fertigen lassen, damit diese aus dem Prototypenstatus rauskommt.
    Ein kleine Software die im Augenblick zum Test der Module dient ist auch schon fertig, aber hier ist wohl noch ein Arbeit, den was die Software definitiv noch nicht kann, ist das erstellen von Animationen, da muß ich noch eine Weile drüber nachdenken.


    Und damit das alles auch noch aus der Ferne steuerbar wird habe ich dem ganzen noch einen Umsetzer Netzwerk->RS485.verpasst. Aber das ist noch eine Baustelle. Als Schnittstellen stehen hier Netzwerk, RS485, RS232, USB, FS20, Bluetooth, IR zur Verfügung.


    Als erste Anwendung werden die Controller bei uns im Wohnzimmer die Steuerung der Deckenbeleuchtung übernehmen.

  • Jo, das ist richtig, nur da ich (noch) nicht weiß, wie das mit der VID/PID ist, belasse ich das gern so, dann gibt es keine Schwierigkeiten mit den Treibern. Zumal ich auf der neuen Platine die neuen kleineren Kontroller von FTDI benutzen werde, zumal die noch billiger sind. Ansonsen sind die XMegas schon Klasse, keinen Quarz mehr, deutlich mehr Speed und ebend Schnittstellen ohne Ende.
    Und ja da ist der ENC mit drauf, ist sicherlich auch weitverbreitet, gut erhältlich, leider etwas hoher Stromverbrauch. Wenn ich die Platine mal erneuer verwende ich vieleicht den Nachfolger.

  • Sehr schick! :thumbup:


    bitte die Bilder direkt hier im Forum hochladen, siehe dazu auch hier... vielen Dank!


    stellst Du da eigentlich noch Doku und SW zum Nachbauen rein...? - ich frage deswegen, weil das der Sinn dieses Unterforums ist, wenn Du das nur vorstellen willst (was ja auch OK ist), dann ist es besser bei "Architektur- und Hausbeleuchtung" aufgehoben...


    einfach Bescheid sagen, dann wird's ggfs. verschoben, diesen Post hier lösche ich dann wieder...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Bei den Bildern, das habe ich nicht hinbekommen, weil ich wollte sie nicht als Anhang posten, aber das kann ich gerne ändern.
    Zur Doku etc, ja das habe ich so vor, weil das ist ja auch der Sinn dessen und so auch geplant. Werde ich aber erst morgen erledigen, den im Augenblick steht uns denke ich der Sinn nach anderem.
    In diesem Sinne schonemal einen guten Rutsch für alle. :D

  • Das Protokoll mit dem die Boards untereinander reden, möchte ich hier kurz mal beschreiben.
    Das gesamte Datenpaket werden in ein Frame gepackt welcher mit dem Byte $C0 gekennzeichnet sind. Sollte im Paket wird dieses durch durch die beiden Bytes $DB$DC ersetzt und sollte ein $DB vorkommen wird es durch $DB$DD ersetzt. Das hört sich erstmal kompliziert an, aber herauskommt ein relativ störsichers Paket ich betreibe die Boards mit 100.000 Bits und es geht nix verloren. Zum Anfang war ich auch sehr skeptisch, aber mittlerweile benutze ich nur noch diese Protokoll (auch in der Firma).
    Das Datenpaket besteht aus dieser Struktur

    Code
    TRGBCMD=record
    	CMD : Byte;
    	Len   : Byte;
    	Status: Byte;
    	Adress: Byte;
    	Data  : Array[0..59] of Byte;
      end;


    CMD ist das Kommando welches auszuführen gilt


    Len ist die Größe des Data-Array, min 0 und maximal 60 Byte.
    Status ist ein eventuelles Byte für Statusnachrichten
    Adress ist die Adresse des Boards, also 0 für den USB-Client und 1..31 für die RS485-Clienten, dann wird der Befehl einfach über USB empfangen und an den entsprechenden Clienten übertragen.

  • der kostet nur 2 ? und hat dann eine Controller mit 9 16bit PWM-Kanälen, das denke ich ist nicht schlecht.

    Das ist sogar super! :thumbup: - ich bin immer wieder erstaunt, wie günstig die XMegas doch sind im Vergleich zu was sie bieten...


    Und danke für das reinstellen der Dateien und SW-Link (das ist denke ich OK, ist ja Dein eigener Server, da ist die Wahrscheinlichkeit doch höher, dass das drauf bleibt).


    Die SW sieht auch echt toll aus, vom Design her und so, die Bedienung kapiere ich nicht so ganz, aber ich kann's ja auch mangels HW nicht wirklich nachvollziehen - sehr schön finde ich aber, dass man die nicht installieren muss, sowas gefällt mir immer gut, wenn man was zum mal ausprobieren einfach nur starten kann, ohne nachher wieder groß deinstallieren zu müssen...


    Zum Protokoll:

    aber herauskommt ein relativ störsichers Paket

    ich bin jetzt kein Informatiker, habe mir aber zusammen mit anderen in diesem Forum Gedanken über ein Protokoll gemacht, herausgekommen ist das hier, was ein paar Leute hier schon benutzen... nur so zur Info, falls es Dich interessiert. Das ist sozusagen "doppelt abgesichert", weil am Ende des Pakets auch noch ein passendes Byte kommen muss, ansonsten wird der Frame verworfen...


    da werden auch noch Befehle zur Steuerung genormt, könnte man also im Prinzip für das hier auch benutzen - wobei ne Adresse bei uns aber nicht vorgesehen ist, das ist mehr so als "Punkt-zu-Punkt-Verbindung" gedacht, z.B. ne SW steuert ne Matrix an o.ä., "Adressen" (wenn die Matrix z.B. aus mehreren Empfängern besteht) entstehen dann dadurch, dass jeder Empfänger nur die für ihn relevanten Daten aus dem Strom entnimmt (so wie bei DMX z.B. auch).


    Aber auf jeden Fall interessant zu lesen, wie sich jeder da so seine eigenen Gedanken über so ein Protokoll macht, und was da alles bei rauskommt.

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Man kann die Platine in der Slaveversion nun mit einem XMega64D4 bestücken, der kostet nur 2 ? und hat dann eine Controller mit 9 16bit PWM-Kanälen, das denke ich ist nicht schlecht.


    Der µController hat sogar 14 16 Bit PWM Kanäle, aber du meinst bestimmt, dass du 9 Stück davon nutzt?!


    Schön wie jeder Pin belegt ist... Maximale Ressourcennutzung :)
    Ist das mit den 3,3 Volt getriebenen Fets in der Praxis schon erprobt? Haben die bei der Spannung schon einen annehmbaren Rds on?


    Achso, wenn man nen bisschen RAM über hat, dann kann man jeden PIN in diesem Kontroller zur z.B. 12 Bit PWM umbauen.
    Dazu einfach einen genügend breiten Buffer anlegen und dort die PWM Bitweise an den richtigen Pin schreiben. Den Rest macht ein Timer, der immer den DMA dazu triggert das nächste Byte aus dem Buffer auf den kompletten Port zu legen.
    Is quasi ne Hybrid Software/Hardware PWM... 8o
    Der CPU muss nur noch dafür sorgen das der Bytebuffer mit den richtigen Daten gefüllt ist, wenn sich die PWM ändert...


    Grüße


    Basti

  • Guten Morgen

    Zitat

    Pesi
    Und danke für das reinstellen der Dateien und SW-Link (das ist denke ich
    OK, ist ja Dein eigener Server, da ist die Wahrscheinlichkeit doch
    höher, dass das drauf bleibt).

    Da hast Du völlig recht, ich benutze den schon seit mehr als 10 Jahren und das soll auch nochmal so lange so bleiben. :)
    Ich habe die Software aktualisiert, also einfach nochmal runterladen, da ist dann die aktuelle Version drin.

    Nun Software würde ich selber nicht unbedingt dazu sagen, eigentlich ist es nur ein Testmodul umd die Controller zu testen bei der Softwareentwicklung. Wenn alles funktionier, soll ja mit dem Treiber LEDs und/oder Matrixes gesteuert werden, vom PC aus, vom Handy, oder wovon auch immer, als Quelle Musik, Bild oder einfach nur Regler. Da ich die Platine nun geändert habe, werde ich in den nächsten Tagen neue herstellen lassen, wenn Du Interesse hat, kann ich Dir gern ein oder zwei Stück vermachen, 2 Augen sehen mehr. Die Optik ist nix dramatischens, das sind von http://www.alphaskins.com/, also null Arbeit. Ich mag auch nicht unbedingt Software die man installieren muß, ausser es muß sein um z.B. Dateien zu registrieren, aber das muß ja hier nicht sein.
    Um die Software zu verstehen, mach ich mal ein par Sätze. Nach dem Starten findet man in der Auswahlbox alle angesteckten Geräte, hier werden auch mehrere USB-Controller unterstützt. Dann einfach GETCONFIG betätigen, dann weiß die Software wieviel Kanäle der Controller hat, ob es sich um RGB-Led's oder um LED-Matrixes, oder einen Mastercontroller handelt, wie die Programme heissen, und alles was sonst so wichtig ist. Bei den Programmen habe ich mich in Anregung ein wenig bei Dir bedient, mir gefällt das Gewitter recht gut, habe ich gerade dazu programmiert und das sieht schick aus, Danke für die Anregung.
    Dann kann man eine Farbe mit den Regler ändern oder Programme starten, den Controller per Bootloader neu programmieren, den Speed ändern, oder bei einem Mastercontroller auch alle angeschlossenen Slavecontroller suchen, und dann mit denen das gleich veranstalten.
    Zum Protokoll muß ich auch noch erwähnen, auch das ist nicht auf meinem Mist gewachsen, dieser Treiber wird beim verwendeten AVRco mitgeliefert. Unter anderem ist das auch der Grund warum ich den Source für die Controller nicht veröffentlich habe. Das ist ein recht teures Entwicklungspaket mit einem Pascal-Dialekt. Sollte jemand Interesse an dem Source haben, kann ich das gern veröffentlichen. Ich verwende das Protokoll in der Firma um angeschlossene Sensoren zu steuern, das sind manchmal 30 Stück, über etliche zig Meter verteilt, ohne Übertagungsprobleme zu haben.
    Ich hab mir euer Protokoll schon angeschaut und um kombatibel zu sein, werde ich das sicherlich auch noch einbauen. Wichtig ist für mich bei der Hardware, das halt ein Controller mehrer ander steuern kann, deshalb ist das Adressbyte wichtig. Auch DMX, aber das habe ich heute schonmal eingebaut, leider im Augenblick ungetestet. Aus Ermanglung an Hardware. Im Prinzip kann man das so wie Ihr machen oder halt wie das AVR-Protokoll, darüber kann man sicherlich lange debattieren. Ist aber auch garnicht wichtig, Hauptsache es geht.

    Zitat

    Basti
    Der µController hat sogar 14 16 Bit PWM Kanäle, aber du meinst bestimmt, dass du 9 Stück davon nutzt?!

    Ja klar, so habe ich das gemeint. Ich möchte ja eine Platine für beides benutzen können, also als Master, dann muß USB und RS485 drauf sein, oder als Slave dort muß nur RS485 drauf sein, weil ich davon aber mehrere braucht, soll dann halt der Preis günstiger sein.

    Zitat

    Basti
    Ist das mit den 3,3 Volt getriebenen Fets in der Praxis schon erprobt?
    Haben die bei der Spannung schon einen annehmbaren Rds on?

    Jo, ist so getestet, siehe Foto, man sieht nicht unbedingt viel, war gerade am abdimmen. Wobei, darüber hatte ich nie nachgedacht, uppps, puh, ging aber sofort.

    Man kann sicherlich noch vieles damit machen, und wer das tun möchte nur zu, ich wollte erstmal nur meine Vorstellungen verwirklichen, sofern sich noch Wünsche auftun die da mit rein passen, berücksichtige ich diese natürlich gern. Die Rechenleistung ist ja nicht unbedingt gering bei den CPU's.
    Was ich mir eigentlich noch wünsche wäre, daß man sowohl Module mit gemeinsamer Anode und/ gemeinsamer Katode benutzen kann. Ich habe Twin-LED-Stripes Platine 12V von http://shop.led-studien.de im Haus gehabt und da mußte ich schon ein paar Qualmwolken wegpusten. Passiert wenn man nicht auspasst, snief.

  • Guten Abend


    Ich habe mal ein wenig weiter programmiert. Die Slave-Module können nun mit realen Namen belegt werden und ein Block mit 16 festen Farben ebendso. Somit kann mann halt "Deckenlampe" "Voll" auswählen, merkt sich deutlich einfacher als 8, 4 oder so ähnlich. Mit dem Handy kann ich nun über Bluetooth oder WLan die Module steuern. Feste Programme auswählen, Beleuchtungsvorgaben auswählen und einzelne LED regeln. Am großen Modul habe ich schon mal ein paar Änderungen auf der Wunschliste. Zum einen WLan, weil das praktisch ist, die meisten Handys und Tablets können das ja schon. Das verwendete Bluetooth-Modul war einfach zu teuer und wird durch ein preiswerteres Modul ersetzt. Und die FS20 Anbindung ist auf der neuen Platine komplett drauf und nicht wie bisher per Kabel angestrippt. Dann wird das zwar 10 mm länger aber damit kann ich leben, ist ja immer noch recht winzig.



    Die Handy-Software ist im Augenblick ein wenig überfrachtet, das muß ich mal noch umbauen, sieht sonst eher graulich aus.
    Bis jetzt habe ich 4 Slave-Module im Einsatz, ein Satz der neuen Platinen sind bestellt, dann kann ich das ganze mal mit 20 Modulen testen. Um zu wissen, ob das ganze nicht zu kompliziert wird.


    Gute Nacht