Das mit dem DMX Interface stimmt.Also mit dem DMXCOntorl hab ich schon bisschen rumgespielt. Aber dann brauch ich am PC auch noch ein Dmx Interface wie du geschrieben hast...?
Wir haben das DMX Interface V4 von DMX4All.
Wenn Du das einfache über USB anschließst, braucht das Interface keine eigene Stromversorgung.
Schau mal auf diese Seite http://www.soundlight.de/techtips/dmx512/dmx512.htmAuserdem hab ich das noch nicht so ganz gecheckt wie des funktioniert (dmx) Des ist einfach so das jeder "Kanal auf einer anderen Frequenz die man mit PWM erzeugen kann liegt oder??
Im Prinzip handelt es sich dabei um eine serielle Datenübertragung mit 1 Startbit, 8 Datenbits und einem Stop Bit, also 250kBit/s 8N1.
Diesen Datenstrom kann der USART eines Microcontrollers ohne weiteres empfangen und auswerten.
Um eine definierten Startpunkt zu bekommen werden in die Impulskette gezielt Code Verletzungen eingebaut.
Es wird eine Dauerlage 0 für mehr als eine Impulskette ( = 10 Bit ) eingefügt.
Diese Codeverletzung kann man auswerten ( erzeugt einen Frame Error =FE) beim USART des Microcontrollers.
Nach dieser Code Verletzung wird ein DMX Status Byte eingefügt. Das ist üblicherweise 8Bit * 0. Dieses Statusbyte war und ist mal vorgesehen um verschiedenartige Geräte über DMX 512 anzusteuern. Üblicherweise wird aber nur das Statusbyte 0 verwendet. Statusbyte 0 bedeutet Dimmer.
Die Empfänger bekommen eine Startadresse die von 1...512 einstellbar sein sollte. Die meisten einfachen Geräte haben da einfach einen Dip Fix Schalter drin.
Dein Moving Head wird also 5 Kanäle benötigen (RGB + 2 Servos) der nächste Moving Head krigt dann Adresse 6 und ist somit unabhängig vom erten Moving Head ansteuerbar.
Sollen 2 Moving Heads immer genau das gleiche machen kann man für die beiden einfach nur die gleiche Adresse verwenden.
Man spricht dabei auch von Soft - Patching.
Über den elektischen Aufbau der Schnittstelle ist nicht viel zu sagen. Da werden einfach ganz normale RS 485 Schnittstellentreiber eingesetzt.
Da die Datenübertragung nur von einem Master zu mehreren Slaves (maximal 32) geht braucht man sich auch um einen Handshake nicht zu kümmern.
Am Ende einer DMX Kette wird ein Terminator = ein XLR Stecker mit eingebautem 120 Ohm Widerstand eingebaut.
Ein DMX Gerät hat jeweils einen Stecker und eine Buchse, weil das Signal ja auf weitere Geräte weitergeführt werden kann.
Als Steckverbinder sind in der Norm 5polige XLR Stecker/ Buchsen definiert.
Nur an diese Norm hält sich so gut wie kein Hersteller.
Üblicherweise werden da ganz normale 3 polige XLR Stecker Buchsen verwendet, die auch wesentlich kostengünstiger sind.
Als Kabel sind Digital Audiokabel vorgesehen.
Cat. 5 Netzwerk Patchkabel sind aber genauso gut, und zur Not tut es auch ein 3 poliges Mikrofonkabel.
Ein paar Softwaresourcen für ATMEL AVR Microcontroller hatte ich auch schon mal im Internet gefunden, die sind aber zur Zeit irgendwo im meinem Datenmüll untergegangen.
Wenn Dir eine Dimm Frequenz von 60..80 Hz reicht, kannst Du den Timer 0 frei laufen lassen, bis ein Timer Overflow Interrupt anliegt.Und wie wie dimme ich dann die leds? bitte helft mir bisschen auf die sprünge
In diesem Timer Overflow Interrupt zählst Du ein Register hoch.
Dieses Register wird dann mit der gewünschten Helligkeit deiner Led's verglichen. Also bei RGB 3 Vergleiche.
So lange der Zählerstand unter der gewünschten Helligkeit ist wird der entsprechende Ausgang eingeschaltet. Sobald der Zählerstand >= der gewünschten Helligkeit ist wird der Ausgang abgeschaltet.
Diese Routine sollte möglichst schnell ablaufen, also wäre da Assembler sinnvoll.
Wenn die Routine läuft brauchst Du im Hauptprogramm nur die entsprechenden Sollwerte in die Dimm Speicherplätze einschreiben und die Dimmung läuft dann automatisch im Hintergrund.
Da auch DMX nur Werte von 0...255 kennt braucht dieses Zählregister auch nur 1Byte breit sein.
Die Erzeugung der Servoimpulse würde ich mit dem Timer 1 machen.
Wenn Du die Taktfrequenz und die Prescaler geschickt auswählst kann Servo 1 mit Comparematch A Interrupt, Servo 2 mit Comparematch B Interrupt und die Pause zwischen den Impulsen mit dem Timer Overflow bedient werden und läuft somit ebenfalls im Hintergrund.
Dein Hauptprogramm hat somit "alle Zeit der Welt" um die Werte in die entsprechenden Speicheradressen zu schreiben und die Daten von DMX zu empfangen, wobei ich den Datenempfang ebenfalls in einen Interrupt verschieben würde.
Da Du in deinem Controler ja nur die Bytes des DMX Stromes auswerten musst die den Controller auch betreffen (Adresszähler mitlaufen lassen) braucht der Controller auch nur die Werte des DMX Stromes abspeichern die er für seine Funktion braucht - sprich der Controller braucht nicht mal viel RAM. Ich meine die komplette Applikation für ein Moving Head sollte sich mit einem ATMEGA8 realisieren lassen. Also 4 mal gleicher Aufbau mit gleicher Software und dein Projekt sollte laufen.
Lesezeichen