Forum: Mikrocontroller und Digitale Elektronik mehrere Atmega Usarts per Optokoppler vernetzen


von Chris (Gast)


Lesenswert?

Hi!

Ich benötige eure Unterstützung bei einem Bastelvorhaben.

Ich möchte mit den Usart-Pins 5 bis 9 Mikrocontroller innerhalb eines 
Gerätes vernetzen. Alle beteiligten Controller sind Atmegas. Wegen 
verschiedenen Potentialen sollen Optokoppler zum Einsatz kommen.

Die Verbindung soll über Wannenstecker mit Flachbandkabeln erfolgen, die 
Kabellänge zwischen Master und Slave beträgt 10 bis 40cm, je nachdem, 
wie weit das Slave entfernt ist. Es soll also sternförmig vom Master 
verzweigt werden. Die Optokoppler wollte ich jeweils auf die Sendeseite 
setzen.

Ist die sternförmige Verkabelung schlechter als ein 
Hintereinanderschalten der Slaves? Wenn es egal ist, ob ich die 
Optokoppler auf die Sende- oder Empfangsseite setze, könnte ich die 
Slaves auch hintereinander schalten, wenn von Vorteil, ohne mehr Adern 
zu benötigen.

Der erste Controller ("Master") soll zyklisch 4 Bytes nacheinander an 
die 4 Slaves senden, jedes Slave antwortet nach erfolgtem Empfang mit 
ebenfalls 4 Bytes, d.h. es laufen 32 Bytes pro Zyklus über den Bus. Die 
Baudrate soll 9600 Baud betragen.

Grundsätzlich können alle Slaves alle Übertragungen des Masters sehen. 
Die der Slaves sieht nur der Master. Die Slaves senden nicht 
unaufgefordert.
Wenn ein Slave getrennt wird (Wannenstecker wird abgezogen), soll der 
Bus noch funktionieren.

Es kann sein, dass jedes Slave nochmal einen kleinen Controller erhält, 
der nicht sendet, aber die Übertragungen ebenfalls mitbekommen muss. 
Somit können es insgesammt 9 Teilnehmer werden.


Mein Problem ist, dass ich nicht weiß, wie ich an die Sache heran gehen 
soll. Als Optokoppler sind wohl die 6N135 oder 6N137 geeignet. Ich habe 
einige CNY17-3, aber es wäre schön, wenn ich die 
Übertragungsgeschwindigkeit höher als eigentlich benötigt wählen könnte, 
um Reserven zu haben.

Soll ich bei den Flachbandkabeln jede zweite Ader zur Schirmung auf GND 
legen? Ich glaube, bei den 80poligen IDE-Kabeln wird das so gemacht.

Brauche ich spezielle Treiber-Bauteile? Ich muss ja vom USART des 
Masters aus 4 bis 8 Optokoppler ansteuern.
Wie muss ich am Master die RX-Leitung beschalten? Dort müssen ja alle 4 
eingehenden Optokoppler-Signale zusammengeführt werden. Reicht dort ein 
Pullup / Pulldown aus, oder gibt es spezielle Lösungen?

Danke für Eure Hilfe!

Gruß,
Chris

von g457 (Gast)


Lesenswert?

> Ist die sternförmige Verkabelung schlechter als ein
> Hintereinanderschalten der Slaves?

Kann man in dieser Allgemeinheit weder bejaen noch verneinen. Machst Du 
CSMA mit CA oder CD? Oder einfach Zeitschlitze?

Bei Daisychaining sparst Du dir das alles. Dafür muss jeder Teilnehmer 
weiterreichen.

von Chris (Gast)


Lesenswert?

Hallo g457,

nein, kein CSMA. Es findet immer nur eine Übertragung auf dem gesamten 
Bus parallel statt. Wann, bestimmt der Master. Die Slaves müssen die 
Antwort sofort nach dem Empfang senden.

Übersichtlicher wäre wohl eine sternförmige Verkabelung.

von Chris (Gast)


Lesenswert?

Daisychaining will ich nicht nutzen, da auch Slaves fehlen (abgesteckt 
oder stromlos geschaltet) können und es einige Situationen gibt, in 
denen der Master eine Nachricht an alle Slaves sendet, die dann dort 
möglichst schnell und zeitgleich eintreffen und verarbeitet werden 
sollen.

von Dietrich L. (dietrichl)


Lesenswert?

Chris schrieb:
> Wie muss ich am Master die RX-Leitung beschalten? Dort müssen ja alle 4
> eingehenden Optokoppler-Signale zusammengeführt werden. Reicht dort ein
> Pullup / Pulldown aus, oder gibt es spezielle Lösungen?

Wenn Du die erwähnten Optokoppler mit Open-Collektor-Ausgängen nimmst, 
ist ein gemeinsamer Ziehwiderstand OK. Ob das damit geht, hängt von der 
gewünschten Geschwindigkeit ab. Bei (sehr?) schneller Übertagung 
brauchst Du ggf. Optokoppler mit Logik-Ausgängen + Oder-Gater dahinter.

Gruß Dietrich

von Chris (Gast)


Lesenswert?

Wie sollte ich denn die Sendeseite (Master) aufbauen? Einfach mit einem 
Mosfet die Optokoppler ansteuern?

von Wolfgang (Gast)


Lesenswert?

Chris schrieb:
> Ich habe einige CNY17-3, aber es wäre schön, wenn ich die
> Übertragungsgeschwindigkeit höher als eigentlich benötigt wählen könnte,
> um Reserven zu haben.

Ob du Reserve hast, kannst nur du anhand der Baudrate, der Anzahl der in 
einem Zyklus zu übertragenden Zeichen zzgl. Pausenzeiten und deiner 
Zykluslänge ausrechnen.

von Frank K. (fchk)


Lesenswert?

Schau Dir mal das hier an:

http://www.analog.com/en/interface-isolation/can/adm3054/products/product.html

Das ist ein isolierter Transceiver - eigentlich für CAN, aber dem 
Transceiver ist egal, was Du darauf sendest. Jeder Knoten bekommt einen 
solchen Transceiver.

Zur Verkabelung: Flachbandkabel geht, wenns nicht zu lang wird, links 
und rechts von den CAN-Signalen Ground vorsehen, dazu einmal 5V für die 
Versorgung der Transceiver. Verkabelungsform: Bus mit 120Ω 
Abschlusswiderständen an beiden Enden. Stichleitungen und Abzweigungen 
sind nicht erlaubt, sonst gibts Störungen. Das heißt: EIN Kabel, auf das 
die Pfostenverbinder an den benötigten Positionen aufgequetscht werden.

fchk

von Dietrich L. (dietrichl)


Lesenswert?

Chris schrieb:
> Wie sollte ich denn die Sendeseite (Master) aufbauen? Einfach mit einem
> Mosfet die Optokoppler ansteuern?

Das hängt von dem Strom ab,
- den der µC treiben kann und
- wieviel die Sendediode des Optokopplers braucht.
Wenn das reicht, brauchst Du nur einen Vorwiderstand, sonst halt noch 
einen Treiber - welcher Art auch immer.
Aber gleiche gilt natürlich auch für die Sendeseite der Slaves, oder 
habe ich da was falsch verstanden?

Gruß Dietrich

von Chris (Gast)


Lesenswert?

Genau, die Slaves treiben auch Optokoppler, aber nur einen pro Slave. 
Der Master muss ja 4 (oder sogar 8) treiben können.

von Dietrich L. (dietrichl)


Lesenswert?

Chris schrieb:
> Der Master muss ja 4 (oder sogar 8) treiben können.

Da hast Du natürlich recht :-[

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.