www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Benötige Denkanstöße zur Kommunikation zwischen mehreren Mikrocontrollern (Atmel)


Autor: Andre Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein (erstmal kleines) Beleuchtungsprojekt im Sinn, und mir dazu 
auch schon einige Gedanken gemacht.
Nun würde ich gerne Eure Meinung dazu hören.

Was soll passieren?
Eine Steuereinheit ("Master") steuert mehrere (10 bis 200 ???) 
("Slaves"). Diese Slaves steuern je eine 4-Pin-RGB-LED im PWM-Betrieb.
Die Verkabelung erfolgt sternförmig über mehrere Meter (Spannung und 
Daten vom Master an alle Slaves).
Die Slaves sollen dann Farbverläufe, Wellen, equalizer und ähnlichen 
hübschen Schnickschnack machen, sollten Ihre aktuellen Farb-Werte (3 
Bytes) also mit 25 Hz bekommen.

Nun stehe ich vor dem Problem der Datenübertragung Master -> Slaves. 
Folgende Grundüberlegungen:
- In der finalen Ausbaustufe sollen bis zu 200 Slaves mit 25 Hz Ihre 
Daten bekommen, es wird also eine Bandbreite von ca. 130 kBit/s 
benötigt.
- Master und jeder Slave bekommen einen Mikrocontroller (AT-Mega bzw. 
tiny?) (Oder gibt es ICs die direkt PWM-Signale erzeugen und sich an 
irgendein protokoll halten?)
- Der Master sendet alle Daten, und die Slaves picken sich durch eine 
individuelle Adressierung die "eigenen" Daten 'raus
- Das ganze soll natürlich möglichst günstig/mit wenigen Bauteilen 
auskommen

Folgenden Lösungsansätze sind mir dabei spontan in den Sinn gekommen, 
die dümmsten zuerst:

- Tx des Master-UART an RX aller Slave-UARTS anschließen.
Vorteil: fast keine extra-Bauteile nötig
Nachteil: geht bestimmt nicht g (Signalwege mehrere Meter, 
Strombelastung des Sender-UART?)

- I2C/TWI benutzen und alle Controller verbinden
Vorteil: noch weniger Bauteile, kann mir sogar die Quarze sparen
Nachteil: Keine Ahnung, geht das? Mehrere Meter ist vielleicht immernoch 
zu viel Kabellänge? Und da war doch was mit "nur" 112 I2C-Slaves?

- RS-232 benutzen
Vorteil: geht relativ sicher?
Nachteil: viele externe Bauteile pro Slave (MAX232, Kondensatoren, 
Quarze, etc...)

- RS-485 benutzen
Vorteil: geht sicher (siehe DMX)
Nachteil: externe Bauteile wie SN75176 nötig, Repeater alle 32 Slaves? 
Reichen da einfache Schmitt-Trigger an den Datenleitungen???

So, mehr ist mir noch nicht eingefallen, ich freue mich über 
Verbesserungen, andere Ansätze oder Meinungen/Kommentare!

Danke und viele Grüße
  André

Autor: Bereits Fort (Firma: D.ade) (bereitsfort)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da du keine Respons planst, was hindert dich ein/zwei Bustreiber an TX 
zu hängen und mit dem/denen je 10 max232 treiber zu zu pushen. Die 
slaves bekommen alle ihre Standard UART mit mäxchen davor und können zu 
10-20igst ihre RXD an die TXD hängen ohne das wesentliche 
Spannungseinbrüche zu befürchtn seien.

Autor: Steffen O. (derelektroniker) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
du könntest dir mal den TLC5922 anschauen. Der wird per SPI 
angesprochen, und kann direkt eine PWM für deine RGB-LEDs. Er hat 16 
Ausgänge, du könntest also 4 LED pro Treiber anschliesen.

Gruß, Steffen

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Braucht man wirklich max232?

Bustreiber und gut is, vll noch alle 15 Slaves deine schmitt-trittgger

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Andre Z. (Gast)

>ich habe ein (erstmal kleines) Beleuchtungsprojekt im Sinn, und mir dazu

Mal was gaaanz neues ;-)

>hübschen Schnickschnack machen, sollten Ihre aktuellen Farb-Werte (3
>Bytes) also mit 25 Hz bekommen.

Hmm.

>- In der finalen Ausbaustufe sollen bis zu 200 Slaves mit 25 Hz Ihre
>Daten bekommen, es wird also eine Bandbreite von ca. 130 kBit/s
>benötigt.

>- Master und jeder Slave bekommen einen Mikrocontroller (AT-Mega bzw.
>tiny?)

OK.

> (Oder gibt es ICs die direkt PWM-Signale erzeugen und sich an
>irgendein protokoll halten?)

AFAIK wenige, und für Bastlr schwer zu bekommen.

>- Der Master sendet alle Daten, und die Slaves picken sich durch eine
>individuelle Adressierung die "eigenen" Daten 'raus

Nennt sich DMX512 ;-)

>- Das ganze soll natürlich möglichst günstig/mit wenigen Bauteilen
>auskommen

Was ist "günstig" bei dir? 5 Euro für alles?

>- Tx des Master-UART an RX aller Slave-UARTS anschließen.
>Vorteil: fast keine extra-Bauteile nötig
>Nachteil: geht bestimmt nicht g (Signalwege mehrere Meter,
>Strombelastung des Sender-UART?)

Unter anderen. Vergiss es.

>- I2C/TWI benutzen und alle Controller verbinden
>Vorteil: noch weniger Bauteile, kann mir sogar die Quarze sparen
>Nachteil: Keine Ahnung, geht das? Mehrere Meter ist vielleicht immernoch
>zu viel Kabellänge? Und da war doch was mit "nur" 112 I2C-Slaves?

Es gibt 10 Bit Addressierung. Aber elektrisch schafft das I2C nimmer.

>- RS-232 benutzen
>Vorteil: geht relativ sicher?
>Nachteil: viele externe Bauteile pro Slave (MAX232, Kondensatoren,
>Quarze, etc...)

Dito. Elektrisch nicht wirklich machbar.

>- RS-485 benutzen
>Vorteil: geht sicher (siehe DMX)

Eben ;-)

>Nachteil: externe Bauteile wie SN75176 nötig, Repeater alle 32 Slaves?

Uhhh, vergiss diesen Dinosaurier. Nimm was moderenes, die Stromrechnung 
wird es dir danken. Ausserdem gibt es 1/8 Load Empfä nger, da kann man 
ganz offizielle 256 Slaves an einen Bus schalten. Fettig.

>Reichen da einfache Schmitt-Trigger an den Datenleitungen???

Nein. RS485 ist differentiell, aus gutem Grund.

Ergo. Nimm DMX und gut. Wenn du einen Slew Rate Limited Driver nimmst, 
läuft das Ganze auch ohne Terminierung und bei wilder sternförmiger 
Verkabelung.

MFG
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Jens (Gast)

>Braucht man wirklich max232?

Nöö, den verkauft Maxim nur an Dumme.

>Bustreiber und gut is,

hmm, was wohl ein MAX232 sein soll . . .?

> vll noch alle 15 Slaves deine schmitt-trittgger

Und fertig ist der planlose Murks. Mahlzeit.

MFG
Falk

Autor: Andre Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schonmal für die Antworten!

@ Bereits Fort (Firma D.ade) (bereitsfort)
@ Steffen O. (derelektroniker)

Habe mich wohl missverständlich ausgedrückt wie die Verkabelung aussehen 
soll. Je ein Slave hängt mit einer Leuchte am Ende eines längeren 
Kabels. Aber das mit dem TLC5922 merke ich mir trotzdem!
Und Frage am Rande: Kann man einfach so mehrere MAX232 oder Konsorten 
"Parallel" hängen, um Ihre Belastbarkeit zu erhöhen??

@ Falk Brunner (falk)

>>- Der Master sendet alle Daten, und die Slaves picken sich durch eine
>>individuelle Adressierung die "eigenen" Daten 'raus
>Nennt sich DMX512 ;-)

Ja, hab mir schon irgendwie gedacht das es darauf hinausläuft, aber 
evtl. hätten sich ja Alternativen ergeben g

>>- Das ganze soll natürlich möglichst günstig/mit wenigen Bauteilen
>>auskommen
>Was ist "günstig" bei dir? 5 Euro für alles?

Na ja, wenn ich mir davon mal wirklich 200 ins Wohnzimmer hängen will, 
ist es schon ein Unterschied ob ich noch 200 Quarze und 200 
MAX-Wasauchimmer kaufen muss. Und mir hat die Vorstellung gefallen, für 
jeden Slave quasi nur den AT-Wasauchimmer und 3 Vorwiderstände zu 
benötigen, am besten noch freischwebend verlötet :)

>>Nachteil: externe Bauteile wie SN75176 nötig, Repeater alle 32 Slaves?
>Uhhh, vergiss diesen Dinosaurier. Nimm was moderenes, die Stromrechnung
>wird es dir danken. Ausserdem gibt es 1/8 Load Empfä nger, da kann man
>ganz offizielle 256 Slaves an einen Bus schalten. Fettig.

Hmm, klingt vernünftig! Kannst Du mir konkret einen nennen? Sind die 
pinkompatibel zum SN75176?

>>Reichen da einfache Schmitt-Trigger an den Datenleitungen???
>Nein. RS485 ist differentiell, aus gutem Grund.

Aber doch trotzdem TTL, nur einnmal invertiert? Je einen Schmitt-Trigger 
pro Datenleitung, wieso würde das nicht gehen?

>Ergo. Nimm DMX und gut. Wenn du einen Slew Rate Limited Driver nimmst,
>läuft das Ganze auch ohne Terminierung und bei wilder sternförmiger
>Verkabelung.

Bitte noch um eine Erläuterung des "Slew Rate Limited Driver"

Vielen Dank jedenfalls schonmal
  André

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andre Z. (Gast)

>Und Frage am Rande: Kann man einfach so mehrere MAX232 oder Konsorten
>"Parallel" hängen, um Ihre Belastbarkeit zu erhöhen??

Theroretisch ja, praktisch aber sinnlos.

>Na ja, wenn ich mir davon mal wirklich 200 ins Wohnzimmer hängen will,
>ist es schon ein Unterschied ob ich noch 200 Quarze und 200
>MAX-Wasauchimmer kaufen muss.

Ein 8 MHz Quarz kostet bei Angelika 24 Cent, macht bei 200 Stück 48 
Euro. Die LEDs kosten ein Vielfaches.

>Hmm, klingt vernünftig! Kannst Du mir konkret einen nennen?

MAX483. 1,75 bei Angelik. Den brauchst du aber nur 1x für dem Master. 
Die Empfänger können den billigsten MAX485 oder ähnlich verwenden.

> Sind die pinkompatibel zum SN75176?

Ja.

>Aber doch trotzdem TTL, nur einnmal invertiert?

Nein. Die Signale können +12 und -7 V Masseverschiebung haben. Das macht 
der MAX für dich. Der ist sein Geld wert.

> Je einen Schmitt-Trigger pro Datenleitung, wieso würde das nicht gehen?

Wegen der Masseverschiebung. (Ist das jetzt Dativ oder Genitiv? ;-)

>Bitte noch um eine Erläuterung des "Slew Rate Limited Driver"

Das sind RS485 Sender, die besonders langsam schalten. Damit bekommt man 
bei moderaten Kabellängen keine Reflexionen, siehe Wellenwiderstand. 
Zum Vergleich die minimalen Anstiegszeiten:

MAX485: 3ns!
MAX483: 250ns

MFG
Falk

Autor: Andre Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt alles sehr plausibel, werde ich so machen, Danke für die Tips!

Werde mal ein paar Test-Slaves mit ATtiny2313 bauen, das scheint der 
günstigste für meinen Zweck zu sein (Hard-PWM, UART, 0,95 EUR bei 
Reichelt)

Grüße
  André

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.