www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 3 Controller mit 2 Leitungen verbinden


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich hab mal eine ganz banale Frage: Der I2C-Bus braucht ja zwei
Leitungen, Takt und Daten. Ich muss aber die GND-Potentiale der Geräte
auch verbinden, oder?

Konkret: Ich möchte drei Mikrocontroller verbinden, ideal wäre es, wenn
es über 2-adrigen Klingeldraht gehen würde. Die Entfernung ist mehrere
Meter (maximal 10m), beide Controller laufen mit Batterie, die
Übertragungsgeschwindigkeit ist nicht kritisch (hundert Byte pro
Sekunde würden schon reichen, mehr wäre aber auch nicht verkehrt).
Ich meine, dass ich für I2C drei Adern benötige wegen GND, bin mir aber
nicht sicher. Das ist meine erste Frage.

Meine zweite Frage: Falls ich für I2C wirklich drei Leitungen brauche,
was für Alternativen gibt es, die mit nur zwei Leitungen als Verbindung
auskommen? Oder ist es mit Hinblick auf die Entfernung von mehreren
Metern und den Programmieraufwand (I2C ist bei einem ATmega nicht so
das Problem) doch einfacher, ein 3-adriges Kabel zu nehmen?

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
I2C benötigt, wie eigentlich schon erkannt, 3 Adern. Schließlich braucht
die zweite Applikation einen Bezug, gegen das ein HIGH oder LOW erkannt
werden kann.
Sofern die einzelnen Applikationen auf I2C vorbereitet sind, wäre wohl
eine 3adrige Leitung (bzw. 2 + Abschirmung) die einfachste Wahl, doch
bedenke, daß immer nur einer der Master sein kann.

Eine Alternative wäre da noch RS-485. Ein Bussystem, daß eben mit 2
Adern auskommt und vergleichbar wie RS-232 arbeitet. Es muß dabei nicht
zwangsweise ein Master existieren, jedoch ein Protokoll, das Kollisionen
erkennt oder vermeidet. Auf diesem Bus können im Einfachsten Fall bis zu
32 Applikationen miteinander vernetzt werden... .

Gruß,
Arne

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daß mit RS485 löst das Problem so auch nicht; es wird noch eine
gemeinsame Masse benötigt.
Alternative: Verbindung über UART im Halbduplex; TX-Ausgänge mit OC.
Oder Übertragung mit Tonfrequenzen.

Autor: Azrael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz generell gibts noch den 1-wire Bus von Dallas/Maxim.
Wie weit das ganze funktioniert weiß ich nich, aber die 10m sollten
drinnen sein, ob das der Bus Multimaster fähig ist weiß ich auch nicht,
aber wenn die application nicht all zu viel strom verbraucht kannst du
die geräte auch über den 1-wire bus mit strom versorgen.

Es gibt auch I2C zu 1-wire wandler,

Natürlich ist der Bus relativ langsam(20kbps oder so)

mfg Azrael

Autor: MatthiasF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Du könntest es vielleicht so machen wie das bie digitalen
Modelleisenbahnen gemacht wird. Eine Leitung is GND und auf die andere
gibst du ein Manchester Code......Du kanst dir den Code dann auf deine
Applikation anpassen. zb. eine Preamble zum erkennen eines Signales. 2
Bit adresse für 4 geräte, ein paar Ack.-Bits. Datenbits und ein
Prüfbit.....

http://www.lokodex.de/mo/m_digital_dccprot01.htm

Gruß matthias

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael
Seit wann braucht eine symetrische Übertragung eine gemeinsame Masse?
Als Abschirmung könnte ich ja noch verstehen, aber sofern sich nicht
unterschiedliche Potenziale bilden, die sich dennoch entkoppeln ließen,
reichen für RS-485 2 Adern.

Gruß,
Arne

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antworten.

RS-485 sieht gut aus, vielleicht probier ich aber auch Matthias
Vorschlag.
Es ist für meine Anwendung relativ egal, ob der Bus nur einen Master
hat. Softwaretechnisch ist es mit einem Master aber vermutlich
einfacher, weil ich keine Kollisionserkennung brauche.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Arne
Wie willst Du denn verhindern, daß sich nicht unterschiedliche
Potentiale bilden ?
Alle Diff-Empfänger haben einen Gleichtakteingangsbereich (common mode
voltage), der einzuhalten ist.

Gruß  Michael

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael
die einfachste Lösung wären zwei kleine Kondis oder ein Überträger mit
zwei Wicklungen, was die Sache dann vielleicht doch nicht einfacher
macht, zumal das Signal in einem FlipFlop zwischgespeicher werden
müste. Die Terminierung gegen VCC und GND wie es bei RS485 empfohlen
wird, dürfte tatsächlich nicht reichen und mein Gebastel, von dem ich
ausgegangen war hat bei genauerer Betrachtung leider eine gemeinsame
Masse - sorry.

@all
Aber einen hab ich noch ;)
TxD über Widerstand (ggf. Treiber aus Transistor/en) mit RxD
zusammenlegen und diesen zusammen mit Masse als seriellen Bus benutzen!
Einfach aber ggf. ausreichend. :D

Gruß,
Arne

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Arne:
Das Zusammenlegen von RX und TX Signalen, wie Du es vorschlägst, hatte
ich mit meiner 'Alternative' weiter oben gemeint. Das Thema der ser.
Kopplung von µCs ist schon öfter (über)besprochen worden, sodaß ich
dachte, ein kurzer Tipp reicht.

Gruß  Michael

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.