mikrocontroller.net

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


Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anderer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal hier...
die Dinger funktionieren super.

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

Autor: Manuel -- (ploana)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?)

Autor: mr.chip (Gast)
Datum:

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

Autor: Markus C. (ljmarkus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manuel -- (ploana)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ein MAX485CSA funktioniert sicher ohne Probleme!

+ Determinierungswiederstände laut RS485

Muss so funktionieren


MfG Manuel

Autor: Manuel -- (ploana)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
sry @Michael Wilhelm

dies nennt leider jeder anders zur verständlichkeit siehe bild

Autor: Michael Wilhelm (Gast)
Datum:

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

MW

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mr.chip (Gast)
Datum:

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

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mr.chip (Gast)
Datum:

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

Autor: Manuel -- (ploana)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.