Hallo, ich suche eine Möglichkeit mehrere Controller über eine Leitung miteinander zu verbinden. Alle Controller sollen als Master kommunizieren dürfen. Hardware: MC 1 MC 2 MC 3 Rx Tx GND Rx Tx GND Rx Tx GND | | | | | | | | | | --- - | --- - | --- - | \ / | | | \ / | | | \ / | | | --- | | | --- | | | --- | | | | - | | - | | - | | | | | | | | | o---o---o o---o---o o---o---o | | | | | | ----o--------------o--------------o----- Daten Software: Jeder MC hat eine ID Wenn MC1 senden möchte an MC3 wird die ID 3 und ein Befehlscode gesendet. Aufbau: Byte 1 Byte 2 Byte 3 Byte 4 Send ID Receive ID Befehlscode Control / ACK Der gesendete Befehl wird am eigenen Rx gelesen und verglichen mit dem gesendeten Code. Wenn keiner reingepfuscht hat, sollte Rx und Tx gleich sein. Ansonsten wird nach einer Zeit nochmal gesendet. Der Empfänger schickt als Antwort den gleichen Befehlscode zurück, nur statt ein Control ein ACK im Byte 4. Habe leider kein Oszi um die Kommunikation zu überwachen, zu testen. Was meint Ihr, kann das funktionieren? Erfinde ich das Rad neu, oder gibt es das schon? Nebenbei: Nein, ich kann keine zweite Ader legen! ;-) Bernhard
>Nebenbei: Nein, ich kann keine zweite Ader legen! ;-)
Ohne Masse kannst du das gleich vergessen.
>Reicht GND über PullDown nicht?
Nein, GND aller Controller muß auch verbunden werden.
tja, der Ruhezustand von Rx und Tx ist H-Pegel..., zumindest wenn du (sinnvollerweise) auf Hardware-Uarts setzt. Also: Dioden umdrehen, pullup statt pulldown. Erwarte nicht zuviel von einer solchen Konstruktion. Ohne Treiber wird das schon hardwaremässig störungsanfällig, u.U. sogar gefährlich für die Eingänge. Datenrate und Entfernung werden nicht sehr hoch sein. Software wird aufwändig, neben Störungen musst du mit Kollisionen rechnen und damit klar kommen.
ups, du willst wirklich nur eine einzige Ader verwenden?? Also keine Masse? Naja....:-)
Ich Trottel, ich habe in jeder Unterverteilung einen MC, und die sind durch ein 3-adriges Kabel mit einem Netzteil verbunden. Also habe ich gemeinsamen GND. MC 1 MC 2 MC 3 Rx Tx +5V GND Rx Tx +5V GND Rx Tx +5V GND | | | | | | | | | | | | | --- - | | --- - | | --- - | | / \ | | | | / \ | | | | / \ | | | | --- | | | | --- | | | | --- | | | | | - | | | - | | | - | | | | | | | | | | | | | o---o---o | o---o---o | o---o---o | | | | | | | | | | | | | ----o--------)-----------o--------)-----------o--------)----- Daten | | | -------------o--------------------o--------------------o----- GND Was würdet Ihr für einen Treiber empfehlen um die Reichweite zu erhöhen? Bernhard
Spendier jedem µC ein CAN-Treiber oder zumindest einen RS485 Treiber und verbinde sie darüber. Damit kommst du mit zwei Drähten aus und kannst ca. 500m überbrücken. Sven
Hallo, wenn es eine langsame Übertragung sein darf, hilft vielleicht die gute alte Stromschleife weiter (auch als 20-mA-Schnittstelle oder TTY-Schnittstelle bezeichnet). Einfach mal danach suchen, es gibt jede Menge Treffer (muss ja nicht gleich mit Potenzialtrennung und allem Komfort sein :-) Gruß DF2DS
Dem Schaltplan nach bietet sich irgendwas mit Open-Collector/-Drain an. Wobei es sinnvoller wäre, CAN oder RS485 zu benutzen.
> Ist LIN-Bus nicht nur Single-Master?
Eigentlich ja, aber mir ging es beim Vorschlag nur um die Hardwareseite.
Man muss bei Multimaster immer Kollisionen per Software vermeiden. Geht
also mit LIN-Bustreibern genauso gut wie mit jeder anderen Hardware.
Wir setzen LIN-Bustreiber ein und nehmen unser eigenes proprietäres
Protokoll, da es wesentlich einfacher ist. Wir brauchen den ganzen
Funktionsumfang nicht.
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.