DMX mithören - recht einfach, nicht?

Gast #959750
Lesenswert?

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
#959771
Lesenswert?

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
Gast #959775
Lesenswert?

> 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?)
Gast #959785
Lesenswert?

>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
Gast #964964
Lesenswert?

> 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.)
#964969
Lesenswert?

@  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
Gast #965005
Lesenswert?

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?
#965094
Lesenswert?

@ 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
Gast #965293
Lesenswert?

>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
#966178
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren