Forum: Mikrocontroller und Digitale Elektronik Grundlegende Fragen zu DMX512


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Tony (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe in der Bucht eine RGB-LED Leiste im IP66 Alucase geschossen und 
wollte nun mal damit spielen. Es handelt sich um den Typ XB-27 RGB der 
Firma Traxon ( 
http://www2.traxontechnologies.com/get_pic/pdf/2428-EN_Nano_Liner_Allegro_AC_XB_RGB_Spec_v2p3.pdf 
).

Das Modul wird direkt an 220V angeschlossen und kann dann dann mittels 
DMX512 gesteuert werden.

Ich habe selbst noch nie mit DMX gearbeitet und habe mir erstmal einen 
RS485 Controller an den Pi gehangen um mit der UART (8n2) erstmal das 
Protokoll/ Timing zu verifizieren. Später soll das alles auf ne Kleine 
Platine mit ESP8266 und entsprechend installiert werden.

Es stellen sich mir leider folgende Fragen:
1) DMX ist doch ein adressgesteuertes Protokoll oder nicht? Weder in den 
Dokumenten noch auf dem Gerät selbst ist eine Adresse zu finden - auch 
kein DIP schalter o.ä.
Gibt es eine Art Broadcast oder ähnliches? Ich finde keine sinnvolle 
Info im Netz.
2) Wenn das Gerät dann zu hört, wie sage ich ihm welcher Farbkanal wie 
Hell sein soll? Ich habe gelesen dass eine RGB-LED quasi 3 Channel hat. 
Man gibt die Adresse des Gerätes an, gibt dann die Intensität des 1ten 
Channels an und dann mittels Adress-Inkrement immer so weiter bis alle 
Channel eingestellt sind.. stimmt das so?

3) Inkrementiert das DMX-Netzwerk automatisch die Adresse? Heißt wenn 
ich nach dem Reset einfach Werte ins Netzwerk Takte, werden dann die 
DMX-Slaves intern mitzählen (bei Null beginnend) und dann Ihren Wert 
entsprechend rausgreifen?
Dann könnte ich ja einfach 512 mal 0xFF ins Netzwerk packen und quasi 
mitzählen wann die LED-Leiste anspricht.. dann wüsste ich die Adresse. 
Is das so Richtig?


Vielen Dank schonmal,
Grüße

Tony

Beitrag #5017199 wurde vom Autor gelöscht.
von Fabian  . (fabian112)


Bewertung
0 lesenswert
nicht lesenswert
Wenn du DMX verwenden möchtest brauchst du meiner Meinung noch einen 
Data Injector, siehe Seite 5 von deiner Verlinken Anleitung.

Wie bei den Lampen dann die Adresse festgelegt wird ist mir auch 
rätselhaft.

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
Der fungiert aber nur als Adapter für Versorgungsspannung und DMX.

DMX Adressiert anhand des Frames und dessen Länge. Der Frame darf 
maximal 513 byte groß sein. Das erste byte ist die Startadresse die ist 
für DMX immer null, danach kommen die Channels.. du musst also nur den 
rx count zählen zwischen jeden break.

http://www.soundlight.de/techtips/dmx512/dmxdin.htm

von Tony (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Guten Abend!

Vielen Dank schon mal für die Antworten. Das mit dem Data Injector sehe 
ich so wie Marco,... Die Belegung direkt am Stecker sieht nämlich auch 
DMX+ und DMX- vor..

@Marco: " Das erste byte ist die Startadresse die ist für DMX immer 
null, danach kommen die Channels.."

Das Bedeutet, dass jedes DMX-Gerät die selbe Adresse hat? Dann könnte 
ich doch aber keine unterschiedlichen Geräte über eine DMX-Leitung 
ansteuern.
Müsste ich nicht alle Adressen durchgehen und dann pro Adresse alle 512 
Kanäle probieren (wobei es wahrscheinlich nur 3-5 sein werden)... Wenn 
die Lampe dann anspringt, weis ich welche Adresse und welche Channel 
verwendet werden oder?

Grüße
Tony

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Einige solche "verkettbaren" Geräte "konsumieren" ihre Daten und 
schicken den Rest weiter.

Das vereinfacht den Aufbau, auf der Bühne.
Defekte Geräte können ausgetauscht werden, ohne auf dem Mäuseklavier 
spielen zu müssen.
Die Verkettungsreihenfolge bestimmt die Adresse des einzelnen Gerätes.

: Bearbeitet durch User
von bluppdidupp (Gast)


Bewertung
0 lesenswert
nicht lesenswert
DMX-Geräte, die RDM unterstützen, können auch vom Controller aus eine 
Adresse zugewiesen bekommen. Da aber RDM nicht erwähnt wird, würde ich 
mal bezweifeln, dass das unterstützt wird.
Da im Handbuch auch nichts von einer Startadresse steht, würde ich auch 
davon ausgehen, dass die immer auf Adresse 1 reagieren und am 
DMX-Ausgang die restlichen Kanäle wieder ab Adresse 1 raus-senden (also 
quasi wie Arduino Fanboy es schon beschrieben hat. Die selbst 
konsumierten Kanäle werden quasi am Ausgang weggelassen)

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
Nein jedes Gerät hat schon seine Adresse und  fischt sich aber die Daten 
aus dem Frame heraus.  Bei deiner Leuchte wird die Adresse ewt. Extern 
programmiert.  Sonst macht man das mit DIP schaltern.

von Thomas F. (tf1973)


Bewertung
0 lesenswert
nicht lesenswert
Der Ausgang des Data Injectors hat ein Offset für die Adresse von 96 
Kanälen. Das heißt, alle Geräte haben intern Startadresse 1. Erster Data 
Injector versorgt also die LED Leisten mit den physischen Adressen 1-96 
von deinem Lichtpult, der nächste von 97 bis 192 usw.
Klingt am Anfang deutlich aufwändiger als die traditionelle Adressierung 
per DIP oder im Menü, macht bei größeren Installationen aber durchaus 
Sinn.

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
Damit es nicht zu Missverständnisse kommt der Frame beginnt mit dem 
startcode (nicht Adresse). Dieser ist bei Dmx null danach kommen die 
Channels.

Bitte beachte auch den break und MAB vor jedem Frame.   Außerdem die 
Interslottime also das wackeln zwischen den bytes. Was beim RPI oder 
ähnliches nicht unbedenklich ist.

von Dennis K. (scarfaceno1)


Bewertung
0 lesenswert
nicht lesenswert
Du brauchst dann auch den Injektor nicht.
Der macht ja nichts anderes als 230V AC mit dem DMX Signal zusammen zu 
legen.
Wenn du an den Stecker der ersten Lampe An die richtigen Pins die 230V 
und das DMX Signal anlegst, dann sollte das gehen.

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
Naja ich nehme mal das injektor auch für die nötige Trennung sorgt. 
Solche Sachen können auch in die Hose gehen.  Um wieviel Leuchten geht's 
hier eigentlich?

von Tony (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Vielen kompetenten Beiträge! Sehr interessante 
Punkte dabei die ich beachten/ probieren werde, Spitze!

Es geht tatsächlich nur um 1 (vlt. später eine 2te) Leuchte.
Ich habe mir jetzt ISL3259 RS485-Treiber besorgt.. mit denen habe ich 
schon mal gearbeitet.

Hab jetzt ne kleine Aufsteckplatine geätzt die ich auf den Pi stecken 
kann und dann werde ich mal was zusammen schreiben um mich mit dem 
Protokoll vertraut zu machen.
Danke euch nochmal!

Ich melde mich nochmal wenn es noch Probleme gibt :)

Grüße
Tony

von Marco H. (damarco)


Bewertung
-2 lesenswert
nicht lesenswert
Mal ehrlich... Ist die Leuchte irrend wo geklaut worden ?  Denn 
normalerweise ist diese so nicht im Handel erhältlich.

: Bearbeitet durch User
von Axel R. (Gast)


Bewertung
2 lesenswert
nicht lesenswert
jetzt sind natürlich alle auf die Antwort gespannt, haha ;)

StromTuner

von Tony (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Hallo :)

Ob die Lampe geklaut ist kann ich dir leider nicht sagen (oder zum 
Glück?).

Ich hab das Gerät auf Kleinanzeigen von privat bezogen,.. Ob der die 
irgendwo entwendet hat oder vlt. in der Branche tätig ist und die noch 
übrig war... keine Ahnung.

Aber du hast Recht,.. ich finde auch keine Andre Quelle.

Grüße
Tony

von waflija (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tony schrieb:
> Hallo zusammen,
>
> ich habe in der Bucht eine RGB-LED Leiste im IP66 Alucase geschossen und
> wollte nun mal damit spielen. Es handelt sich um den Typ XB-27 RGB der
> Firma Traxon (
> http://www2.traxontechnologies.com/get_pic/pdf/242...
> ).
>
> Das Modul wird direkt an 220V angeschlossen und kann dann dann mittels
> DMX512 gesteuert werden.

Es gab / gibt bei Traxxon zwei Varianten. Einmal eine Version die immer 
den ersten Block aus dem DMX Frame "rausschneidet" und für sich 
interpretiert - und eine Version für die man ein Programmiergerät 
braucht um die Adresse zu setzen.
Durchaus selten diese schon recht speziellen Leuchten irgndwo auf dem 
freien Markt zu finden.

> Ich habe selbst noch nie mit DMX gearbeitet und habe mir erstmal einen
> RS485 Controller an den Pi gehangen um mit der UART (8n2) erstmal das
> Protokoll/ Timing zu verifizieren. Später soll das alles auf ne Kleine
> Platine mit ESP8266 und entsprechend installiert werden.

Das funktioniert so rein elektrisch. Du brauch allerdings low-level 
Zugriff, die Timings bei DMX512 sind nicht einfach mit den normalen 
Libraries umzusetzen. Am einfachsten ist z.B. ein FTDI USB-Seriell 
Wandler. Google mal OpenDMX USB. Den kann du dann ohne großen Aufwand 
z.B. mit QLC / Open Light Architecture ansteuern.

> Es stellen sich mir leider folgende Fragen:
> 1) DMX ist doch ein adressgesteuertes Protokoll oder nicht? Weder in den
> Dokumenten noch auf dem Gerät selbst ist eine Adresse zu finden - auch
> kein DIP schalter o.ä.
> Gibt es eine Art Broadcast oder ähnliches? Ich finde keine sinnvolle
> Info im Netz.

http://www.soundlight.de/techtips/dmx512/dmx512.htm

DMX sendet immer einen ganzen Frame. Sprich Kanal 0 bis x. Je kleiner 
der Frame, desto öfter wird er widerholt. Jedes Gerät kann jeden Kanal 
in dem Frame sehen und wenn es wollte mitlesen. Kommt eine gewisse Zeit 
kein Frame gehen alle Geräte in den Bus-Reset. (Die Reaktion kann man 
meist einstellen.) Laut standard darf ein Gerät nur "lesen".



> 2) Wenn das Gerät dann zu hört, wie sage ich ihm welcher Farbkanal wie
> Hell sein soll? Ich habe gelesen dass eine RGB-LED quasi 3 Channel hat.
> Man gibt die Adresse des Gerätes an, gibt dann die Intensität des 1ten
> Channels an und dann mittels Adress-Inkrement immer so weiter bis alle
> Channel eingestellt sind.. stimmt das so?

Am Gerät stellt man ein auf welchen Kanal ein Gerät reagiert. Gibt es 
mehrere Kanäle für ein Gerät wird nur der "erste" eingestellt. 
(Einstellung 120 bei einem Moving Head mit 16 Kanälen = Kanal 120 bis 
135 werden ausgewertet)

Eine RGB Leuchte mit 3 Kanälen regiert z.B. bei der Einstellung DMX001 
auf 1,2,3 jeder der Kanäle enthält einen Wert von 0-255. 1 = R, 2 = G, 3 
= B

> 3) Inkrementiert das DMX-Netzwerk automatisch die Adresse? Heißt wenn
> ich nach dem Reset einfach Werte ins Netzwerk Takte, werden dann die
> DMX-Slaves intern mitzählen (bei Null beginnend) und dann Ihren Wert
> entsprechend rausgreifen?

Richtig. Das Timing ist hier enscheidend, vor allem die länge der breaks 
/ reset.

> Dann könnte ich ja einfach 512 mal 0xFF ins Netzwerk packen und quasi
> mitzählen wann die LED-Leiste anspricht.. dann wüsste ich die Adresse.
> Is das so Richtig?

Nein. Du sendest nur die Blöcke die gebraucht werden. Danach kommt eine 
Pause um das Ende des Frame anzuzeigen. Brauchst du nur 3 Kanäle, werden 
auch nur die 3 gesendet. Je mehr du sendest, desto geringer die 
Widerholrate.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.