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
> 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.
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.
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.
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
Wie sollte ich denn die Sendeseite (Master) aufbauen? Einfach mit einem Mosfet die Optokoppler ansteuern?
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.
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
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
Genau, die Slaves treiben auch Optokoppler, aber nur einen pro Slave. Der Master muss ja 4 (oder sogar 8) treiben können.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.