Vorstellung: Neues DMX-Interface mit 4 ICs, USB-Anschluss und 1000V galvanischer Trennung

  • Hallo,


    wer nach einem sehr günstigen DMX-Interface mit wenig Lötaufwand, keinen SMD-Bauteilen und USB-Anschluss sucht, der kann das Projekt uDMX verwenden. Leider sieht der Schaltplan keine galvanische Trennung vor und man kann nur ein Interface gleichzeitig am Rechner betreiben.

    Da immer wieder die Frage nach so einem einfachen Interface auftaucht, bin ich diese Probleme angegangen und habe die Firmware und den Schaltplan entsprechend angepasst, sodass man nun eine galvanische Trennung hat und auch mehrere Interfaces am Rechner parallel laufen lassen kann.

    Im Anhang ist der Schaltplan. Firmware und Treiber kann man auf meiner Seite herunterladen (DMX-Interfaceseite). Ein Plugin für DMXC ist geplant und wird in der nächsten Zeit fertig werden.

    Das Ganze verwendet große Teile des uDMX Projektes, der USB-Teil stammt von https://forum.dmxcontrol-projects.org/www.obdev.at und die galvanische Trennung nebst DMX-Ausgabe stammt vom DE-Interface (sozusagen ein Bestof :) )


    Das Interface hängt zwar am USB-Anschluss, aber scheinbar kann der Software-USB-Node des ATmega8 nicht die volle Geschwindigkeit nutzen. Somit kann man nur ca. 256 Kanäle mit der vollen Geschwindigkeit gleichzeitig aktualisieren. Möchte man alle 512 Kanäle faden, ruckelt es, da die Daten nicht schnell genug zur Hardware kommen.
    Dennoch ist das Interface unschlagbar, da kaum Bauteile verwendet werden. Für "normale" Anwendungen genügt diese Schaltung also allemal.


    einen schönen Abend noch,
    Christian :)

    Edit: Schaltplan für 3,6V aufgrund USB-Kommunikation angepasst.

  • Wirklich sehr easy, was die Bauteile und den Plan angeht.
    Werde ich interesse halber mal ein kleines Layout für basteln und aufbauen.

    Ingo

  • Hi Ingo,

    das Plugin für DMXControl macht mir noch ein paar Probleme, aber das liegt nur wieder an der Inkompatibilität von Delphi als Programmiersprache für DMXC Plugins. Leider kann ich in VB6 den USB-Treiber noch nicht direkt ansprechen.

    Ich programmiere heute mal weiter - wird schon irgendwie klappen.


    schöne Grüße,
    Christian :)

    Edit: Leider schaffe ich es nicht, unter VB6 den USB-Treiber anzusprechen. Daher habe ich meinen Pluginloader auf den neuesten Stand gebracht. Damit kann man alle PC_DIMMER Plugins ganz einfach laden. Das Interface wird bei mir sofort erkannt und die Ausgabe funktioniert einwandfrei.

    Im Pluginloader (neueste Version siehe Anhang) muss die Sendemethode 2 eingestellt werden.

  • Hallo,
    die Idee ein Interface so in der Art zu bauen hatte ich auch schon mal.
    Habe es nur aus Zeitgründen wieder verworfen.
    Außerdem habe ich zwei von DE und brauchte somit kein weiteres.

    Was ich noch vermisse ist der DMX in Bereich, der Prozessor hat dafür doch noch genug Speicher.
    Was ich auch noch gut finden würde ist eine RDM fähigkeit.

    Gibt es eigentlich ein Selbstbau Art-Net DMX Interface?


    Also das Interface macht einen guten Eindruck und wird mit Sicherheit vielen Anwendern Spaß bereiten!
    VG, Dirk

  • Ich warte mit meiner Begeisterung noch, bis sich der Obdev-Code und die Schaltung als zuverlässig erwiesen haben.

    Soweit ich weiß, hätte USB gern 3.3V auf den Datenleitungen (jedenfalls haben alle Wandler entsprechende Spannungsregler integriert).
    Die Übertragungsrate ist zudem auf Grund der Dekodierung in SW nicht berauschend.

    Momentan hätte ich deswegen weniger Vertrauen in diese Lösung in diese Lösung als in das DE-IF... Ich bin gespannt, da es die USB-AVRs nur in SMD gibt.

    RDM geht auf Grund der jetzigen galv. Trennung nicht. Da müssten dann noch zwei weitere OK dran. Das könnte man aber gleich geschickt mit DMX-In kombinieren:
    Wird eine Antwort erwartet, wird der Eingangswandler von der Eingangsbuchse auf die Ausgangsbuchse umgeswitcht. Trivialer Weise bestünde dann der mehraufwand in einem Relais...

    Zu ArtNet:
    Ich habe hier das entsprechende Pollin-Board mit ENC rumfliegen und wollte irgendwann mit Ulrich Radigs UDP-Stack ein RDM-IF bauen. Mir fehlt allerdings die Zeit. Und ich hätte auch keine Lust, dies zu supporten...

    VG,
    Hendrik

  • Dann erklär ich mal, warum auch bei perfekter Software die Datenrate niemals wirklich für ein komplettes DMX Universe ausreichen kann:

    Das AVR-USB Projekt auf obdev.at implementiert lediglich ein Low Speed USB Device welches anstatt mit 12 MBit/s mit 1.5 MBit/s arbeitet. Geht ja auch gar nicht anders, denn wie soll ein mit 12 MHz getakteter AVR ein 12 MBit Signal verarbeiten und das noch mit normalen IO Pins.
    Ansich hören sich jetzt 1.5 MBit/s immernoch ausreichend für DMX an, allerdings gehen mit einem Low Speed USB Device noch ein paar andere Einschränkungen daher. Und zwar sind ausschliesslich Interrupttransfers mit einem minimalen Abstand von 1 ms erlaubt und bei jedem Transfer können pro Endpoint max. 8 Byte übertragen werden (bei Fullspeed Devices sind das 64 Byte weshalb das DE Interface dieses Problem nicht hat). Macht in Summe also 8000 Byte/s, ein 512 Byte DMX Universe mit 25 fps benötigt aber 12800 Byte/s. Und das sind nur die reinen Datenraten, ohne Protokolloverhead.
    Als kleiner Sender für wenige Kanäle also durchaus brauchbar, die vollen 512 Kanäle allerdings niemals in der Art machbar.
    Weiterhin ist mir aufgefallen, dass die Jungs von obdev.at den AVR bei 3.3V betreiben, da (wie Henne auch schon erwähnt hat) die USB Datenleitungen eigentlich auf 3.3V laufen, lediglich die Powerleitung führt 5V. Bei 5V empfiehlt die Webseite "If you need to run the AVR at 5 V, add 3.6 V zener diodes at D+ and D- to limit the voltage." (http://www.obdev.at/products/avrusb/index-de.html) Ich wär da ehrlich gesagt auchn bischen Vorsichtig, so nen Chipsatz in nem PC ersetzt man nicht mal eben in ner halben Stunde ;) Oder halt nur nur mit zwischengeschaltetem Hub verwenden.

  • Hallo,


    der Einwand mit den 3,3V ist berechtigt. Werde den Schaltplan entsprechend anpassen (Dioden zur Spannungsbegrenzung).

    Das Interface erhebt keinen Anspruch, konkurrenzfähig zum DE-Interface zu sein. Ich nutze ja auch für meine Shows ausschließlich das DE-Interface. Es soll vielmehr für die Leute sein, die DMX für ein paar Partys nutzen wollen, aber kein SMD löten können/wollen.

    Ich habe die Kommunikation zwischen PC und Hardware so weit angepasst, dass man auch alle 512 Kanäle entsprechend ruckelfrei Übertragen kann: werden wenige Kanäle pro Zeiteinheit geändert, werden auch nur einzelne Kanäle mit höherer Geschwindigkeit zum Interface gesendet. Werden jedoch mehrere Kanäle pro Zeiteinheit geändert, wird das komplette Universe als Block (USB sendet Daten ja Blockweise, wodurch der Datendurchsatz erhöht wird) mit einer etwas verlangsamten (50-75ms) Refreshrate zum Interface geschickt (alles im Plugin änderbar). Ich habe ein DE-Interface als Eingang mit DMXControl und dieses Interface hier mit meiner Software laufen gelassen und konnte sehr zügig die Kanaländerungen ohne Ruckeln übertragen.

    Für Dimmerpacks und LED-Scheinwerfer reicht das allemal. Für schnelle Scannerfahrten und vor allem MHs wird es bei hoher Auslastung des Universe sicher problematisch - aber dann hat man sicher schon genug Erfahrung, um sich ein DE-Interface zuzulegen ;)

    Das Interface läuft auf jedenfall Besser als manches RS232-Interface und da fast alle neuen PCs keinen RS232-Anschluss mehr haben, hat dieses Interface hier sicher seine Berechtigung :)

    @Kani
    Die Bauteilkosten belaufen sich auf rund 10 Euro, wobei der DC-DC-Spannungswandler mit seinen 5,80€ das teuerste Bauteil ist:

    Atmel ATmega8 Mikroprozessor (1,25 €)
    6N137 Optokoppler (0,50 €)
    SN75176 DMX-Treiber (0,30 €)
    SIM2 0505S SIL7 DC/DC-Wandler (5,80 €)
    Widerstände, Kondensatoren, Dioden (~2,- bis 3,- €)
    =============================
    ~ 10 Euro


    Alle Bauteile sind bei https://forum.dmxcontrol-projects.org/www.reichelt.de verfügbar.

    bis dann,
    Christian :)


    Edit: dirk_e:
    DMX-In wird etwas problematisch, da der SRAM des ATmega8 nur 1kB beträgt. 512 Byte werden ja schon für das kontinuierliche Senden des DMX-Universe verwendet. Teile des Restes für den USB-Teil. Ich habe keine 512 Byte mehr frei für das DMX-In. Warum ich das DMX-In Universe nochmal im RAM speichern will? Ich muss ja irgendwie erkennen, welche Kanäle sich verändern, um nicht ununterbrochen das komplette Universe zum PC zu schicken, da die USB Geschwindigkeit ja wie oben angemerkt nicht die volle Kapazität besitzt. Also brauche ich die Kanalwerte des letzten Universe, um sie mit den Werten des neu eintreffenden zu vergleichen. Sind sie ungleich, werden die entsprechenden Kanäle zum Rechner geschickt und auch wieder im RAM abgelegt. Ich muss auf jedenfall mehr RAM haben - da allerdings erst der ATmega32 2kB RAM besitzt, wäre das eigentlich Verschwendung von Hardwareressourcen, da der ATmega32 40 Pins hätte, von denen nur rund 10 Pins benötigt werden.
    Ich werde mich also erstmal mit dem Anbinden von externem RAM beschäftigen. Allerdings wird dadurch die Hardware natürlich wieder komplexer. Das muss ich mir erstmal durch den Kopf gehen lassen - jetzt kommt aber erstmal die Prorgammierung von "Lumos" an die Reihe.

    Mein aktuelles Video auf Youtube: Movingheads ohne Kopfschmerzen!

    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Edited 2 times, last by Blackout-Chris (October 14, 2008 at 12:13 PM).

  • Du könntest versuchen die Datenübertragung per USB mit der Ausgabe der DMX Frames zu syncronisieren (falls nicht sowiso schon passiert), dann könnten eventuell unnötige Übertragungen eingespart werden.

  • ich finde das Projekt super :)
    endlich mal eine einfache USB Alternative

    Blackout-Chris: ist es vom Aufwand her nicht wesentlich einfacher einfacher einen Atmel Controller mit mehr RAM zu nehmen, als ein externes IC einzubinden, außerdem wirken sich weniger Bauteile auch positv auf das Layout aus.

    Was vllt noch ganz nett wäre ist trotzdem eine SMD-Varinate. Allzu schwer zu löten sind die Teile nicht und würde nicht nur PLatz auf der Platine sparen, sondern auch Geld. Bedrahtete Bauteile sind etwas teurer

    Und jetzt noch eine ganz andere Idee: Wäre es auch möglich nur einen FT232 Chip zu nehmen? Die Datenrate lässt sich auf 1Mbit/s einstellen, also genau das 4-fache der DMX-Rate und über einen speziellen Modus im Treiber, lassen sich Dateien "verschicken", man müsste dann nur herausfinden mit welchen Zeichen man welchen Ouput gernerieren kann. RX wäre dann auch gleich mit dabei und das Bauteil braucht nicht ein mal einen Quarz. Problematisch ist nur, dass sich das SMD-Package schwer löten lässt

    Gruß
    Markus

  • Hallo mar3kus,


    ich will doch gerade ein Interface, welches man auch auf einer Lochrasterplatine aufbauen kann :). Allerdings gibt es alle 4 ICs auch als SMD-Variante, sodass da einem nichts im Wege steht dieses Interface mit SMD aufzubauen - ist doch bloß der Schaltplan *g*. Ein Layout ist doch dann schnell angefertigt, bei den paar Verbindungen.

    Warum sollte ich einen FT232-Chip verwenden, wo ich doch aktuell bereits mit dem Software-USB-Node die 1,5MBit verwenden kann? Wäre doch nur wieder ein Chip mehr auf der Schaltung.

    Das Originalprojekt "uDMX" bietet sogar eine Bootloader-Variante an, bei der man Firmwareupdates über den USB-Port auf das Interface uploaden kann. Wer daran Interesse hat, sollte sich das Originalprojekt genauer anschauen. Obdev.at hat auch noch viele andere Interessante Projekte am Start.


    bis dann,
    Christian :)

    Mein aktuelles Video auf Youtube: Movingheads ohne Kopfschmerzen!

    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

  • Hallo Zusammen

    Dieses Interface ist wirklich einfach.

    Ich habe mal eine Frage:
    Wie muss ich die Fuse-Bits in Ponyprog setzen, damit der Controller richtig funktioniert?
    Ich kenne mich damit nicht so richtig aus.

    Freundliche Grüße
    Dmxfreak

  • Hallo,

    Ich bin ein Technik interessierter Gymnasium Schüler und würde gerne für meine Schule dieses Interface nachbauen, allerdings habe ich keine Erfahrung im Programmieren von Atmels ich würde so etwas gerne lernen jedoch fehlt mir im Moment die Zeit da ich auch dieses Jahr die Zentralen Klassenarbeiten schreiben muss und meine Lehrer mir keine Zeit für andere Dinge lassen. Das interface ist gerade wegen des Preises für mich interessant. Die paar Bauteile denke ich werde ich selber löten können, nur das programmieren des Atmels wird für mich problematisch!
    Gibt es da jemamand der das für mich machen würde möglichst nahe am einkaufspreis des atmels.
    ich freue mich über jede antwort Dominik@hidonline.de

    mit freundlichen Grüßen dominik

  • ...so nachdem ich noch zwei kleine Fehler im Schaltplan behoben habe, geht das Interface endlich.

    Leider funktionieren die PlugIns für das uDMX Interface weder in PCDimmer noch in DMXC.
    Ich mach mich mal an eine neue Ausgabe dll.

    Konnte das Interface bis jetzt nur mit dem Demo-Programm erfolgreich testen.

  • Hi mar3kus,


    hast du jetzt das Original uDMX-Interface, oder das von mir Modifizierte aufgebaut? Ich habe bei meinem Modifizierten eine Seriennummernfunktion eingebaut und den Erkennungsstring und ein paar andere Kleinigkeiten abgeändert. Somit sind uDMX und mein Interface nicht mehr kompatibel.

    Bitte darauf achten, welche Ausgabeplugins man dann verwendet. Sowohl das Original uDMX, wie auch Meines funktionieren im PC_DIMMER und in DMXC problemlos...


    bis dann und gute Nacht,
    Christian :)

    Mein aktuelles Video auf Youtube: Movingheads ohne Kopfschmerzen!

    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

  • wie angekündigt habe ich ein eigenes Output PlugIn programmiert. Bei mir funktioniert die Kommunikation über DMX mit dem uDMX Interface nun einwandfrei.

    Wäre super, wenn es vllt noch jemand testen könnte.

    Folgendes zur Funktionsweise:
    Sobald das PlugIn aktiviert wird, kommt eine Verbindung mit dem zu erst gefundenen uDMX Interface zu Stande.
    Falls mehrerer solcher Interfaces mit dem PC verbunden sein sollten, kann man über die Einstellungen des PlugIn's die Geräte auswählen, zu welchen eine Verbindung hergestellt werden soll. Es funktionieren auch beliebig viele gleichzeitig.

    Dateien einfach in das Root Verzeichnis von DMXC extrahieren

    Gruß
    Markus

  • Hallo mar3kus,


    vielen Dank für das DMXC-Plugin. Ich hatte ebenfalls versucht mein bereits begonnenes DMXC-Plugin zum Laufen zu bringen, aber ich hatte einige Probleme (auch wenn die pcd_dmx512.dll sehr viel Arbeit abnimmt). VB6 ist einfach nicht meine Welt :)

    Wir sollten nur aufpassen, uDMX und mein verändertes uDMX Interface nicht durcheinander zu bringen. Dadurch, dass man mehrere Interfaces an einen Rechner anschließen kann ist meine Firmware nicht mehr kompatibel zum Originalen uDMX-Projekt.


    einen schönen Tag noch,
    Christian :)

    Mein aktuelles Video auf Youtube: Movingheads ohne Kopfschmerzen!

    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

  • wenn man das PlugIn in DMXC lädt, steht PCDIMMER dahinter, auch die dll hat diesen Zusatz im Namen, deswegen sollte es ziemlich eindeutig sein...

    VB6...ja auch nicht mein Fall, deswegen ist das PlugIn auch in Delphi geschrieben. Habe einfach die Demo Struktur genommen und angepasst.

    Vllt könnte man der dll, also der pcd_dmx512.dll noch einen etwas eindeutigeren Namen geben, irgendwas wie udmx_pcd...
    Würde die Sache etwas überschaubarer machen.

    Markus

  • Newly created posts will remain inaccessible for others until approved by a moderator. The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.