Selbstbau: ein "intelligenter" DMX-Merger

kaf
kaf
Registrierter Benutzer
Zuletzt hier
19.03.17
Registriert
01.11.09
Beiträge
408
Kekse
2.977
Ort
Chemnitz
Selbstbau: ein "intelligenter" DMX-Merger

Ich hatte es vor Jahren mal ganz zaghaft durch die Gegend posaunt, dass ich an so einer Art DMX-Merger arbeite, der aber noch viel viel mehr können sollte. Nach gefühlten 3 Jahren Entwicklungszeit ist noch kein wirkliches Ende in Sicht, aber ich versuche mich mal an einem Zwischenstand.

Wie alles begann

Eines Winters irgendwo in Chemnitz. Zwei Gestalten laufen irgendwann nach Mitternacht durch den Schnee. "Was hälst du von der Idee, einen DMX-Merger selbst zu bauen?" "Okay". Die Idee war geboren.

Der Versuch eines Pflichtenheftes erwies sich als ziemliches Fass ohne Boden, könnte man doch sooo viele schöne Dinge einbauen:
- Merger
- Splitter
- Patch
- Diagnose
- PC-Interface
- eierlegende Wollmilchsau
- usw.

Im Nachhinein betrachtet ist es ein Merger mit Patch geworden, der einfach ein bisschen Luxus bekommen hat.

Die Hardware von außen

Wöllte man eine verkaufsfördernde Broschüre schreiben, klänge es vlt so.

- 19" 1HE Rackgehäuse
- 2 Eingangskanäle
- 4 galvanisch getrennte Eingänge pro Kanal: 3+5 polig jeweils vorne und hinten
- 4 galvanisch getrennte Ausgänge: 3+5 polig jeweils vorne und hinten
- USB-Schnittstelle für Firmwareupdates und Konfiguration
- abschaltbarer Patch auf beiden Kanälen
- 3 Patchtmodi: höchster, aktuellster und "intelligent"

Front_klein.jpg
Back_klein.jpg

Die Hardware von innen

Keine Panik :D

Foto0261.jpg

Der Aufbau ist eigentlich ganz einfach:

Links unten sieht man die Eingangsplatine. Jeder Eingang hat seinen eignen Optokoppler, da der Merger das Signal gleichzeitig terminiert, gibts da auch keine Probleme mit dem Stromverbrauch der Eingänge (wohlgemerkt wird hier der Standart verletzt, weil die Diode in Gegenrichtung fehlt, deren Nachrüstung steht seit 3 Jahren auf der To-Do-Liste:gruebel:). Über einen Multiplexer wird der jeweilige Eingang gewählt. Darunter sieht man eine Wandlerplatine USB <-> USART.

Rechts daneben das eigentliche Herzstück, bestehend aus einem ATmega2561 der Firma Atmel, zwei Transistorarrays als LED-Treiber und einem UND-Gatter (unter der Prozessorplatine).

Darüber befindet sich die Ausgangsplatine, das Signal wird jeweils über einen Optokoppler galvanisch vom Rest getrennt und geht dann in einen Line-Driver.

Ganz rechts noch 5 Schaltnetzteile zur Stromversorgung. (Die stammen aus USB-Ladegeräten, günstiger bekommt man ne stabile 5V Versorgung nicht :))

Das ganze wurde in ein 1 HE Leergehäuse von thomann geschraubt.

Die Software

Ich möchte ehrlich gesagt gar nicht viele Worte zum Thema Software verlieren, weil sie am meisten Arbeit gemacht hat. Sämtliche Algorithmen habe ich selbst geschrieben, weil mir bisherige Lösungen zu ineffektiv waren. Am liebsten hätte ich ja gleich zu Assembler statt C gegriffen, aber da hat dann doch meine Vernunft erfolgreich widersprochen:D

Das Einlesen von DMX funktioniert unabhängig vom genauen Timing und Paketlänge, alle Eingänge sind doppelt gepuffert, d.h. bei Verlust des DMX-Signals steht immer noch das letzte fehlerfreie komplette Paket zur Verfügung.

Das Berechnen des Ausgangspaketes erfolgt immer so oft wie möglich, das gibt mir die Möglichkeit, Rückschlüsse über die Auslastung des Mikrocontrollers zu nehmen. Zur Zeit sind es immer so 200 komplett berechnete Pakete pro Sekunde, sollte reichen ;).

Die Ausgabe ist eig nicht weiter spektakulär, sie erfolgt über 2 Timer. Es werden natürlich immer alle 512 Kanäle gesendet.

Und was ist jetzt mit den drei Modi?

Wie bereits erwähnt gibt es drei Betriebsarten, diese möchte ich kurz vorstellen:

maximaler Wert: auf jedem Kanal kommt der Eingang mit dem höchsten Wert durch. Beispiel: Pult A sendet für Kanal 23 den Wert 130, Pult B den Wert 10. Also kommen auf den Ausgangskanal 23 die 130 von Pult A.

aktuellster Wert: auf jeden Kanal kommt der Wert des Einganges, wo die letzte Änderung auftrat. Ganz einfach gesprochen: "Die letzte Faderbewegung kommt durch".

"intelligent":
Der Modus "aktuellster Wert" ist zwar an sich ganz nett, nur kann es vor allem in Verbindung mit LED-Scheinwerfern zu sehr sprunghaften Helligkeitswechseln kommen, wenn einfach die Wertdifferenz zwischen den Pult zu groß ist.
Beispiel: bei Pult A steht der Fader auf 0%, das ist der aktuellste Wert. Bei Pult B steht der Fader auf 100%. Jetzt wird der Fader von Pult B langsam runtergezogen, Pult B hat damit die letzte Änderung, der Scheinwerfer wechselt damit ganz plötzlich auf (fast) 100%, um dann langsam dunkler zu werden. Hässlich.
Die Lösung des Problems besteht darin, dass der Merger im Modus "intelligent" erkennt, ob gerade gefadet oder geflasht wird, beim Faden werden dann Zwischenschritte eingefügt, die aus dem Blitzen einen sanften Übergang machen. Bei einem Flash wird jedoch das Signal 1:1 übernommen.

Und wie ist das jetzt mit der PC-Anbindung?

Der Merger besitzt nur sehr eingeschränkte Bedienelemente, weil ich erreichen wollte, dass man ihn auch ohne Anleitung versteht (gut, dass es da von wesentlichem Vorteil gewesen wäre, die LEDs und Taster zu beschriften, das, ähm, naja, also....
:D), deshalb kann man am Merger selbst den Patch pro Kanal nur ein- und ausschalten, das Erstellen der Patchtabelle muss über einen PC vorgenommen werden.
Die Software dazu schrieb ich zunächst unter Delphi und sie wurde so schlecht, dass ich mich eigentlich dafür schäme. Die Übertragung einer Patchtabelle dauert ewig und währenddessen bekommt man 3mal einen Herzinfarkt, weil man glaubt die Verbindung sei abgebrochen. In 50% der Fälle ist sie es auch.
Schuld daran ist meiner Meinung nach die Kombination von Comport und Threads unter Delphi, das wollte einfach nicht.

Deswegen entsteht zur Zeit ein Kommandozeilentool in C++, welches eine im Texteditor geschriebene Patchtabelle unter Linux und Windows auf den Merger läd.

Praxis! Praxis! Praxis!

Nun genug
mit der grauen Theorie, was war nun jenseits der heimischen Bastelwerkstatt los.

Wir befinden uns im August 2011. Das Projekt "AUFwachsen - ZUSAMMENwachsen" führt mit Kindern und Jugendlichen aus Sachsen und Tschechien eine kleine Tour durch Usti nad Labem und Dresden durch. Mit dabei ist der Merger, der sich um die DMX-Versorgung des kompletten Gegenlichtes kümmert :)

Foto0260.jpg


März 2012. Der Merger gewinnt beim 21. Regionalwettbewerb Südwestsachsen 2012 von jugend forscht den 3. Platz in der Kategorie Technik.
Juni 2012. Es folgt der Sonderpreis in der Kategorie Wissenschaft/Technik bei der Talentshow der IMM-Stiftung in Mittweida.

Inzwischen ist der Merger im Technikfundus der T.I.M.E. Musical ArGe zuhause.

Auf zu neuen Ufern

So wirklich fertig wird so ein Projekt ja nie. Während die eigentlichen Grundfunktionen ja ganz gut funktionierten, regte mich die schlechte PC-Anbindung zunehmend auf. Dazu kam, dass doch immer wieder Beschwerden kam, dass die Bedienung einfach nicht logisch sei. Als dann noch die Idee auftauchte, sich bei der Lichtsteuerung vom PC helfen zu lassen und dass dafür ein Artnet Node ganz praktisch wäre, war ein Umbau beschlossene Sache.
Und das wird demnächst passieren:

- neue Frontplatine: mehr Taster für einfachere Bedienung.
- neue Hauptplatine: jetzt in SMD/THT Mischbestückung werden kleinere Designfehler behoben, zusätzlich wird der SPI-Anschluss als Stiftleiste herausgeführt
- als Prozessor für Artnet und co wird ein Raspberry Pi eingebaut -> Anschluss über SPI
- das alles passt dann nur noch in ein 2 HE Gehäuse

Mit dem Raspberry kommt natürlich ein imenser Programmier- und Zeitaufwand, deswegen wird dieser Punkt als letztes umgesetzt. Die neuen Platinen sind aber bereits geätzt und die Firmware wird generalüberholt.

Wenn man ganz ganz weit in die Zukunft sieht, könnte man mit dem Raspberry auch solche Sachen wie Lichtpult und so bauen...a never ending story.

Die Preisfrage

Ich habe mich inzwischen dafür entschieden, das Projekt für den Nachbau freizugeben, sobald die Firmwareüberarbeitung und die neuen Platinen fertig sind. Bevor ich mir aber den Aufwand mache, Anleitungen dafür zu erstellen, muss ein klein wenig Marktforschung sein. Mit andren Worten: besteht an so etwas überhaupt Interesse?

 
Eigenschaft
 
  • Gefällt mir
Reaktionen: 1 Benutzer
Au Backe !!!
hätte ich diesen Post doch nur schon früher gesehen!!
Bist du noch an diesem Projekt dran?
Also im grundegenommen bin ich auf der suche nach einem DMX Patch auf Atmel Basis.
Und dein Projekt enthält ja sowas!
Also ich wäre auf jedenfall mal interessiert!!

Gruß aus dem Saarland
 
Also im grundegenommen bin ich auf der suche nach einem DMX Patch auf Atmel Basis.
Magst du das mal genauer beschreiben? Woran hapert es denn, dass einfach selbst zu entwickeln?

LG :)
 
Hallo JW,
das scheitert daran dass ich weder C# noch Assemblerprogramme schreiben kann.
Platinen löten, Hardware basteln und Programme auf Controller schiessen kann ich.
D.h. nicht dass ich hier auf was fix und fertiges hoffe, aber vielleicht Programmschnipsel die ich verstehen lernen kann und vielleicht dann auch erweitern oder verändern kann.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
SB,
blockweises verschieben von dmx adressen ist nicht das was ich benötige.
Mein Patch sollte folgende Bedingungen erfüllen:
- ein Universum reicht aus (512 Kanäle also)
- Dmx In und Dmx out
- jeder Dmx Eingang kann einem ( oder mehreren) beliebigem Dmx Ausgang zugewiesen werden
- ein frei wählbarer dmx eingang soll prozentual mehrere andere dmx ausgänge in ihren werten verändern können (soll ein virtueller dimmer für rgb led geräte werden die keinen dimmerkanal haben)
- es muss keine hardware für einstellungen und anzeigen dran sein ( zuordung bestenfalls per pc einstellbar, es reicht aber auch das ganze per code für den atmel fest zu programmieren)
- muss KEIN ArtNet können
- soll eine kleine hardware box werden

Mehr braucht es nicht
 
Wenn Du damit farbtreues Dimmen erreichen willst, dann könnte das deutlich komplexer werden, als einfach nur die RGB-Kanäle um x % in Verhältnis zum Dimmerkanal anzupassen.
 
Wenn Du damit farbtreues Dimmen erreichen willst, dann könnte das deutlich komplexer werden, als einfach nur die RGB-Kanäle um x % in Verhältnis zum Dimmerkanal anzupassen.
Das Stimmt, allerdings können das die meisten Geräte mit einem solchen Dimmerkanal das auch nicht besser :rolleyes:

Was du beschreibst baue ich in ähnlicher Weise gerade. Allerdings baue ich schon recht lange. Hardware ist auch dran, und es lässt sich auch als einfaches Pult (später vielleicht Interface) mit Szenenspeicher verwenden.
Kann dir da aber keine Hoffnung machen, dass ich das in kurzer Zeit fertig habe.

@just-lights: Falls du lernen möchtest:
C# hilft dir gar nichts, schau mal hier: http://www.amazon.de/Grundkurs-C-Programmierung-verständlich-erklärt-Computing/dp/3836215462/ (auch beim Buchhändler in deiner Stadt erhältlich!!) ;)
Und hier: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

LG :)
 
Realistisch betrachtet kann man so ein Projekt ohne Erfahrung in Programmiersprachen vergessen. Ich arbeite bis heute an dem Merger, weil die Kernfeatures zwar funktionieren, aber eine PC-Anbindung wesentlich schwerer ist als gedacht. Der ATmega ist vom Tempo her ausgereizt, statt einem Raspberry Pi wird es jetzt wahrscheinlich irgendein ATXmega.
 
Das mit den Virtuellen Dimmerkanälen ist mir schon klar dass das so nicht funktioniert mit Farbtreue, wäre auch nur ein Kompromiss gewesen, aber das brauche ich auch jetzt nicht mehr.

Übrig bleibt ein Patch, mit dem ich nur 4 Kanäle umpatchen muss, also z.B. DMX-IN Kanal 4 >> auf >> DMX-OUT Kanal 8, und das halt für 4 Kanäle.
mehr brauche ich eigentlich nicht.
 
O Gott, Chemnitz & Time .... J.K.G.? Gibts die Frau Sturm/Storm noch?

Ich arbeite bis heute an dem Merger, weil die Kernfeatures zwar funktionieren, aber eine PC-Anbindung wesentlich schwerer ist als gedacht. Der ATmega ist vom Tempo her ausgereizt, statt einem Raspberry Pi wird es jetzt wahrscheinlich irgendein ATXmega.

Die Himberre ist für sowas eindeutig zu "dick", darauf per Software ne 100% timinggenaue DMXausgabe zu bekommen, sollte ein... sagen wir "interessantes problem" mit sehr kreativen Fehlern werden.


Auf welcher Taktrate fährst du den AVR momentan?
Soll ArtNet ran?
Soll der AVR eh neu gemacht werden, empfehle ich n fertiges Board ala Arduino Duo (84mhz, usb on board etc) oder ähnliches.. man muss die leiterplatte um den µController ja nicht jedes mal neu erfinden ;-)

grüße von jemanden, der das JKG verlassen hat, als du grob eingeschult wurdest ;-)
 
Mo7n,

Interessanter Thread

Gab es da noch Fortschritte?
 

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben