Hallo,
so langsam bin ich total am verzweifeln.
Ich habe leider vor ein paar Wochen ein Projekt gestartet, bei dem ich
DMX mit dem Arduino und der Conceptinetics libary auswerten möchte.
Jetzt habe ich das ganze mal aufgebaut. Leider funktionierts nicht
richtig.
Wenn ich am Mischpult einen Kanal hochziehe erkennt der Arduino es noch
richtig und schaltet den endsprechenden Ausgang.
Leider erkennt er es nicht wenn ich einen Kanal wieder runterziehe, der
Ausgang bleibt immer gesetzt, auch ein Reset hat keine Wirkung. Ich muss
die ganze Schaltung von der Stromversorgung trennen, dann ist der
ausgang wieder auf 0V und das ganze Spiel geht von vorne los.
Im Anhang findet ihr meine Auswertung fürs DMX.
PIN1 ->RXD
PIN2/3-> PIN2 von Arduino
PIN4 -> TXD
PIN6 -> DMX
PIN7 -> DMX
Ich hoffe ihr habt ne Idee, ich drehe hier grad echt am Rad, weil das
ding die ganze zeit zicken macht.
max2d schrieb:> Ich hoffe ihr habt ne Idee
Das könnte ein Softwarefehler auf dem Arduino sein. In der
Conceptinetics Library hätte das wohl schon jemand anders bemerkt.
Vielen Dank für deine Antwort.
Kann ich irgendwie nicht glauben, da das ganze früher schonmal
funktioniert hat.
Kann es sein, dass ich evtl. EMV Probleme habe?
@ max2d (Gast)
>Wenn ich am Mischpult einen Kanal hochziehe erkennt der Arduino es noch>richtig und schaltet den endsprechenden Ausgang.
Was heißt das? Wird der Ausgang nur ein/aus geschaltet oder echt
gedimmt?
>Leider erkennt er es nicht wenn ich einen Kanal wieder runterziehe, der>Ausgang bleibt immer gesetzt, auch ein Reset hat keine Wirkung. Ich muss>die ganze Schaltung von der Stromversorgung trennen, dann ist der>ausgang wieder auf 0V und das ganze Spiel geht von vorne los.
Klingt nach einem Softwareproblem oder falscher Baudrate.
>Ich hoffe ihr habt ne Idee, ich drehe hier grad echt am Rad, weil das>ding die ganze zeit zicken macht.
Poste deinen Quelltext als Anhang.
max2d schrieb:> Kann ich irgendwie nicht glauben, da das ganze früher schonmal> funktioniert hat.
Wenn das Ganze schon mal funktioniert hat, hast du denn seit dem was am
Code geändert?
Was?
Hängt da noch ein 2tes Pult dran über einen Merger?
LTP / HTP überprüfen ...
es ist nur ein Lichtmischpult angeschlossen.
Ich habe eigendlich nichts am Programm verändert.
Sry, hier der Code nochmal als ANHANG :-)
Ich glaube echt, dass es ein Hardware Problem ist.
Liege ich mit der Vermutung richtig, dass ich eigendlich, da ich nur
empfangen will RE und DE vom MAX dauerhaft auf GND legen kann?
max2d schrieb:> Sry, hier der Code nochmal als ANHANG :-)
Wenn das ein Arduino-Sketch ist, darfst du ihn gern .ino nennen, weil
der Filetyp üblicherweise so gekennzeichnet wird ;-)
> Ich glaube echt, dass es ein Hardware Problem ist.
Was verwendest du als Stromversorgung?
Zwischen Empfang über die serielle Schnittstelle und digitaler Anzeige
über die Statusanzeige kann eigentlich kaum ein anderer Hardwarefehler
als eine kaputte Stromversorgung dazwischenkommen.
ja, ist ein Arduino Sketch.
Momentan verwende ich mein Labornetzteil. Später soll ein Schaltnetzteil
die Spannungsversorgung übernehmen.
Über DMX hat man doch ziemlich hohe Datenraten, wäre es da nicht sinvoll
was gegen Störungen zu unternehmen. Vielleicht habe ich ja nur so ein
Problem. Also ich meine Verdrillte Leitungen iwelche Kondensatoren...
max2d schrieb:> Vielleicht habe ich ja nur so ein> Problem. Also ich meine Verdrillte Leitungen iwelche Kondensatoren...
Falls dem so sei, wird dir ohne einen Schaltplan niemand hier helfen
können.
max2d schrieb:> Wenn ich am Mischpult einen Kanal hochziehe erkennt der Arduino es noch> richtig und schaltet den endsprechenden Ausgang.
Dann lass dir doch mal Anzeigen, was der Arduino vom DMX-Bus empfängt
(ohne deine Programmlogik).
max2d schrieb:> Über DMX hat man doch ziemlich hohe Datenraten, wäre es da nicht sinvoll> was gegen Störungen zu unternehmen.
Einen vernünftigen Abschluss hast du am Bus dran?
Im Anhang das Schaltbild.
Mike schrieb:>> Dann lass dir doch mal Anzeigen, was der Arduino vom DMX-Bus empfängt> (ohne deine Programmlogik).>
Also Oszi an RXD/TXD und vom Mischpult irgendwas senden?
>> Einen vernünftigen Abschluss hast du am Bus dran?
Macht keinen großen unterschied. Funktioniert ohne und mit nicht.
R1 hat bei mir 120 Ohm
Logischerweise habe ich direkt am MAX noch einen 100nF Kondensator.
max2d schrieb:> Also Oszi an RXD/TXD und vom Mischpult irgendwas senden?
Ja wenn du ein Oszu hast, dann ist Signale angucken natürlich der erste
Schritt. Trigger auf die Reset-Pause vom DMX und dann guck an, ob das
vernünftige Pulse mit passender Länge sind. Und hinterm LTC485, i.e. RX
vom Arduino kannst du dann auch gleich noch mal einen Blick aufs Timing
werfen.
ok, werde ich mal probieren wenn ich wieder daheim bin.
Könnt ihr mir noch Tipps zur verbindung von DMX Buchse zum MAX und vom
MAX zum Arduino geben?
Also welche Kable, abgeschirmt verdrillt...?
:D ich werds versuchen.
Könnt ihr mir noch sagen welchen PIN ich vom MAX mit welchem DMX PIN
verbinden muss?
Im Internet habe ich gefunden, dass pin 2 DMX- und pin3 DMX+ ist.
Muss jetzt pin2 auf A oder auf B vom MAX?
es gibt neueigkeiten.
scheint doch an der Software zu liegen.
Sobald ich meine DMX addressierung abschalte funktioniert die Erkennung
über DMX!
Wenn ich die DMX addressierung wieder mit auf den Arduino programmiere,
kann ich den Ausgang nichtmehr abschalten.
Ich habe aber keine Ahnung warum.
Im Anhang nochmals mein Programm
@ max2d (Gast)
>Sobald ich meine DMX addressierung abschalte funktioniert die Erkennung>über DMX!
Nun ja. Prinzipiell sollte das schon funktionieren. Wenn aber deine
Eingänge zur DMX-Adressierung zappeln und dauernd eine andere
DMX-Adresse erkannt wird, könnte da was in Stottern kommen. Liegen alle
Eingänge IMMER auf einem definierten Potential? Interne oder externe
Pull-Ups?
Und gibt es keine NOCH umständlichere Methode, um einfach 9 Bit
einzulesen?
Und warum ist der alte Zustand wichtig?
Vor allem diese sinnlose Addieren Subtrahieren kann beim Umschalten
schön daneben gehen. Mach es wenigsten dort sinnvoll und sicher!
>Liegen alle> Eingänge IMMER auf einem definierten Potential? Interne oder externe> Pull-Ups?
Habe externe Pulldown Widerstände verbaut. Und mit dem Oszi gemessen,
alle Eingänge liegen je nach Schalterstellung definiert auf +5V oder auf
GND.
> Und gibt es keine NOCH umständlichere Methode, um einfach 9 Bit> einzulesen?> Und warum ist der alte Zustand wichtig?
Sorry, aber ich bin nicht so ganz der Programmierchecker.
Über den Alten Zustand kann ich erkennen, ob ich dazu zählen muss oder
abziehen.
Habe gerade mal deine DMX addressierung genommen, funktioniert leider
auch nicht wirklich.
Momentan ist die DMX Adressierung allerdings nicht mein größtes Problem.
Ich habe gestern mal meine Schaltung ne weile laufen lassen, und musste
leider feststellen dass manche Lampen ohne dass ich diese ansteuer
unkontrolliert an/aus gehen.
Woran könnte das liegen?
DMX Adressierung funktioniert mittlerweile fast.
Solange ich S9 auskommentiert. Da muss ich nochmal hardware mäßig glaub
drüber schauen.
Ich habe gerade per zufall bemerkt, dass die Ausgänge unkontrolliert
schalten, sobald ich mit einer Hand am offenen geäuse bin, und mit
meinem Stuhl über den Teppich rolle, vermute mal das meine Schaltung
noch nicht so wirklich emv tauglich ist.
Soll ich vielleicht, wie es bei anderen Schaltungen zu sehen ist von der
DMX Buxe zur Versorgungsspannung und zum GND auch einen Widerstand
schalten, so wie im Anhang gezeigt?
@max2d (Gast)
>Sorry, aber ich bin nicht so ganz der Programmierchecker.
Merkt man.
>Über den Alten Zustand kann ich erkennen, ob ich dazu zählen muss oder>abziehen.
Eben das ist ein Irrtum.
>Habe gerade mal deine DMX addressierung genommen, funktioniert leider>auch nicht wirklich.
Was heißt das konkret?
Wie sind die Pins beschaltet?
Ist es heute nicht mehr üblich, auf die Fragen eines Gesprächspartners
einzugehen?
>Momentan ist die DMX Adressierung allerdings nicht mein größtes Problem.
Scheinbar daoch, denn mit einer festen Adresse lief es ja, oder?
>Ich habe gestern mal meine Schaltung ne weile laufen lassen, und musste>leider feststellen dass manche Lampen ohne dass ich diese ansteuer>unkontrolliert an/aus gehen.>Woran könnte das liegen?
An deinem Aufbau? Wackelkontakte?
@max2d (Gast)
>DMX Adressierung funktioniert mittlerweile fast.
Mit welcher Funktion? Deine oder meine?
>Solange ich S9 auskommentiert. Da muss ich nochmal hardware mäßig glaub>drüber schauen.>Ich habe gerade per zufall bemerkt, dass die Ausgänge unkontrolliert>schalten, sobald ich mit einer Hand am offenen geäuse bin, und mit>meinem Stuhl über den Teppich rolle, vermute mal das meine Schaltung>noch nicht so wirklich emv tauglich ist.
Sieht so aus. Ich tippe mal auf offene Eingänge, die reagieren auf
kleinste elektrostatische Felder.
JEDER EIngang muss auf einem definierten Potential liegen! Entweder per
Pull-Up/Down oder direkter Verbindung zu GND oder VCC.
>Soll ich vielleicht, wie es bei anderen Schaltungen zu sehen ist von der>DMX Buxe zur Versorgungsspannung und zum GND auch einen Widerstand>schalten, so wie im Anhang gezeigt?
Nein, das braucht man nicht. Der Master auf dem DMX-Bus treibt diese
dauerhaft.
@ Marco (Gast)
>(S9), müsste da nicht eher wie folgt heissen...>if (digitalRead(S9) == HIGH) dmx_adr_local += 256;
uups, kleiner Fehler ;-)
Kommt davon, wenn man immer über DMX512 redet.
Ist mir mittlerweile auch aufgefallen.
Lag aber nicht daren, hatte irgendwie bei Switch9 eine hochohmige
Verbindung zu nem Ausgang vom Arduino -> neu gelötet und jetzt
funktionierts auch mit dem S9.
Nur leider habe ich immernoch das Problem mit der EMV.
Vielleicht muss ich dazu sagen, dass ich die Schaltung momentan im
offenen 19" case verbaut habe, und die Stromversorgung momentan über den
PC (USB an Arduino) laufen hab. Wenn ich die Masse vom Arduino mit dem
Gehäuse verbinde bilde ich mir ein den effekt mit meinem Stuhl und
teppich nichtmehr zu haben.
Legt sich dieses Problem evtl. wenn ich später mein Schaltnetzteil ins
Gehäuse einbaue und dieses dann auch erde?
@ max2d (Gast)
>Vielleicht muss ich dazu sagen, dass ich die Schaltung momentan im>offenen 19" case verbaut habe,
Das ist kein Problemn, die Schaltung sollte definitiv nicht dermassen
empfindlcih sein.
> und die Stromversorgung momentan über den>PC (USB an Arduino) laufen hab.
Das ist OK.
> Wenn ich die Masse vom Arduino mit dem>Gehäuse verbinde bilde ich mir ein den effekt mit meinem Stuhl und>teppich nichtmehr zu haben.
Hmm.
>Legt sich dieses Problem evtl. wenn ich später mein Schaltnetzteil ins>Gehäuse einbaue und dieses dann auch erde?
Das Problem ist immer noch da, nur etwas besser versteckt.
Kann es evtl. daran liegen, dass ich für die DMX Leitung zum MAX und vom
MAX zum Arduino kein abgeschirmtes Kabel genommen hab?
Im Anhang noch die Beschaltung meiner Eingänge. Muss ich bei den PINs
vom MAX auch Pulldown/Pullup Widerstände verbauen? Also beim RxD TxD und
dem PIN2?
@ max2d (Gast)
>Kann es evtl. daran liegen, dass ich für die DMX Leitung zum MAX und vom>MAX zum Arduino kein abgeschirmtes Kabel genommen hab?
Nein.
>Im Anhang noch die Beschaltung meiner Eingänge. Muss ich bei den PINs>vom MAX auch Pulldown/Pullup Widerstände verbauen? Also beim RxD TxD und>dem PIN2?
Nein.
Hier nochmals ein schärferes Bild.
Es ist ja nur ein mehr oder weniger provisorischer Aufbau.
Kalte Lötstellen und Wackelkontakte glaub ich eher weniger dass die was
mit EMV zu tun haben oder?!
habe gerade mal das Stromkabel meiner Bohrmaschine ins gehäuse gelegt,
ohne die Bohrmaschine laufen zu lassen, aber in eingestecktem Zustand.
Die Kanäle machen sich total selbstständig! Sobald ich den GND mit dem
Gehäuse verbinde verschwindet der Effekt.
@ max2d (Gast)
>Die Kanäle machen sich total selbstständig! Sobald ich den GND mit dem>Gehäuse verbinde verschwindet der Effekt.
Welche Kanäle meinst du denn? Die 8 LEDs?
ja, meine die LEDs, somit würden auch die Funkempfänger flackern.
Ich vermute mittlerweile dass das Magnetfeld der Bohrmaschine sich auf
meiner DMX Leitung im gerät einkoppelt
@ max2d (Gast)
>Ich vermute mittlerweile dass das Magnetfeld der Bohrmaschine sich auf>meiner DMX Leitung im gerät einkoppelt
Wenn die Bohrmaschine nicht läuft, fließt keine Strom, also gibt es auch
kein Magnetfeld. Bestenfalls ein elektrisches Feld.
Das ganze klingt nach einem Masseproblem. Aber wenn deine Schaltung über
USB am PC hängt, ist sie doch geerdet, denn der PC ist auch geerdet.
Komisch.
Also ich habe jetzt mal die DMX adressierung auskommentiert und eine
feste Adresse im Programm eingestellt.
Leider ohne Erfolg, immernoch der gleiche Effekt.
Zur Bohrmaschine, es entsteht trotzdem ein elektrisches Feld, auch wenn
diese nicht läuft.
@ max2d (Gast)
>Leider ohne Erfolg, immernoch der gleiche Effekt.
Dann muss man weiter suchen.
>Zur Bohrmaschine, es entsteht trotzdem ein elektrisches Feld, auch wenn>diese nicht läuft.
Fehlt da ein Fragezeichen?
Ja, das elektrische Feld kommt vom Anschlusskabel, denn dort liegt ja
die 50 Hz Wechselspannung an.
hab jetzt mal die leitung von der DMX Buchse zum MAX und vom MAX zum
Arduino durch ein CAT5e Kabel ersetzt, und den Schirm auf Erde gelegt.
Jetzt ist der Effekt nichtmehr so krass.
Wenn ich jetzt aber das Schaltnetzteil zur Spannungsversorgung nehme,
tut sich an den Kanälen nichtsmehr, sie gehen nicht ein, obwohl die
Versorgungsspannungen anliegen.
Hi
>Wenn ich jetzt aber das Schaltnetzteil zur Spannungsversorgung nehme,>tut sich an den Kanälen nichtsmehr, sie gehen nicht ein, obwohl die>Versorgungsspannungen anliegen.
Falk schrieb:
>Das ganze klingt nach einem Masseproblem.
MfG Spess
@ max2d (Gast)
>Und wie kann ich dieses Masse Problem beheben?
Erstmal musst du es finden. Prüfe ALLE Verbindungen, die mit Masse zu
tun haben, auch auf deinem MAX-Board.
Mit etwas Pech können es auch die Y-Kondensatoren von deinem
Schaltnetzteil sein. Miss mal im AC-Spannungsbereich die Spannung
zwischen der Masse am PC und dem Ausgang deines Schaltnetzteils, wenn es
am Ausgang nicht angeschlossen ist. Wenn man dort um die 120VAC misst,
kann es passieren, dass dein Arduino durch die Leckströme an einem
empfindlichen Pin gestört wird. Abhilfe schafft dann wie bereits gemerkt
ein Erden der Masse am Ausgang des Netzteils.
Falk Brunner schrieb:> Sind denn auch alle Massen verbunden?
Hab es gerade nochmals durchgemessen. Ich hab überall eine
Masseverbindung wo auch eine sein soll.
@ max2d (Gast)
>Hab es gerade nochmals durchgemessen.
Wie?
> Ich hab überall eine>Masseverbindung wo auch eine sein soll.
Das ist OK, kann aber im Einzelfall dennoch ein Fehler sein. Wenn z.B.
Die Masse vom MAX-Board zum Arduino unterbrochen ist, aber über DMX eine
Masse anliegt, dann ist das statisch scheinbar in Ordnung, dynamisch
aber eine Katastrophe! Also klingel ALLE Verbindungen durch, ggf. muss
man DMX und andere Sachen dabei abziehen, um keine falsch positive
Messung zu machen.
Falk Brunner schrieb:> Mit etwas Pech können es auch die Y-Kondensatoren von deinem> Schaltnetzteil sein.
Hab 107V AC gemessen! Wird wohl auch an den Y-Kondensatoren liegen?
Was vielleicht erklärt warum es mit dem Schaltnetzteil nicht
funktioniert.
Aber ich habe ja selbst mit den 5V vom PC Netzteil Störungen drauf.
Falk Brunner schrieb:>>Hab es gerade nochmals durchgemessen.>> Wie?
Ich bin mit einer Messleitung vom Multimeter auf die USB Buchse vom
Arduino gegangen, dann mit der anderen erst auf meine Anzeigeplatine,
dann auf den MAX und dann auf die DMX Buchse an den PIN1. Hab überall
0,3Ohm gemessen, sollte also passen.
@ max2d (Gast)
>Ich bin mit einer Messleitung vom Multimeter auf die USB Buchse vom>Arduino gegangen, dann mit der anderen erst auf meine Anzeigeplatine,>dann auf den MAX und dann auf die DMX Buchse an den PIN1. Hab überall>0,3Ohm gemessen, sollte also passen.
Naja, sieht erstmal OK aus.
@ max2d (Gast)
>Es hat eine PE Klemme, und diese ist natürlich auch mit dem PE>Verbunden.
Dann darfst du aber keine 107vac zwischen PE und der Ausgangsmasse
messen! Da stimmt was nicht!
hm... also ich habe jetzt mal das Schaltnetzteil wieder angeschlossen.
Mittlerweile funktionierts auch mit dem Schaltnetzteil. Nur leider
flackern die lampen abundzu. Also bin ich hergegangen und hab den PE mit
dem Minus vom Schaltnetzteil verbunden. Jetzt flackert nichts mehr,
solange ich mit meiner Bohrmaschine fern bleibe
@ max2d (Gast)
>flackern die lampen abundzu. Also bin ich hergegangen und hab den PE mit>dem Minus vom Schaltnetzteil verbunden. Jetzt flackert nichts mehr,>solange ich mit meiner Bohrmaschine fern bleibe
Aber wenn du sie wieder annäherst, flackert es. Das ist was faul!
Den Ausgangs-Minus auf PE legen ist erstmal OK.
Ich hab das Problem jetzt einigermaßen in den griff bekommen.
Mich würde aber gerade noch interessieren, ob ich noch was an meinem
Code optimieren kann, wie ich die Empfänger ansteuere.
Wenn ich schonmal so einen Programmier gott an der Strippe habe ;-)
Im Anhang nochmals mein Code
@ max2d (Gast)
>Ich hab das Problem jetzt einigermaßen in den griff bekommen.
Und wie?
>Mich würde aber gerade noch interessieren, ob ich noch was an meinem>Code optimieren kann, wie ich die Empfänger ansteuere.>Wenn ich schonmal so einen Programmier gott an der Strippe habe ;-)
Naja, man könnte die Funktion zum Senden noch kompakter schreiben,
mittels Schleife und Array. Bringt aber nicht sooo viel, ist eher was
für die B-Note.
Siehe Anhang sowie
Strukturierte Programmierung auf Mikrocontrollern
Falk Brunner schrieb:> Und wie?
naja, ist glaub noch nicht das Optimum, aber ich hab halt meine
Steuerleitungen vom DMX mit abgeschirmten Leitungen verlegt.
Und ich hab das Schaltnetzteil eingebaut, gehäuse geerdet und komplett
zusammengebaut.
Auf meine Bohrmaschine reagierts nichtmehr.
Ich werd die Schaltung heute abend mal bei der Premiere Testen, und über
der Stromverteilung (3x16A) montieren, dann wird es sich ja Zeigen wie
Störungssicher meine Schaltung ist :D
max2d schrieb:> An der Masse kanns nicht liegen.
Hoer sich so an wie:
"Das Auto springt nicht an. Am Benzin kanns nicht liegen, ist naemlich
keins drin."
@Gerald Schwarz (geralds)
>http://www.elektronik-kompendium.de/forum/forum_en...>Halte mal bitte inne und überlege dir eine Überarbeitung.
Mach mal halblang. Wenn gleich der Aufbau nicht optimal ist, für DMX
reicht es. Soviel "HF" gibt es da nicht.
Hi, ich weis der beitrag ist schon ein paar monate alt, aber da ich in
nächster zeit versuche ein dmx gesteuertes gerät zur motorsteuerung
bauen möchte, wollte ich mal fragen ob es inzwischen einen fertigen code
gibt bei dem man sich mal inspirieren lassen kann um die funktion zu
verstehen. würde mich freuen von euch zu hören.