kaf
Registrierter Benutzer
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"
Die Hardware von innen
Keine Panik
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). Ü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
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....), 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
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?
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"
Die Hardware von innen
Keine Panik
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). Ü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
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....), 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
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