Forum: Mikrocontroller und Digitale Elektronik Rx Tx auf einer Ader mit R + D


von Bernhard R. (b-r)


Lesenswert?

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

von dummy (Gast)


Lesenswert?

>Nebenbei: Nein, ich kann keine zweite Ader legen! ;-)

Ohne Masse kannst du das gleich vergessen.

von Bernhard R. (b-r)


Lesenswert?

Reicht GND über PullDown nicht?

von dummy (Gast)


Lesenswert?

>Reicht GND über PullDown nicht?

Nein, GND aller Controller muß auch verbunden werden.

von crazy horse (Gast)


Lesenswert?

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.

von crazy horse (Gast)


Lesenswert?

ups, du willst wirklich nur eine einzige Ader verwenden?? Also keine 
Masse?
Naja....:-)

von b-r (Gast)


Lesenswert?

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

von Sven S. (stepp64) Benutzerseite


Lesenswert?

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

von Hermann G. (df2ds)


Lesenswert?

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

von Bensch (Gast)


Lesenswert?

Schon mal an LIN-Bus gedacht?

von b-r (Gast)


Lesenswert?

Ist LIN-Bus nicht nur Single-Master?

von STK500-Besitzer (Gast)


Lesenswert?

Dem Schaltplan nach bietet sich irgendwas mit Open-Collector/-Drain an.
Wobei es sinnvoller wäre, CAN oder RS485 zu benutzen.

von Bensch (Gast)


Lesenswert?

> 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.

von Alex (Gast)


Lesenswert?

Single Wire CAN wäre eine Lösung.

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.