Forum: Mikrocontroller und Digitale Elektronik Anfängerprojekt: DMX-Merger


von Philipp S. (ltk)


Lesenswert?

Hallo,
ich wollte als Anfänger im Bereich Mikrocontroller und IC's als 
"lern-Projekt" einen DMX-Merger mit eurer Hilfe realisieren...
Zuerst einmal die Frage, ist das möglich oder ein Projekt bei dem ich 
(vorhersebar) scheitern werde?

Noch als Info, ich kann Löten kenne mich mit Wiederständen, Transitoren 
usw. aus...
Nur eben mit IC und der gleichen habe ich noch nicht gearbeitet und 
möchte das nun lernen...
Bei dem Projekt geht es mir auch weniger darum Geld einzusparen, sondern 
einfach um Grundkenntnisse in diesem Bereich zu erlernen.
MfG Philipp

: Bearbeitet durch User
von Conny G. (conny_g)


Lesenswert?

Hallo Philipp,

also wenn Du noch gar keine uC-Schaltung gemacht hast, dann halte ich 
das für ein Erstprojekt für zu umfangreich.
Du brauchst eine Controller-Grundschaltung, RS485-Treiberbausteine und 
musst das Protokoll programmieren - 2x Empfang von DMX und 1x senden, 
auf einem oder evtl. mehreren uCs.
Da geht dann schon ziemlich was ab mit Timing und Softwarekomplexität 
usw. - 2x empfangen mit 250kBit und gleichzeitig senden mit 250kBit.
Das erscheint mir doch als eine etwas größere Aufgabe für den Anfang.

Wenn Du schon ein paar Monate Erfahrung hast, dann halte ich es für 
machbar.

Mach doch - nach den üblichen ersten Fingerübungen wie LED blinken etc. 
- erstmal einen DMX-Sender, dann einen Empfänger, dann einen Repeater 
und dann den Merger.

Vg,
Conny

von Philipp S. (ltk)


Lesenswert?

Ok,
vielen Dank für die Einschätzung, was für ein Bord bzw. welche 
Programmiersprache ist zu empfehlen, mit dem Hintergedanken eines 
Mergers?
Und welche Projekt mit der Sicht auf IC würden sich anbieten?
Vielen Dank schon mal...
MfG Philipp

von holger (Gast)


Lesenswert?

>Du brauchst eine Controller-Grundschaltung, RS485-Treiberbausteine und
>musst das Protokoll programmieren - 2x Empfang von DMX und 1x senden,
>auf einem oder evtl. mehreren uCs.

Was dann drei UARTs bedeutet. Damit sind kleine Controller
wie ATMega88 schon mal raus. Es muss was dickes her. Und das
ist dann schon mal wieder nichts für Anfänger.

>mit dem Hintergedanken eines Mergers?

Vergiss den Bullshit für lange Zeit.
Bring erst mal ne LED zum blinken.

von Philipp S. (ltk)


Lesenswert?

Ok :)
Ich schieb den Merger mal an letzter Stelle...
Aber dennoch, welchen Controller würdet ihr empfehlen?
Und dazu welche Sprache?

von Eumel (Gast)


Lesenswert?

Einen MSP430.
C.

von Philipp S. (ltk)


Lesenswert?

Ich vorher beim stöbern noch was von ARM aufgeschnappt zu haben oder 
würden die anderen mir auch zu einem MSP430 raten?

von Conny G. (conny_g)


Lesenswert?

Also so ein ATMega oder ATTiny ist ein Klassiker zum Anfangen.
Der MSP ist m.E. schon was für später, der kann schon viel mehr. Das ist 
gut, aber am Anfang ist einfacher übersichtlicher.
Wenn Dir der AVR (die ATMega etc. heissen auch "AVR") sehr schnell zu 
langweilig wird, kannst ja bald auch mal einen MSP probieren.

Und Programmiersprache ist eigentlich eher Geschmackssache, da kannst 
eine Basic-Variante verwenden (BASCOM) oder mit C programmieren oder Du 
kannst Dir Assembler geben.
Ich würde C empfehlen, es ist eine vernünftige Programmiersprache, die 
auch mit der sonstigen Softwarewelt etwas zu tun hat, mit der man 
gleichzeitig alles machen kann und gar nicht so weit vom Maschinencode 
entfernt ist und da hast bestimmt die größte "Community" an Software und 
Tipps und Tricks.

von Philipp S. (ltk)


Lesenswert?

Was ich jetzt noch nicht ganz versteh bei den AVR, gibts da auch fertige 
Boards oder muss ich mit alles aufm Steckbrett zusammen basteln...
Oder wie ist das gedacht?
Denn ich finde nur Boards wie das STK500 welches zum einen ja sehr teuer 
ist und ja auch rießig....
Danke schon mal
MfG Philipp

von Conny G. (conny_g)


Lesenswert?

Ja, das STK500 ist das "offizielle" Startkit und Entwicklungsboard von 
Atmel, das muss aber nicht sein.
Ein günstiges, fertiges Board ist der Arduino.
Der hat allerdings wiederum ein ganzes Konzept für sich, das sich an 
Einsteiger richtet oder solche, die es überhaupt einfacher haben wollen.
Da gibt's dann auch eine Entwicklungsumgebung und fertige Libs sowie 
"Steckmodule" um weitere Bausteine hinzuzufügen - da gibt's eine ganze 
Industrie und Community um diese Art von Konzept.

Ich persönlich mag Arduino nicht, weil ich da am Anfang nicht gewusst 
hätte, was eigentlich die "Welt" von Arduino ist und was nur der Atmel 
Prozessor oder seine Peripherie ist - ich bin da eher Purist. Aber auch 
das ist Geschmackssache.

Es zwingt Dich aber auch niemand das Arduino-Board mit 
Arduino-Bibliotheken und der Entwicklungsumgebung zu betreiben, am Ende 
ist's ja auch nur ein fertiges Board mit AVR - damit kannst machen was 
du willst.

Eine uC-Schaltung auf dem Breadboard ist aber überhaupt nicht 
kompliziert:
http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte
Keine 10 Bauteile und schon geht's los!

Und dann hast mit "echter" Elektronik zu tun - was schaltet man wie 
zusammen und warum, welche Bauteile und was tun sie, was braucht der AVR 
zum leben, was ist eine Stromversorgung etc.
Wenn Du einen Arduino nimmst ist das wie ins Auto setzen und den Motor 
anlassen - Du gewinnst dabei keine Kenntnisse über die Konstruktion des 
Autos. Beim Mofa schrauben lernst aber was und weisst auch gleich über's 
Auto Bescheid.

: Bearbeitet durch User
von Digi S. (digispark)


Lesenswert?

Technisch baut DMX auf der RS485 Schnittstelle auf. Für einen Merger 
brauchst Du - wie oben schon beschrieben - drei dieser Schnittstellen. 
Dafür gibt es extra Treiber-Bausteine, die den UART eines Controllers 
nach RS485 "übersetzen".

Es gibt jetzt also die Möglichkeit, einen einzigen Controller mit 3 
UARTs zu suchen, oder drei einzelne mit jeweils einem einzigen UART und 
diese z. B. per I2C untereinander zu vernetzen.

Für einen Einsteiger ist es sicher einfacher, den letzteren Ansatz zu 
verfolgen und (wie ebenfalls schon vorgeschlagen) erstmal einen 
DMX-Empfänger aufzubauen. Zum Testen, ob alles wie gewünscht 
funktioniert, kann man dann auch gleich noch ein LCD-Display per I2C 
dran hängen und sich bei der Gelegenheit auch gleich etwas in diesen Bus 
einarbeiten.

Im Gegensatz zu Conny mag ich die Arduinos ... insbesondere den kleinen 
Digispark. Das ist ein komplettes Board für unter 9 Euro. LCD-Display 
für ihn schon fertig zum anstecken. Ich selbst arbeite gerade an einem 
RS485 Modul, so dass auch das kein Problem wäre.

Da das ganze mehr oder weniger steckbar ist, ist es gerade für 
Einsteiger ideal, weil man die einzelnen Module einfach wiederverwenden 
kann.

Zudem ist die Programmierung durch die vielen vorgefertigten 
Code-Bibliotheken super einfach. Wenn Du Dich für diesen Weg 
interessierst, kann ich Dich ggf. auf den ersten Schritten ein wenig 
begleiten.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Wozu soll ein DMX-Merger denn überhaupt gut sein?
Und was soll der komkret machen?
Zwei DMX-Datenströme in einen zusammen mischen?

von Karl H. (kbuchegg)


Lesenswert?

> Bei dem Projekt geht es mir auch weniger darum Geld einzusparen,
> sondern einfach um Grundkenntnisse in diesem Bereich zu erlernen.

Zum Thema: Geld sparen.

Da eine deiner Einstiegshürden die Programmierung sein wird, kannst du 
mit diesem Teilbereich auch schon auf dem PC für wenig Geld anfangen. Es 
gibt freie C-Entwicklungsumgebungen für den PC. Downloade dir eine davon 
und fange an, die Grundlagen der Programmierung auf dem PC zu lernen. 
Dazu würde ich dir den Ankauf eines vernünftigen C-Lehrbuches empfehlen, 
welches du durcharbeiten solltest.
Diese Vorgehensweise hat einen großen Vorteil: die Programme bzw. 
Programmfragmente bzw. überhaupt die kompletten Beschreibungen im 
Lehrbuch werden auf dem PC aus dem Stand heraus funktionieren, was auf 
einem µC so nicht der Fall ist. Während du auf dem PC zb. einfach eine 
fertige Konsole zur Verfügung hast, auf der du Texte ausgeben kannst 
(zb. zu Debug-Zwecken), ist das auf einem nacktem µC nicht so. Dort 
musst du erst mal programmieren können, ehe du auf irgendeinem 
angeschlossenem Text-Display/Terminal den allerersten Text siehst.
D.h. auf dem PC lernst du erst mal die Grundlagen deiner 
Programmiersprache, du lernst Algorithmen, grundsätzliches Vorgehen, 
etc. etc. Sozusagen die Pflicht. Und dann kommt die Kür, mit all den 
Spezialitäten die eine µC-Programmierung so mit sich bringt.

Und es hat den Vorteil: Ausser einem ordentlichen Buch kostet dir das 
ganze nichts und du hast auch gleich noch eine Umgebung, in der du dir 
in weiterer Folge Hilfsprogramme auf dem PC erstellen kannst. Dein Buch 
wird dir dann auch in weiterer Folge noch wertvolle Dienste leisten, ist 
also auch dann kein rausgeschmissenes Geld, wenn du schon längst am µC 
programmierst.

: Bearbeitet durch User
von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Digi Spark schrieb:
> Es gibt jetzt also die Möglichkeit, einen einzigen Controller mit 3
> UARTs zu suchen, oder drei einzelne mit jeweils einem einzigen UART und
> diese z. B. per I2C untereinander zu vernetzen.
>
> Für einen Einsteiger ist es sicher einfacher, den letzteren Ansatz zu
> verfolgen und (wie ebenfalls schon vorgeschlagen) erstmal einen
> DMX-Empfänger aufzubauen. Zum Testen, ob alles wie gewünscht
> funktioniert, kann man dann auch gleich noch ein LCD-Display per I2C
> dran hängen und sich bei der Gelegenheit auch gleich etwas in diesen Bus
> einarbeiten.

Sowas von falscher Ansatz!
Wieso denn bitteschön den DMX Stream per UART empfangen und dann per I2C 
weitersenden zu nem anderen Controller?
Macht überhaupt kein Sinn und is nur mehr Aufwand.

Man nehme: 1 AVR mit 2 UART (wieso reden hier alle von 3 UART?) der 
20MHz und genug RAM (2kB) -> Mega324P zB.
1 UART empfängt nur DMX, ein anderer UART sendet und empfängt.
Die 2 Empfänger schreiben in einen 512Byte Puffer und von dort aus wird 
in den 3. Puffer, den Sendepuffer gemerged.
Die UARTs laufen im Interrupt und der Merger in der Hauptschleife.
Reset und Mark erzeugt man dann eben nicht durch Baudrate halbieren, 
sondern per Timer.

Ein 20MHz AVR ist auch shcnell genug, bei diesem Projekt (ich war fürs 
Lichtpult zuständig) habe ich jetzt den DMX Merger noch nachgereicht:
http://www.fritzler-avr.de/epro/index.php
Wenns nich ganz reicht, dann eben 24MHz auf das Teil ;)

Hier mal 3 mögliche Betriebsarten:
http://www.thomann.de/de/elation_dm_2512r_dmx_merger.htm

von Philipp S. (ltk)


Lesenswert?

Danke für die Vielen Tipps zum Merger, aber ich denke ich werde dieses 
Projekt auf Eislegen, vorerst.

Danke Karl Heinz für deinen Tipp ich hatte mir auch vor ein Buch 
zuzulegen, jedoch bin ich eher der Praktiker, der sehen will was er grad 
fabriziert hat und das auch anfassen will...
Deshalb so zeigt es sich bei mir brauch ich zu den ganzen Simulationen 
am Computer im was zu anfassen, weshalb ich auf Conny's Vorschlag auch 
eingehen werde und mir die Einzelteil kaufe und zwar schon Anfangs rein 
am Computer arbeiten werde, um dann nach und nach mich mehr den IC etc. 
zu zuwenden.
Dazu noch eine Frage, da ich verhindern möchte 10 mal zu bestellen...
Welche Standart Controller gibt es, außer dem, auf der von Conny 
empfohlenen Seite, ATmega88 ?
Oder reicht der eine ganze Zeit lang?

von Karl H. (kbuchegg)


Lesenswert?

Philipp Schaber schrieb:

> Dazu noch eine Frage, da ich verhindern möchte 10 mal zu bestellen...

Das wird sowieso nicht ausbleiben.

> Welche Standart Controller gibt es,

keinen.

> außer dem, auf der von Conny
> empfohlenen Seite, ATmega88 ?
> Oder reicht der eine ganze Zeit lang?

Der reicht für längere Zeit.
Gerade am Anfang ist für dich die Leistungsfähigkeit des µC (was er an 
Komponenten eingebaut hat) von zweitrangiger Bedeutung. Viel wichtiger 
ist die Unterstützung durch Tutorien und/oder Foren. Wenn du erst mal 
den ersten AVR im Griff hast, ist der Umstieg auf einen anderen kein 
Problem mehr. Die sind eine Familie, sind also alle ähnlich. Wie beim 
Autofahren: Die Grundprinzipien funktionieren überall gleich, nur hat 
der eine ein beleuchtetes Handschuhfach und der andere nicht.

von Falk B. (falk)


Lesenswert?

@ Philipp Schaber (ltk)

>Welche Standart Controller gibt es, außer dem, auf der von Conny
>empfohlenen Seite, ATmega88 ?
>Oder reicht der eine ganze Zeit lang?

Kauf lieber 2 Nummern größer, die paar Euro spielen keine Rolle. Dafür 
hast du ausreichend Resourcen. Wenn du daraus ein kleines Produkt machen 
willst, kannst du optimieren.

Nimm ATmega 644A oder 644p im DIL40 Gehäuse.

von Conny G. (conny_g)


Lesenswert?

Also ein ATMega8 oder ein ATMega328 tun für den Anfang völlig.
Bin gerade nicht ganz sicher, welchen ich davon empfehlen würde, der 328 
ist der "modernere" davon und hat eben 32k Flash statt nur 8k.

Allerdings ist es auch ganz gut nur 8 kB Flash zu haben, dann merkt man 
am Anfang nämlich sehr schnell wieviel man mit schlechtem Code Speicher 
verschwendet.
Bei 32kB hat man zuviel zum prassen und merkt gar nicht, dass man mit so 
einem supereffizeinten Mikroprozessor total verschwenderisch umgeht.

Hab's schon ein paar Mal gehabt, dass ich wg. Code > 8kB schnell mal 
einen 328 genommen habe, hatte ein bisschen später dann Zeit mir den 
Code nochmal genau anzusehen (der C-Linker erzeugt Dateien, die einem 
Info geben, wo der Speicher hingeht) und siehe da, kaum habe ich 
Stringfunktionen oder Fliesskommarechnung rausgeworfen, war ich gleich 
bei 4-5k statt 10k :-)

Und mach Dir keinen Kopf ob Du da jetzt den falschen oder richtigen hast 
- der kostet 3 Euro und wenn er Dir nicht (mehr) passt, gibt's für 3-5 
Euro einen anderen.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Also ich zumindest entwickel immer auf einem 644P oder 1284P.

Noch ein Tipp fürs Steckbrett:
http://www.fritzler-avr.de/HP/tipps/avrsteck.php

von Conny G. (conny_g)


Lesenswert?

Martin Wende schrieb:
> Noch ein Tipp fürs Steckbrett:
> http://www.fritzler-avr.de/HP/tipps/avrsteck.php

Uah, das ist krass :-) Das ist ja russische Tundra-Improvisation...
Dann lieber gleich mit Lochraster ein kleines Board mit uC-Sockel, das 
auf's Steckbrett passt.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Jo, von Igor persönlich zusammengebraten.
Beim Mega328 im DIL28 den Wannenstecker dann einfach hochkant aufkleben.
duckundweg

von Philipp S. (ltk)


Lesenswert?


von ... (Gast)


Lesenswert?

Ich würde mindestens 2 Stück von jedem Controller bestellen. Nichts 
frustriert mehr wie ein abgerauchter Controller wo man dann eine Woche 
auf Ersatz warten muss.
Die Erfahrung hat gezeigt, auch unzerstörbare Dinge werden kaputt ;)

von Martin K. (maart)


Lesenswert?

Philipp Schaber schrieb:
> Nun noch zum Steckbrett, reicht für den Anfang so ein einzelnes Modul
> oder doch besser gleich ein größeres?
Ich habe so eins. Da ich mit Funkmodulen experimentiere, ist es sehr 
handlich. Bei komplexeren Sachen wird es aber schnell eng, deshalb habe 
ich so eins in doppelter Breite.
> 
http://www.reichelt.de/Laborkarten/STECKBOARD-1K2V/3/index.html?&ACTION=3&LA=446&ARTICLE=67678&GROUPID=3374&artnr=STECKBOARD+1K2V


> Dann natürlich noch der ISP Port und ein paar LEDs, aber was noch?

Spannungsversorgung, Vorwiderstände, Quartz/Oscillator.
100nF Abblockkondensatoren..... naja, wie sagt man so schön: Das übliche 
Hühnerfutter aus der Grabbelkiste (hat man als Anfänger natürlich nicht 
unbedingt da)
Und natürlich auch ein Programmieradapter (z.B. AVR-ISP mkII, oder 
meintest du das mit "ISP Port")

von Philipp S. (ltk)


Lesenswert?

Noch eine Frage welchen Atmega ? den 8 oder den 88 ?
Und welche Quarze für den Anfang?

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

88, ist moderner
Ein Baudratenquarz, z.B. 18,4320 MHz
Für DMX natürlich eher 8 oder 16 MHz.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Falk Brunner schrieb:
> Für DMX natürlich eher 8 oder 16 MHz.

Für DMX so schnell wie möglich, also 20MHz für den Mega88
Ist dann ein Baudratenvorteiler von 5 (UBRR).

von Philipp S. (ltk)


Lesenswert?

Also nachdem nun heute das Päckchen von Reichelt angekommen ist :freu: ,
wollt ich nun loslegen...
Nun stellen sich mir einige Fragen, z.B. Welcher Pin des IC's ist für 
was, bzw. wo kann ich das rauslesen?
Dann wo finde ich ein C - Tutorial das auch auf Mikrocontroller 
zugeschnitten ist, mit sozusagen Aufgaben dafür und nicht allgemein für 
den Comuter...

Danke schon mal
MfG
Philipp

von Karl H. (kbuchegg)


Lesenswert?

Datenblatt des betreffenden IC (gibts bei Atmel)

AVR-GCC-Tutorial
AVR-Tutorial

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.