MiniDMX

Neues

2008-01-20 Externe Links überprüft und korrigiert. Quelltexte der MDMXSVR.DLL unter PC Software hinzugefügt. Hinweis auf ein Folgeprojekt von Ulrich Radig hinzugefügt, da der verwendete Mikrocontroller AT90S2313 nicht mehr produziert wird.

Hinweis

Leider wird der verwendete Mikrocontroller AT90S2313 nicht mehr von Atmel produziert. Es fehlt mir die Zeit den MiniDMX auf den Nachfolger ATtiny2313 umzustellen. Deshalb dient das Projekt MiniDMX in der aktuellen Fassung nur noch Lehrzwecken.

Ulrich Radig hat aber auf Basis des MiniDMX ein Folgeprojekt "RS232 -> DMX" gestartet. Hier wird der ATtiny2313 mit einer angepassten Firmware verwendet. Er hat auch eine neue Platine erstellt. Das serielle Protokoll wurde nicht verändert, so dass die gleichen Ansteuerungsprogramme auf dem PC verwendet werden können.

MiniDMX

MiniDMX bietet einen preiswerten und einfach aufzubauenden DMX-Ausgang. Es wird die serielle Schnittstelle (RS232) oder optional die USB-Schnittstelle zur Datenübertragung verwendet.

Es werden bis zu 512 DMX-Kanäle bedient.

Die Hardware-Entwicklung ist schon seit längerer Zeit abgeschlossen. Unter PC Software gibt es die ersten Ansteuerungsprogramme für den MiniDMX.

DMX-Protokoll

Das DMX-Protokoll definiert, wie über eine RS485-Leitung Daten für 512 Kanäle digital übertragen werden. Es wird im Theater- und Discobereich eingesetzt, um z.B. Kanaldaten vom Lichtmischpult zum Dimmer zu übertragen. Wenn jemand umfassende Erläuterungen zu DMX braucht, soll er mal bei SoundLight vorbeischauen.

Weitere Projekte im Internet

Auf Basis von AVR Microcontrollern hat Martin Schneebacher einen DMX-Decoder und einen DMX-Dimmer entwickelt.

Weitere interessante Projekte bezüglich AVR und DMX befinden sich auch auf Henne's Sites über Lichttechnik.

Hardware

Damit die Anforderungen erfüllt werden, habe ich mich für die Verwendung des Microcontrollers AT90S2313 von Atmel entschieden. Durch das wiederbeschreibbare Flash-ROM können auch später noch Funktionen hinzugefügt und Fehler leicht beseitigt werden. Alle weiteren Bauteile werden in der Standardbeschaltung verwendet. So wird der SN75176 als Pegelwandler für den DMX-Bus, der MAX232 als Pegelwandler für die serielle Schnittstelle und der 78L05 als Spannungsregler verwendet.

Anschlußbelegungen der Steckverbinder

ISP (SV4)
1 /RESET
2 -
3 SCK
4 MISO
5 MOSI
6 GND
DMX Ausgang (SV2)
1 DMX+
2 DMX-
3 GND
RS232 (SV3)
1 TXD
2 RXD
3 GND
4 bisher nicht verwendet
5 bisher nicht verwendet

SV10 ist für Erweiterungen gedacht, die auf einer zweiten Platine aufgebaut werden (z.B. Anschluß für ein LCD-Modul oder analoge Eingänge). Für den normalen Betrieb müssen Jumper auf die Pins 11, 12 und 13, 14 gesteckt werden.

Funktionen der LEDs und des Tasters

LED1, SV7 Die DMX-Daten wurden erfolgreich empfangen und gesendet.
LED2, SV6 Es ist ein Fehler beim Datenempfang vom PC aufgetreten.
LED3, SV5 Ende des Startvorgangs. DMX-Daten können nun gesendet werden.
Switch, SV9 bisher keine Funktion

Änderungen von Rev. 1.0 auf 1.1

Dateien

Schaltplan (Rev. 1.1, GIF-Format, 19kB)
Bestückungsplan (Rev. 1.1, GIF-Format, 24kB)
Layout (Rev. 1.1, TIFF-Format, 25kB)
Stückliste (Rev. 1.1, TXT-Datei, 1kB)

Anschlußschema der seriellen Schnittstelle

Anschluß seriellen Schnittstelle

D9-Buchse
(Pins 1-5 oben, Pins 6-9 unten)

Ein paar Bilder von der bestückten Platine (Rev. 1.0)

Platine von schräg oben Platine von oben Platine von unten

Erweiterungen

USB-Schnittstelle

Der MiniDMX kann mit dem USB-Interface auch an die USB-Schnittstelle eines PCs angeschlossen werden. Folgendes ist dabei zu beachten:

Es wird keine externe Stromversorgung mehr benötigt. Der MiniDMX versorgt sich über die USB-Schnittstelle mit Strom. Folgende Bauteile brauchen deshalb nicht bestückt werden: C1, C2, C3, C4, C11, D1, IC3, IC4. Die Steckverbinder SV1 und SV3 können dann natürlich auch entfallen.

Die zwei Jumper auf SV10 entfallen.

Für den Anschluß des USB-Interfaces an den MiniDMX ist folgendes Anschlußschema zu verwenden:

USB-Interface
(SV3, SLINK)

MiniDMX
(SV10)
Pin Funktion Pin Funktion
1 +5V 2 +5V
13 GND 4 GND
3 TXD 13 RXD
4 RXD 11 TXD

Wenn das USB-Interface das erste Mal an den PC angeschlossen wird, muß der Virtual COM Port-Treiber installiert werden. Danach erscheint eine weitere serielle Schnittstelle im System, über die der MiniDMX nun wie gewohnt angesteuert werden kann.

MiniDMX Software

Programmierung

Der AT90S2313 muß natürlich noch das entsprechende Programm bekommen, damit alles funktioniert. Die entsprechende HEX-Datei muß dafür in das Flash-ROM vom AT90S2313 geladen werden. Dazu wird die Schaltung komplett aufgebaut und die Betriebsspannung angelegt. Dann kann der AT90S2313 über den Steckverbinder ISP (SV4) programmiert werden. Links zu verschiedenen Programmieradaptern findet ihr auf meiner AVR Microcontroller-Seite. Bei den verschiedenen Programmieradaptern muß auf die Belegung des ISP-Steckers geachtet und eventuell geändert werden, damit sie mit der Belegung beim MiniDMX (SV4) übereinstimmt.

Testprogramme

Um den Microcontroller, die LEDs und die serielle Schnittstelle nach dem Aufbau der Platine zu testen, habe ich noch zwei Testprogramme geschrieben. Das Programm blinktest läßt die drei LEDs abwechselnd blinken, und das Programm uarttest sendet alle über die serielle Schnittstelle empfangenen Daten an den PC zurück. Das kann gut mit einem Terminalprogramm überprüft werden (Einstellungen: Bits pro Sekunde: 115.200, Datenbits: 8, Parität: keine, Stoppbits: 1).

Die Quelltexte der Testprogramme und der Version 1 der Firmware sind für den Assembler AVA geschrieben. Wer die Programme ändern und nochmal neu übersetzen will, findet den Assembler AVA auf meiner AVR Microcontroller-Seite.

Testprogramm blinktest (Intel-Hex-Format, 2kB)
Testprogramm uarttest (Intel-Hex-Format, 2kB)

Version 1.X

Quelltext der MiniDMX-Firmware v1.0 inkl. Datei für das Flash-ROM (Intel-Hex-Format, 4kB)
Quelltext der MiniDMX-Firmware v1.1 inkl. Datei für das Flash-ROM (Intel-Hex-Format, 5kB)

Version 2.X

Für die Version 2.0 der MiniDMX-Firmware wurde der Quelltext in C komplett neu geschrieben. Zur Übersetzung wurde der AVR-GCC benutzt. Diesen Compiler gibt es für Windows mit umfangreichen Hilfsprogrammen als WinAVR-Paket.

Es werden nun bis zu 512 Kanäle unterstützt. Das serielle Protokoll wurde dazu erweitert, ist aber abwärtskompatibel mit der Version 1.1. Alle PC-Programme müßten also ohne Änderung mit der Version 2.0 zusammenarbeiten. Natürlich können dann nur 96 Kanäle benutzt werden. Die Ergänzungen im seriellen Protokoll sind weiter unten aufgeführt.

Quelltext der MiniDMX-Firmware v2.0 inkl. Datei für das Flash-ROM (Intel-Hex-Format, 6kB)

Serielle Protokoll v1.0/v1.1

Einfach folgenden Datenblock mit 115.200 Bits pro Sekunde, 8 Datenbits, ohne Parität, einem Stoppbit und ohne Software- oder Hardware-Flußkontrolle über die serielle Schnittstelle senden:
$5A - Blockstart
$A0 - Befehl: DMX-Out mit 96 Kanäle
96 Bytes für die Kanäle 1 bis 96
$A5 - Blockende

Nach max. 100ms sendet MiniDMX folgendes zurück:
$5A - Blockstart
$C1 - Befehl ausgeführt
$A5 - Blockende

Wenn nach 100ms nichts zurückgekommen ist, stimmt die Verbindung nicht. Normalerweise meldet sich MiniDMX schon früher zurück, dann kann sofort der nächste Datenblock gesendet werden. Auf diese Weise können die DMX-Daten bis zu 72 mal in der Sekunde aufgefrischt werden.

Serielle Protokoll v2.0

Die Einstellungen der seriellen Schnittstelle entsprechen denen aus Version 1.0/1.1. Es gibt zwei zusätzliche Befehle:

DMX-Out mit 256 Kanälen

$5A - Blockstart
$A1 - Befehl: DMX-Out mit 256 Kanäle
256 Bytes für die Kanäle 1 bis 256
$A5 - Blockende

DMX-Out mit 512 Kanälen

$5A - Blockstart
$A2 - Befehl: DMX-Out mit 512 Kanäle
512 Bytes für die Kanäle 1 bis 512
$A5 - Blockende

Antwort vom MiniDMX bei erfolgreicher Befehlsbearbeitung (wie bei v1.0/v1.1)

Nach max. 100ms sendet MiniDMX folgendes zurück:
$5A - Blockstart
$C1 - Befehl erfolgreich ausgeführt
$A5 - Blockende

Antwort vom MiniDMX bei einem Fehler

$5A - Blockstart
$C0 - Fehler bei der Befehlsausführung
$A5 - Blockende

PC Software

Leider habe ich selber nicht die Zeit ein aufwendiges Ansteuerungsprogramm zu entwickeln. Ich helfe aber allen Programmierern, die ihr Programm an den MiniDMX anpassen wollen.

Um eine Ansteuerung des MiniDMX so einfach wie möglich zu machen, habe ich eine DLL (Dynamic Link Library) für Windows erstellt. Sie übernimmt die Initialisierung der verwendeten seriellen Schnittstelle und startet danach einen Thread, der im Hintergrund unabhängig vom Hauptprogramm die Ausgabe auf den MiniDMX übernimmt. Dazu wird auf dem MiniDMX mindestens die Firmware Version 2.0 vorausgesetzt. (MDMXSVR.DLL v1.0.0.0, 29kB) (Quelltexte mit C++ Builder Projekt, 33kB)

Als Beispiel für die Einbindung der DLL unter Visual Basic (Version 6) habe ich das "MDMX Testprogramm" erstellt. Im Download sind die Quelltexte enthalten. (MDMX Testprogramm v1.0.1, 11kB)

Hier ist noch ein kleines Testprogramm für DOS. (Unter Windows läuft es auch.) Es werden alle Kanäle langsam von 0 bis 255 hochgefahren.
Testprogramm mdmxtest (DOS-Exe, 9kB)

Programme von anderen Autoren

Ich habe Raphaël Wellekens unterstützt sein Programm FreeStyler an den MiniDMX-Dongle anzupassen. Ein Blick lohnt sich auf jeden Fall. Das Programm darf kostenlos benutzt werden.

DMXControl ist ein Freeware Projekt, das u.a. den MiniDMX unterstützt. Es handelt sich um ein sehr umfangreiches Programm mit vielen Funktionen.

Kontakt

Falls irgend jemand Anregungen, Vorschläge oder Kritik zu meinen Internet-Seiten hat, kann er eine E-Mail an folgende Adresse schicken: