Hallo Ich denke gerade darüber nach, ein kleines Licht-Projekt mit einer DMX-Steuerung zu versehen. Es geht lediglich darum, dass die bereits steuerbaren Lampen ihre Signale von einem DMX-Lichtmischpult erhalten. Wie mir scheint, ist die Sache nicht besonders kompliziert: Man muss bloss die RS-485 Signale auf Standard-TTL-Pegel wandeln, um sie dann per UART an einem Mikrocontroller (AVR) lesen zu können. Das Protokoll ist ebenfalls trivial. Schätze ich das richtig ein, oder lauern da doch noch Stolpersteine? (Dann würde ich nämlich eher auf DMX verzichten.) Zwei Fragen: 1. RS-485 mit dem Mikrocontroller lesen: Nimmt man da einfach einen Wandler-Chip oder geht das noch einfacher? 2. Anschluss: Was muss man beachten, um das Gerät sauber anzuschliessen? Ich denke mal, dass es einen DMX-Ein- sowie einen Ausgang hat, das Signal läuft dann einfach durch das Gerät durch. Gruss Michael
Schau mal hier... die Dinger funktionieren super. http://www.hoelscher-hi.de/hendrik/light/profile.htm
Hallo mr.chip 1. also DMX-512 ist eigentlich sehr einfach zu realisieren, was du benötigst ist einfach nur einen Pegelwandler zb.: ein MAX485 - TX & RX mit dem µC verbinden -> fertig! Der rest ist softwarearbeit: du musst einfach den RESET als Trigger für das Frame verwenden das startbyte richtig interpretieren und dir in diesem Frame Channel_1 - Channel_512 herausdetektieren! 2. kommt auf deinen DMX-Master an Die slaves hängen eifnach parallel am DMX-Bus du kannst also problemlos das Signal durch das Gerät laufen lassen MfG
> 2. > kommt auf deinen DMX-Master an > Die slaves hängen eifnach parallel am DMX-Bus du kannst also problemlos > das Signal durch das Gerät laufen lassen Machen ja eigentlich alle DMX-Slaves so: Signal geht an einem Stecker rein und kommt an einem anderen wieder raus, wo es zum nächsten Slave geht. Ich habe nur ein bisschen Angst, das Signal dadurch zu verwursteln, wenn die Wellenimpedanz o.ä. nicht stimmt. (Oder nehme ich da die Leitungstheorie-Vorlesung zu ernst?)
Noch zu dem RS-485-Wandler: Was nimmt man da typischerweise, um danach ein TTL-Signal (?) für den AVR zu haben?
>du musst einfach den RESET als Trigger
DMX hat keinen RESET. Das was die Synchronisation macht, nennt man
üblicherweise BREAK. Das ist ein Low auf der Datenleitung für mindestens
88µs. Da kommt es in der UART zum setzen des FE-Bits, da keine Stoppbits
empfangen wurden.
MW
Also ein MAX485CSA funktioniert sicher ohne Probleme! + Determinierungswiederstände laut RS485 Muss so funktionieren MfG Manuel
sry @Michael Wilhelm dies nennt leider jeder anders zur verständlichkeit siehe bild
Nee Manuel, da muss ich mich entschuldigen. Aber in dem Zusammenhang habe ich Reset noch nie gelesen. Eine sehr eigenwillige Übersetzung. MW
> DMX hat keinen RESET. Das was die Synchronisation macht, nennt man > üblicherweise BREAK. Das ist ein Low auf der Datenleitung für mindestens > 88µs. Da kommt es in der UART zum setzen des FE-Bits, da keine Stoppbits > empfangen wurden. Hmm...gibt es eine Möglichkeit, diesen BREAK auch mit einer normalen RS232-Schnittstelle am PC zu erzeugen? (Zu Testzwecken - leider ist ja die PC-Schnittstelle mit 115k Bits/s sowieso zu langsam.)
@ mr.chip (Gast) >Hmm...gibt es eine Möglichkeit, diesen BREAK auch mit einer normalen >RS232-Schnittstelle am PC zu erzeugen? Klar. 115k2 Baud einstellen und 0x00 senden. > (Zu Testzwecken - leider ist ja >die PC-Schnittstelle mit 115k Bits/s sowieso zu langsam.) FTDI232 ist dein Freund. Der kann 250k/s von Hause aus perfekt. MFG Falk
Na toll, der USB-RS232 Wandler, den ich hier herumliegen habe, schafft 230 kB/s, aber keine 250 :(
Da sehe ich doch noch ein weiteres Problem: Ein Startbit, was soll denn das?!? Weder mein PC, noch das AVR-Datenblatt kennt sowas. Macht man da einfach einen 9-Bit-Transfer und setzt das erste gesendete Bit auf 1?
@ mr.chip (Gast) >Da sehe ich doch noch ein weiteres Problem: Ein Startbit, was soll denn >das?!? Weder mein PC, noch das AVR-Datenblatt kennt sowas. Bitte? Mal die Augen aufmachen. Sowohl PC als auch AVR generieren wunderbar ein Startbit. > Macht man da >einfach einen 9-Bit-Transfer und setzt das erste gesendete Bit auf 1? Startbit ist immer NULL! DMX ist popeliges RS232 auf 250kBaud. MFG Falk
>Startbit ist immer NULL! DMX ist popeliges RS232 auf 250kBaud.
Na ja, nicht ganz. Tauschen wir jetzt RS232 gegen RS485 kommen wir der
Sache näher. Und den 9-bit Transfer brauchst du, da 2 Stoppbits gesendet
werden.
MW
PCs können aber in aller regel keine 9-Bit :( Nervig, dass es an so was geringem scheitert.
Problem beim PC ist die Anfangssequenz dieses soll nämlich einen FramingERROR auslösen, durch das übertragen von 0x00 kann dieses nicht realisiert werden Dazu könntest du eine Handshakeleitung benutzen, ein wenig Hardware brachst du sowiso(RS232 zu RS485) um mit der Handshakeleitung den BREAK(RESET) zu realisieren !!!!!! das wirkliche Problem ist die Datenrate am PC max 115,2kBaud und DMX läuft mit 250kBaud !!!!!! Ansonsten mit dem PC 8Datenbit 1Sartbit 2Stoppbits das geht wunderbar(das kannst du sogar im Hyperterminal von Windows austesten)(>> sogar WINDOWS :) ) Hoffe geholfen zu haben Manuel
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.