| 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. |
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 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.
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.
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.
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.
|
|
|
||||||||||||||||||||||||||||||||||
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.
| 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 |
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)


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

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 |
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.
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.
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)
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)
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)
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.
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
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)
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.
Falls irgend jemand Anregungen, Vorschläge oder Kritik zu meinen Internet-Seiten hat, kann er eine E-Mail an folgende Adresse schicken: