DMX512-Interface





Ansteuerung intelligenter Scheinwerfer

Bis etwa 1985 gab es in der Lichttechnik zur Steurung fast ausschliesslich eine analoge 0-10 Volt Spannung. Der Schieberegler am Lichtpult gab diese Spannung über ein langes Verbindungskabel an ein Dimmerpack weiter. Für jeden anzusteuernden Dimmerkanal war eine eigene Ader im Kabel nötig, dadurch entstanden dicke und teure Multicore-Kabel. Bei langen Verbindungskabeln kam es zu Spannungsverlusten und Einstreuung von Störsignalen. Die ersten damals aufkommenden Scanner benutzten entweder mehrere Analogkanäle zur Steuerung ihrer Funktionen, oder arbeiteten mit einer proprietären digitalen Schnittstelle, die dann aber wieder von kaum einem Lichtpult unterstützt wurde.
Als Abhilfe wurde die Schnittstelle DMX512 geschaffen. Es handelt sich dabei um eine digitale, serielle Schnittstelle mit einer Geschwindigkeit von 250 kBit/s. Dabei werden etwa 50 mal pro Sekunde bis zu 512 Byte übertragen. Damit können z.B. 512 Dimmerkanäle angesteuert werden, oder entsprechend weniger intelligente Scheinwerfer, die jeweils mehrere Steuerkanäle benötigen. Leider handelt es sich um eine unidirektionale Schnittstelle, die angeschlossenen Geräte können also keine Statusinformationen zurückliefern. Auf physikalischer Ebene kommt ein differentielles Übertragungsverfahren zum Einsatz, d.h. die Zustände logisch 0 und 1 werden über zwei Adern (Signal + und Signal -) definiert. Damit ist das Verfahren unempfindlich gegenüber Störsignalen auf grossen Bühnen. Die 3-polige Verkabelung erfolgt busförmig, jedes angeschlossenen Gerät gibt das Signal also zum jeweils nächsten weiter.

DMX-Interface Version I

Da ich meine Lichtanlage über eine Windowssoftware vom PC aus steuern möchte, kaufte ich zunächst eine ISA-Steckkarte von Soundlight für 150 Euro, die einen DMX512-Anschluss am PC zur Verfügung stellt. Allerdings war ich mit dieser Karte unzufrieden, so dass ich mir bald ein eigenes DMX512-Interface baute, das per serieller Schnittstelle am PC angeschlossen wird. Dieses meiner Meinung nach leistungsfähigere Interface hat eine Bauteilwert von etwa 15 Euro.

Dieses DMX-Interface Version I hat folgende Features:


Das Interface nutzt einen Atmel 8535 Controller mit 512 Byte RAM, die damals größte Veriante. Leider ist das immer noch zu wenig zur Übertragung aller 512 DMX-Kanäle (auch der Stack verbraucht Speicher), daher habe ich die Kanalzahl auf 256 festgelegt. Für die Kommunikation mit dem PC wird der UART des Controllers genutzt, das Senden des DMX-Datenstroms erfolgt dagegen mit einem in Software realisierten UART.


DMX-Interface Version II

Mit zunehmender Komplexität meiner Lichtanlage kam der Wunsch nach einem Interface auf, das mit Hilfe einer bidirektionalen Kommunikation auch Daten von den Scheinwerfern an den PC rückmelden kann.

Das Ergebnis ist das DMX-Interface Version II:


Das Interface nutzt zwei Atmel mega8 Controller mit jeweils 1024 Byte RAM. Der eine Controller ist lediglich für die serielle Kommunikation mit dem PC zuständig, sei es per RS232 oder über USB. Der andere Controller wickelt die DMX-Übertragung ab.
Die von mir entwickelte bidirektionale Erweiterung des DMX-Protokolls (sozusagen "Extended DMX") nutzt bis zu 768 Kanäle in Senderichtung und empfängt maximal 128 Byte Daten von den Scheinwerfern pro Frame. Dabei ist meine Erweiterung kompatibel zum offiziellen DMX-Protokoll, d.h. Geräte gemäß DMX512-Spezifikation können gemeinsam mit erweiterten DMX512-Geräten problemlos auf demselben Bus betrieben werden.
Neben dem Auslesen von Statusinformationen wie Scheinwerfertemperatur, Betriebsstunden etc. kann das Interface auch ein Firmware-Update in dafür vorbereiteten Scheinwerfern durchführen. Das macht die Softwareentwicklung wirklich sehr komfortabel!


DMX-Steuersoftware LumaX

Natürlich wird ein DMX-Interface erst gemeinsam mit der passenden Windows-Software zum Leben erweckt. Dazu habe ich das Programm LumaX entwickelt; es arbeitet mit meinen beiden DMX-Interfaces zusammen.

Die Erstellung einer Lichtshow erfolgt in Form einer sog. Sequence, die aus beliebig vielen Tracks bestehen kann. In den Tracks sind die Events gespeichert, also z.B. die Information "Scheinwerfer Nr. 7 zum Zeitpunkt 5 Sekunden auf halbe Helligkeit". Ausserdem kann ein Track neben Events auch wieder ganze Sequenzen enthalten, sozusagen eine Show bestehend aus Untershows. Das ganze lässt sich beliebig tief verschachteln. Es können mehrere Sequenzen gleichzeitig laufen, über Filter lassen sich einzelne DMX-Kanäle stummschalten.

In einer Eventliste lässt sich jedes einzelne Event eines Tracks nachbearbeiten, löschen oder verschieben. Um das Bearbeiten zu vereinfachen lassen sich auch hier Filter definieren: Event-Filter einfach auf "Farbe" setzen, und schon werden nur noch die Farbinformationen in der Eventliste angezeigt.

Ein Patchbay erlaubt das koppeln von Geräten: es lässt sich beispielsweise definieren, dass die Scanner 2, 3 und 4 genau das nachmachen sollen, was Scanner 1 vormacht, nur das Scanner 3 und 4 in der Bewegungsrichtung gespiegelt sind und auf die Y-Position von Scanner 2 ein Offset von 72 addiert werden soll. Ausserdem soll zwischen den einzelnen Scannern eine Zeitverzögerung von 250ms liegen, das sorgt bei schnellen Schwenks für einen schönen Welleneffekt.





Mit Hilfe des Device Designers lassen sich beliebige Scheinwerfer in die Lichtsteuerung integrieren. Es lässt sich eine Bedienoberfläche mit Schiebereglern, Farbschaltern, X-Y-Positionsgebern und weiteren Elementen entwerfen. Jedem Bedienelement wird ein DMX-Kanal zugewiesen.
Von jedem auf diese Weise definierten Gerät lassen sich beliebig viele Instanzen ableiten, z.B. soll es den Moving Head "Trackspot" einmal mit der DMX-Startadresse 17 geben, ein weiteres mal auf Kanal 56 und schließlich auch noch auf Adresse 389.
Den Werten eines DMX-Kanals lassen sich symbolische Namen zuweisen. Die Bezeichnung "Gobo Sterne" ist vielsagender als die Zahl 173.