Forum: Mikrocontroller und Digitale Elektronik DMX mithören - recht einfach, nicht?


von mr.chip (Gast)


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

von Anderer (Gast)


Lesenswert?

Schau mal hier...
die Dinger funktionieren super.

http://www.hoelscher-hi.de/hendrik/light/profile.htm

von Manuel -. (ploana)


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

von mr.chip (Gast)


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?)

von mr.chip (Gast)


Lesenswert?

Noch zu dem RS-485-Wandler: Was nimmt man da typischerweise, um danach 
ein TTL-Signal (?) für den AVR zu haben?

von Markus C. (ljmarkus)


Lesenswert?


von Michael Wilhelm (Gast)


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

von Manuel -. (ploana)


Lesenswert?

Also ein MAX485CSA funktioniert sicher ohne Probleme!

+ Determinierungswiederstände laut RS485

Muss so funktionieren


MfG Manuel

von Manuel -. (ploana)


Angehängte Dateien:

Lesenswert?

sry @Michael Wilhelm

dies nennt leider jeder anders zur verständlichkeit siehe bild

von Michael Wilhelm (Gast)


Lesenswert?

Nee Manuel, da muss ich mich entschuldigen. Aber in dem Zusammenhang 
habe ich Reset noch nie gelesen. Eine sehr eigenwillige Übersetzung.

MW

von mr.chip (Gast)


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.)

von Falk B. (falk)


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

von mr.chip (Gast)


Lesenswert?

Na toll, der USB-RS232 Wandler, den ich hier herumliegen habe, schafft 
230 kB/s, aber keine 250 :(

von mr.chip (Gast)


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?

von Falk B. (falk)


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

von Michael Wilhelm (Gast)


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

von mr.chip (Gast)


Lesenswert?

PCs können aber in aller regel keine 9-Bit :( Nervig, dass es an so was 
geringem scheitert.

von Manuel -. (ploana)


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

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
Noch kein Account? Hier anmelden.