RGB Tube mit Standalone Mastercontroller Fertig

  • Da ich diese Projekt von Runner2k absolut gelungen finde und ich dieses in ähnlicher Form auch verwenden möchte, klinke ich mich in diesen Thread mal mit ein.
    Mein Vorhaben besteht darin, die Eckleisten meiner Wohnzimmerdecke mir RGB-Strips zu versehen und diese dann per DMX anzusteuern.
    Der gesammt umfang vom Wohnzimmer sind 17Meter also benötige ich 17 15-Kanal-Dimmer und 4x5Meter RGB-Stripes.
    Das sind dann 255 Kanäle die ich per DMX ansteuere.
    Da die Dimmer mit in den Eckkanal sollen musten sie noch etwas kleiner werden, ich habe sie jetzt auf eine größe von 25mm x 40mm in einem CAD Progromm Layoutet da ich diese auf meiner CNC-Fräse herstellen werde.
    Im Anhang ist ein Bild vom Layout, wer lust hatt kann ja mal drüberschauen ob sich vielleicht doch ein Fehler eingeschlichen hatt.
    Bitte nicht wundern alle Pins die nicht benötigt werden, werden eliminiert.


    Was mir noch unklaar ist, ist die Belegung der 15 Ausgänge also welcher Farbkanal wird mit welchem Pin angesteuert (z.B. Kanal1-rot, Kanal2-grün, Kanal3-blau usw.)?


  • Das Display passt, einfach von der Bestückungsseite aus montieren/verbinden.
    Der Encoder ist von links nach rechts wie folgt belegt, pin 1 GND 2 EncA 3 Taster 4 EncB.
    Kannst dir den DC/DC und den 6N137 sparen, hab die nur drin weil ich die Tubes mit vielen anderen (teuren) Geräten am DMX Bus betreibe. Er ist nur zur Sicherheit eingebaut falls auf der Tube Seite irgendetwas schief geht, nicht dass die 12V auf den anderen Bus kommen.

  • Wäre es möglich statt dem ATMEGA16-16 (Flash: 16K, EEProm: 512, RAM: 1K) auch einen ATMEGA8535-16 (Flash: 8K, EEProm: 512, RAM: 512) zu nehmen? Da ich mehrere für mein vorhaben benötige würde ich einiges an Geld spaaren.
    Die "15kanal_adresse1.hex" wird doch dann im den Flash geschrieben, oder? Da die Adressen je fest im Microcontroller gespeichert werden, welche adresse würde dann der 2. bekommen die 2 oder die 16 da der 1. ja 15Kanäle hatt?
    Was muß ich am quelltext verändern wenn ich die Kanäle tauschen möchte? Ich benötige diese Reihenfolge: 1-G1, 2-R1, 3-B1, 4-G2, 5-R2, 6-B2, 7-G3, 8-R3, 9-B3, 10-B4, 11-R4, 12-G4, 13-B5, 14-R5, 15-G5.


    Sorry für die ganzen Fragen aber Microcontroller sind für mich noch absolutes Neuland.
    Ich hänge die 15kanal_adress1.txt mal mit an, wäre schön wenn jemand mir die Kanäle tauschen könnte dann bin ich nach dem Vergleichen schlauer.

  • Ich bräuchte dein Layout mit dem Atmega8535 damit die Pins angepasst werden können. Ob das mit dem Atmega funktioniert kann ich nicht sagen da ich auch zu wenig ahnung davon habe. Die Adressen werden wie du schon geschrieben hast eingestellt -Controller 1=1-15 Controller 2=16-31 usw. und in den flash geschrieben


    Falls du die Pins selbst ändern willst musst nur im Datenblatt schauen welcher Pin an welche LED geht und diese Zeile im Abschnit "ISR_PWM:" ändern.


    OutC, 0b11111101 ist Pin C 1


    OutC, 0b11111011 ist Pin C 2


    OutB, 0b11111101 ist Pin B 1

  • Ach ja, das war ja die SW von mir, lang ist's her, da wusste ich dies und das noch nicht... ;)


    statt dem Bitmuster, also statt


    andi OutC, 0b11101111 (das 4. Bit in Register "OutC")


    tut man sich leichter, wenn man das so macht:


    cbr OutC, (1<<4) (ebenfalls das 4. Bit in Register "OutC")


    weil man da nur ne Zahl (hier die "4") hinschreiben muss statt Bits abzählen... ;)


    das läuft auf jeden Fall auch auf nem 8535, Du musst aber nachschauen, wo da die Interrupts liegen (für Timer und Usart Byte received), kann sein, dass die beim 8535 andere Adressen haben - siehe Datenblatt... die Register für Timer und USART *sollten* genauso heissen, aber im Zweifel da auch noch mal das Datenblatt konsultieren...


    Und, ja, der zweite Receiver bekommt die Adresse 16, da der erste ja Kanal 1-15 belegt... der dritte dann 31, und so weiter...


    die Adresse trägst Du ganz oben ein in der Zeile:


    ; ================================================================================================
    .equ DMX_Start = 1 ; HIER DMX-STARTADRESSE EINTRAGEN!
    ; ================================================================================================


    dann F7 drücken, und die entstandene .hex-Datei auf den Mega flashen, Fusebits für externen Quarz nicht vergessen...

    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 bräuchte dein Layout mit dem Atmega8535 damit die Pins angepasst werden können.

    Das Layout ist das selbe wie beim ATmega16-16. So soll es aussehen.


    Kanal ATmega16-16 > ATmega8535-16
    1 LED1 rot > LED1 grün
    2 LED1 grün > LED1 rot
    3 LED1 blau > LED1 blau
    4 LED2 rot > LED2 grün
    5 LED2 grün > LED2 rot
    6 LED2 blau > LED2 blau
    7 LED3 rot > LED3 grün
    8 LED3 grün > LED3 rot
    9 LED3 blau > LED3 blau
    10 LED4 rot > LED4 blau
    11 LED4 grün > LED4 rot
    12 LED4 blau > LED4 grün
    13 LED5 rot > LED5 blau
    14 LED5 grün > LED5 rot
    15 LED5 blau > LED5 grün


    Was die Interrupts für Timer und Usart Byte received angeht, bin ich in den Datenblättern nicht schlau draus gewurden.


    vielen Dank für eure Unterstützung

  • Ich habe mal noch ein paar Fragen:
    1. Mit welchem Programm würde ich die geänderte 15Kanal_Adresse1.txt in hex bekommen? Die hex schreibe ich dann mit myAVR_ProgTool auf dem Microkontroller.
    2. Kann ich den fertigen Receiver direkt an den DMX Bus anschließen? oder muß der Mastercontroller dazwischen?
    3. Was bedeuten die verschiedenen Blinkimpulse der Status LED am fertigen Receiver? Ich habe einen fertig und wenn ich die 12V anschließe habe ich mehrere schnelle Blinkimpulse gefolgt von einer Psuse, auch mit DMX in.

  • Was die Interrupts für Timer und Usart Byte received angeht, bin ich in den Datenblättern nicht schlau draus gewurden.

    Dann schau' mal auf Seite 54, da ist die Tabelle drin...


    anderer Post:


    1. AVR Studio, gibt's kostenlos bei Atmel.com - die 15Kanal_Adresse1.txt in 15Kanal_Adresse1.asm umbennen, mit AVR Studio öffnen, F7 drücken, dann macht er die .hex draus (er assembliert den Quellcode) - normal, je nach Programmer, kannst Du dann auch direkt mit dem AVR Studio auf den Mega8535 schreiben...


    2. Ja, der empfängt direkt DMX, der Mastercontroller ist also nicht nötig


    3. normal gibt's da nur 2 Anzeigen: Leuchten = Strom und DMX da, 2 Hz Blinken = DMX fehlt


    wenn's da bei Dir versch. Geblinke gibt, dann stimmt was nicht, hast Du die Fuse-Bits richtig gesetzt...? - der Mega8535 muss mit externem Quarz laufen, wie man das einstellt siehe "System Clock and Clock Options" im Datenblatt - beim AVR-Studio kann man das auch direkt in nem Drop-Down-Menue auswählen...

    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!

  • Danke Pesi für deine Tips, das mit dem Assemblieren hatt schon mal funktioniert. Jetzt habe ich Probleme mit dem setzen der Fuse-Bits im myAVR ProgTool, laut anleitung sollen Spien und SUT0 gesetzt werden, diese finde ich dort nicht.
    Ich benutze jetzt zum testen auch den ATmega16-16 ich habe aber absolut keinen Plan welche einstellungen ich im ProgTool auswählen soll, Low Fuse, Higt Fuse, Lockbits... mir qualmt der Kopf. Wäre nett, wenn du mal einen Blick in das ProgTool werfen würdest.

  • Also ganz ehrlich, ich habe wenig Lust, mir jetzt da irgendne SW zu installieren, nur um mal nen Blick rein zu werfen... :D


    Evtl. schaut noch jemand anders hier rein, der den selben Programmer/SW benutzt...


    Du hast doch nun AVR Studio auch schon drauf, damit ist m.W. der myAVR-Programmer kompatibel (einfach "STK500" oder "AVR911/910/109" einstellen), also kannst Du ja auch gleich aus AVR Studio flashen und Fusebits setzen...


    Und da musst Du Dir eben keine Gedanken machen, welche Bits das nun sind, sondern kannst einfach per Dropdown-Menue die Option "Externer Quarz ab 8 MHz" auswählen...


    SPIEN ist übrigens von Haus aus an, sonst könntest Du gar nicht mit dem Programmer drauf (=serial programming interface enable)... ;)


    ansonsten gibt's noch dieses Tool hier, da kann man auch Optionen im Klartext auswählen, und das gibt dann die Werte der Fuses aus...


    Grundsätzlich beachten: Fuses immer *erst* lesen, dann Änderungen klicken, dann schreiben! - ohne das vorherige Lesen kann da Blödsinn bei rauskommen!

    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 habe wol meinen Microkontroller geschrottet mit falschen einstellungen habe nämlich keinen zugriff mehr auf ihn. Naja dann hau ich die SMD Platine mal in die Tonne und werde den Spaß dann noch mal in groß (DIP) mit gesockeltem ATmega aufbauen und weiter testen, wenn ich den dann wieder versaue brauch ich wenigstens nur diesen zu tauschen. Habe mal ein Bild mit angehängt mit welchen Einstellungen ich ihn wohl gekillt habe.

  • Ich habe wol meinen Microkontroller geschrottet mit falschen einstellungen habe nämlich keinen zugriff mehr auf ihn.

    Geschrottet ist er vermutlich nicht, sondern eher auf eine Taktquelle gefused die nicht vorhanden ist. Ohne Takt lässt er sich dann auch nicht proggen. Im Internet finden sich aber zahlreiche Tricks, wie man ihn extern mit einem Takt versorgen kann (zB mit einem weiteren AVR der einen Pin toggelt oder seinen Takt über CKOPT an einen Pin ausgeben kann).

  • Kannst du dein programmer auch mit Pony Prog nutzen? Wenn ja übertrag da doch einfach die Hex file und setzt danach die Fuses!

    Nein, leider ist mein Programmer nicht Kompatibel mit Pony Prog, STK500 unterstützt der nicht. Ich hatte ihn ja schon geflascht, hatte aber die Vermutung das nicht der externe Quarz benutzt würde. Meine Einstellungen sahen so aus.