DIY-RGB-Controller mit IR-Fernbedienung und DMX - modular erweiterbar

  • Demnächst wird es eine runde Version des Controllers geben, auf der Rundplatine werden gleich die drei RGB-LEDs ihren Platz finden.
    Durchmesser 80 mm (alternativ: 100 mm).


    Diese Platinen weisen die bekannte Funktionalität auf, sind also ebenfalls per IR fernbedienbar.


    Vorteil dieser Lösung: Diese Platinen können direkt in geeignete Leuchten integriert werden, mit diversen Lichtdiffusoren nach eigenem Geschmack.
    Durch den kompletten Aufbau in SMD-Technik kann die Platine direkt auf eine plane Fläche aufgeschraubt werden.


    Man benötigt nur eine einfache zweiadrige Niederspannungszuleitung für die 12-Volt-Speisung.


    Prototyp-Platine:


  • Ich habe eine Frage zur DMX Adressierung, ich habe in den Settings folgenden Wert auf 6 geändert, aber die DMX Adresse bleibt weiterhin 1, muss ich noch irgendwo was ändern?
    .equ DMX_STARTADRESS = 6 ; DMX-Startadresse


    Zusätzlich habe ich das Speichern auf die Taste 7 gelegt, vorher hatte ich es bei mir nicht gefunden, das funktioniert jetzt auch, also hat das erstellen der Software und schreiben funktioniert, nur nicht das ändern der DMX Adresse. Folgende Warnungen kammen beim erstellen der Software mit dem AVR Studio 4:


    C:\dmx\TinyControlStandard2313\TinyControlStandard2313\Definitions.inc ( 36 ) : warning: Register r26 already defined by the .DEF directive


    C:\dmx\TinyControlStandard2313\TinyControlStandard2313\Definitions.inc ( 38 ) : warning: Register r27 already defined by the .DEF directive


    Kann mir da jemand weiterhelfen?

  • Die Warnung kommt deswegen, weil r26 und r27 ja schon zusammen als X-Pointer definiert sind (in der Definitionsdatei des µC) - das macht aber nix, man kann die trotzdem auch für andere Sachen verwenden, muss halt nur den Überblick behalten, nicht dass man mal irgendwo den X-Pointer benutzt und sich dadurch dann seine für andere Zwecke definierten Register überschreibt...


    welche SW benutzt Du denn...? - die alte aus dem ersten Post, oder die neuere...?


    es reicht, wenn man in der Datei "Settings.inc" die Zeile ".equ DMX_STARTADRESS = 6 ; DMX-Startadresse" ändert, sonst muss man nix mehr machen...


    ich habe den DMX-Empfang auch getestet, aber nicht mit verschiedenen Adressen - sag' mir doch mal, welche SW-Version Du benutzt, dann schau' ich da noch mal nach, wo das Problem liegen könnte.

    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!

  • Ich benutze die ohne Display, davon die neuere, vom 3.4.2012.
    Ich hatte auch versucht die Adresse über die dip Schalter zu ändern, hatte vom ATTiny Pin 6, 13 und 14 auf GND gelegt, hat aber leider auch nicht funktioniert.


    Besten dank schonmal.

  • Ich hab' mal nachgesehen - seltsam, der Teil zum Einstellen der Adresse per DIP-Schalter ist in der Datei auskommentiert... ?( - da habe ich wohl schon weiter dran rumgeschnitzt, bevor ich das raufgeladen habe...


    das Einstellen per Angabe in der Datei "Settings.inc" sollte aber funktionieren, noch mal nachgeschaut und keinen Fehler gefunden...


    ich habe die HW gerade nicht einsatzbereit, kann aber bei Gelegenheit (erinnere mich doch ggfs. dran, wenn Du in den nächsten 5 Tagen nix dazu liest) das noch mal bei mir ausprobieren...


    inzwischen kannst Du mal bei Interesse die Datei "DMX_Setup.inc" durch die beigefügte ersetzen, und das Ganze neu assemblieren - dann sollte sich *eigentlich* die Adresse per DIP-Schalter einstellen lassen...

    Dateien

    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!

  • Jetzt habe ich mal ein bisschen Zeit gefunden, um die Lösung zu finden. Hat aber leider nicht funktioniert, ich kann die Adresse nicht verstellen, sie bleibt immer auf eins.
    Ich habe die Programme mal umgelegt, welche mal auf 8 oder 9, das ging, also das assemblieren und schreiben funktioniert, die Adresse per Software auf 2 gesetzt, nicht, die blieb auf eins.
    Dann habe ich deine DMX_Setup eingefügt, dann hatte ich das Problem das das ganze zu groß wurde, ich konnte das dann nicht mehr schreiben, also habe ich einen Teil des Feuereffekts auskommentiert, dann passte es von der Größe wieder, ich habe dann Pin 12 und 13 und später zusätzlich noch Pin 6 des IC1 auf GND gelegt, aber der Controller reagiert weiterhin auf die DMX Adresse 1.


    Hast du eine Ahnung?

  • Hallo zusammen,


    klasse wie sich der Controller entwickelt hat. Das schreit danach den nun doch nachzubauen anstatt selbst was zu basteln.


    Ich persönlich finde immer die DIP Adressenschalter als Pin Fresser... die werden einmal oder zumindest sehr sehr selten benötigt und belegen etliche Pins die für alles andere genutzt werden könnten.


    Wäre im Code noch Platz einen 2. RGB Kanal einzubinden?
    Statt 8fach DIP einen 4fach einen der freien Pins mit Schalter belegen. Pin= Low werden die unteren 4 Bit der Adresse eingelesen, Pin=High werden die oberen 4 Bit eingelesen. 8 Bitadresse ist vollständig.
    3 freie Pins.... (zusätzlicher RGB Kanal)



    Noch mehr freie Pins - Morsen
    1 Pin - Morsepin
    erst die hunderter Stelle hochzählen, (Zeitfenster 10 Sekunden (oder eine Erkennung ob weitere Tastendrücke kommen, würde die Zeit reduzieren) die Zehnerstellen hochzählen (wieder Zeitfenster 10 Sekunden ) dann die Einerstellen.
    1 Pin AdresseinstellerPin - damit beim start erkannt wird ob eine Adresse geändert werden soll


    6 Pins sind frei.
    würde man nun 3 PINs für einen 2. RGB Kanal nehmen sind noch immer 3 weitere (eigentlich sogar der Morsepin) also 4 IOs zur freien Verfügung stehen.


    Mittels dieser 4 Pins könnte man weitere Funktionen implementieren (Grundplatine bleibt immer die selbe) über Auf- oder Ansteckplatinen an die IOs läßt es sich aufbohren


    ADD on Platine -- Hauptplatine


    ---########---################
    ---########---################
    ---########---################
    ########---################
    ######## ################
    ---########---################
    Wie immer passen diese Art von Bilder nicht. An die Hauptplatine kann einfach vorne eine AddON Platine gesteckt (gelötet werden) die diese verlängert und um Funktionen erweitert)


    Lichtwecker ( Stereoklinkenstecker (Buchse an einem Eingang, hänge ein OP Verstärker, sobald ein Signal kommt (MP3 vom Handywecker oder andere Wecker (lautsprecherkabel anzapfen) kann der Controller dies erkennen und das Lichtdimmprogramm starten. die noch freien Pins können zur Geschwindigkeitseinstellung genutzt werden


    Alternativ können die IOs an Lichtschalter geschlossen werden, so kann man über Fernbedienung einstellen und zusätzlich über Hauslichtschalter, nicht 230v ;) ein und aus schalten


    Je universeller die Hauptplatine um so mehr Verwendungszwecke, desto eher lohnen sich große Stückzahlen (sprich Platinen machen lassen) und es springen auch andere mit auf.


    Layout geht einseitig, zumindest bei meinen Testversuchen, aber nicht mehr ohne Brücken
    Das Bild zeigt den Versuch das ganze in die ganz kleinen 55x50mm Alugehäuse zu bekommen. USB Anschlüsse sind RGB... billigste Lösung für Stecker, 3. USB=2 weitere Kanäle. Als Treiber ein ULN. Einzigen SMDs sind ein paar Kondensatoren, die aber in 1206 (die größten SMD Teile). Sicherungen wurden rückstellende Halbleiter genommen (wesentlich kleiner) Leider ist es zu keinem Testaufbau gekommen (so ein Sohnemann frißt unvorstellbar viel Zeit)


    Grüße
    Rudi

  • Ich persönlich finde immer die DIP Adressenschalter als Pin Fresser... die werden einmal oder zumindest sehr sehr selten benötigt und belegen etliche Pins die für alles andere genutzt werden könnten.

    naja, man kann aber auch nen µC mit mehr Pins nehmen, oder statt dem Morsen etc. (finde ich sehr umständlich) einfach den DIP über ein Schieberegister abfragen, braucht man auch nur 3 Pins dazu...


    ich selbst benutze den z.B. auch gar nicht, das Teil ist ja für "daheim" gedacht, da stellt man einmal die Adresse im Code ein und gut ist (AndreasH: Ich teste das noch, bin leider noch nicht dazu gekommen... :()


    Wäre im Code noch Platz einen 2. RGB Kanal einzubinden?

    Der Tiny2313 ist voll gestopft... was sollte der 2. Kanal überhaupt machen..? - so ne Art Mehrzonen-Controller...? - das bläht ziemlich auf, muss ja auch irgendwie beim RC5-Empfang untergebracht werden, also zusätzliche Tasten, welche Zone man nun einstellt...


    Das Ganze hier ist eher als "Bastelkiste" zu betrachten - reichen einem die "Grundfunktionen" (die schon deutlich mehr sind als bei so nem China-Controller), dann einfach nachbauen wie es ist, wird sehr günstig (je nach Gehäuse etc.)


    oder man macht selbst was draus, hat dann hier ein "Grundgerüst" und muss nicht von 0 anfangen - das Ganze zu erweitern (mehr Programme etc.) ist kein großer Aufwand.


    in dem Fall dann aber aus praktischen/Vernunftsgründen gleich nen größeren µC nehmen - das ist hier *auch* (ausser dem Grund, dass der Tiny2313 einer meiner "Lieblings-µC" ist) deswegen gemacht worden, um zu zeigen, dass die mal hier im Forum getätigte Aussage, in nen Tiny2313 würde sowas nicht rein passen, schlicht Quatsch ist... ;)


    interessant wäre wenn dann, das Ding als Bausatz anzubieten, also so wie es ist, klein, günstig, als Alternative zu den China-Dingern... aber ich mache sowas nicht

    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!

  • das morsen ist umständlich, aber brach keine weitere hardware.
    Nachteil ist, kein mal eben gucken welche adresse eingestellt.
    Aber wie du sagtest, privat, einmal und vorerst nie wieder.


    der 2. RGB Kanal wäre einmal für DMX zu gebrauchen, bei den STandartprogrammen habe ich mir einen "hinterherlaufenden" Kanal edacht... der zeitlich verzögert hinter dem 1. herläuft. kanal 1 von rot nach grün zu blau und der 2. Kanal läuft eine farbe "verspätet" also während kanal 1 bei grün ist, ist kanal 2 erst bei rot. (bei farbverläufen natürlich etwas feiner.
    damit hätte man etwas mehr farben und eine gleichmäßigere helligkeit. ich finde bei der farbe rot wirkt es immer sehr dunkel, durch den hinterherlaufenden Kanal wäre durch einen leicht anderen farbton zumindest etwas mehr helligkeit.


    Der Kanal hat keine eigene steuerung außer die zeit die er hinterherläuft. abgesehen von dmx .. und feuerschein sieht mit 2 farben auch noch realistischer aus.


    werde mal gucken was ich umgebastelt bekomme ... bzw wann ich dazu komme.


    so ein kleiner 2313 kann viel, meist scheiterts an den programmieren, die einfach zu verschwenderisch programmieren (für das feintuning brach es leider bessere Kenntnisse) so wir zumeist mit Kanonen auf spatzen geschossen.




    Grüße
    Rudi

  • Hallo,
    wirklich sehr erstaunlich dieses Projekt!
    Werde den Controller jetzt auch einmal bauen.
    Ich möchte gerne noch eine Sound2Light Funktion haben.
    Reicht es da, einfach ein TLC Modul an einen freien Pin zu stecken?


    Wenn der Controller große LED Ketten antreiben soll, dann reichen die IRLZ34N doch aus, oder?


    Mfg

  • Reicht es da, einfach ein TLC Modul an einen freien Pin zu stecken?

    Was ist ein TLC Modul.... ?(


    Es reicht nicht, da irgendwas anzustecken, der µC muss ja auch wissen, was er it dem Signal anfangen soll.... ;) - wie hier bereits gesagt, musst Du diese Funktion selbst dazu programmieren (so lange es kein anderer macht...)


    Wenn der Controller große LED Ketten antreiben soll, dann reichen die IRLZ34N doch aus, oder?

    Ja - also je nachdem, was bei Dir "groß" ist, 150 m RGB-Stripe werden da wohl eher nicht gehen... die 60-100 5-mm-LEDs (?) absolut problemlos...

    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!

  • sorry hab mich zu falsch ausgedrückt.
    Ja die Software muss ich selber schreiben.
    Weiß nur noch nicht, ob ich das hinkrieg.
    Mit dem TLC meinte ich einen analog digital Wandler, der die Signale vom Mikrofon für dn Attiny bereit stellt.

  • Klar ist das möglich - schau' Dir mal die Hauptschleife an (In der Datei "TinyControl2313.asm"), da kommt oben als erstes:


    Code
    rcall	_Get_RC5	; Prüfen, ob neuer Befehl empfangen


    Du musst direkt davor oder danach eine Routine einfügen, die den Taster abfragt, und dann bei Tastendruck die Programmnummern durchschaltet - also extra ne Nummer, die Du Dir im RAM merkst.


    immer wenn der Taster gedrückt wird, schaltest Du eins weiter, und schreibst dann den entsprechenden Code (kannst Du aus einer Tabelle lesen) an die Adresse rc5_last_command (also den *Tastencode* der Fernbedienung - EDIT: Diesen kannst Du in der Datei "Settings.inc" nachsehen) und setzt das Flag für "Befehl empfangen" mit


    Code
    sbr   Flags, (1<<FL_RC5)


    somit "gaukelst" Du der nachfolgenden Auswerteroutine ("Key_command.inc") vor, dass ein Befehl von der Fernbedienung gekommen wäre, und diese macht dann das enstprechende, eben das gewünschte Programm einstellen... geht beides parallel, entweder kommt ein Befehl von Deiner Taster-Routine oder von der IR-FB...


    ich wollte damals noch eine komplette Funktionsbeschreibung posten (wie die SW aufgebaut ist, damit man leicht solche Änderungen machen kann), hatte das dann aber bleiben lassen, weil das Interesse an dem Ding ja nicht soo groß war...


    Hatte selbst auch schon angefangen, das Teil komplett per Taster bedienbar zu machen (also auch Helligkeit, Geschwindigkeit, etc.), das ist aber noch in der "Warteschleife"... ;)

    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!

    Einmal editiert, zuletzt von Pesi ()

  • hm, lies' Dir doch das oben erklärte noch mal durch, und überleg' dann noch mal, wo der Taster wohl hin muss... ;)


    Nicht falsch auffassen, aber Du musst das Ganze ja auch verstehen, wie willst Du sonst die SW erweitern...? - also überleg' einfach mal, was wohl passiert, wenn Du Taster und IR-Empfänger an den selben Pin anschließt, und dann den Taster drückst...


    Und nur damit keine Missverständnisse aufkommen: Es reicht *nicht*, dass Du einfach irgendwo nen Taster anklemmst, und dann macht der das, was Du willst - dazu musst Du eben wie erklärt noch SW dazu programmieren.


    Das geht dann auch nicht mehr in den Tiny2313 rein, da brauchst Du dann nen größeren µC, also z.B. Tiny4313 oder sonst irgendwas mit mehr als 2 k Flash...

    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!

  • Hallo pesi, hattest du schon die Gelegenheit nach der Einstellung der dmx Adressen zu schauen? Du hattest auch schonmal eine andere Version wo die Adresse auf 17 eingestellt war. Könntest du wohl die aktuelle Version einmal mit einer anderen Adresse hochladen, dann würde ich die probieren, ob ich irgendwas falsch gemacht habe, das würde vielleicht helfen.
    Schönen dank

  • ich wollte damals noch eine komplette Funktionsbeschreibung posten (wie die SW aufgebaut ist, damit man leicht solche Änderungen machen kann), hatte das dann aber bleiben lassen, weil das Interesse an dem Ding ja nicht soo groß war...


    Ohh schade, da hatte ich so lange darauf gewartet :( Ich dachte, während der Winterszeit kommt da sicher mal was ;)


    Meine Programmierkenntnisse sind sehr bescheiden, da ich bisher zuwenig Zeit und Geduld investierte. So einen Assembler-Schinken hatte ich da auch schon etwas durchgearbeitet, aber schon lange her.... Da kann man gleich wieder von vorne beginnen. Obwohl Assembler-Code scheint mir irgendwie noch weniger kryptisch als bsw. C, von dem ja alle so schwärmen.


    Nun noch eine Frage meinerseits! Dein Controller habe ich auch noch auf einem kleinen Steckboard aufgebaut. Kann man da irgendwie die Fadingzeit noch verlangsamen? So wie's im ersten Code war, ist mir immer noch zu schnell. Oder ist da am Timing nichts auf die Schnelle machbar?


    Danke und Gruss


    Phillux