Forum: Haus & Smart Home Geeignetes Kabel für I2C über Langstrecke


von Lukas M. (pepsifan)


Lesenswert?

Hallo zusammen,

ich hatte vor einiger Zeit die Idee, einen Bus in einem Raum zu 
verwenden. Da der I2C-Bus verbreitet und günstig ist und es fertige 
Module dafür gibt, testete ich ihn auf ca. 30m. Ich wusste, dass I2C 
nicht für so große Distanzen gedacht ist, aber ich wollte es mit 
geringer Geschwindigkeit von 10kH mal ausprobieren.
Es gab tatsächlich kein Problem dabei - und ich brauche eh nur ~20m.

Aus diesem Grund kaufte und baute ich mehrere Slaves für den I2C-Bus. 
Jetzt, wo 5 Slaves dranhängen und eine gute Kabelstrecke verlegt ist, 
gibt es Probleme.
Ab und zu bekommt der Master "1111 1111" zurück, obwohl der Slave das 
mit Sicherheit nicht sendet.

Bei einigem rumprobieren hat sich gezeigt, dass es Störungen von Außen 
gibt. In einem "Versuchs-Stadium" war es störungstechnisch hilfreich, 
Masse direkt mit der Erdung (Steckdose) zu verbinden.

Bei Störungen von Außen könnte ich mir vorstellen, dass ein geschirmtes 
Kabel hilfreich ist. Dabei gibt es aber wohl auch Probleme und weitere 
unbeantwortete Fragen, wie ich im Internet feststellte.
Zentrale Fragen bei der Kabelwahl:
- Würde sich die Kapazität durch eine Schirmung zu stark erhöhen?
- Nur eine Schirmung um alle Adern?
- Eine Schirmung um alle Adern und eine Schirmung verdrillter Paare?
- Welche Adern sollten miteinander verdrillt sein?
- Wären verbreitete Kabel wie Cat. 5e geeignet?

(Es geht in meinem Fall um eine Kabellänge von ca. 20m)

Grüße
Pepsifan

von Matthias (Gast)


Lesenswert?

Von NXP gibt es die Application Note
AN10658 "Sending I2C-bus signals via long communications cables",
die sich ausführlich mit I2C über lange Kabel beschäftigt.
www.nxp.com/documents/application_note/AN10658.pdf

von Jörg S. (joerg-s)


Lesenswert?

Wie hast du den I²C denn realisiert? Einfach Standard 5V Pegel und 
Pull-Up auf einer Seite?

>- Würde sich die Kapazität durch eine Schirmung zu stark erhöhen?
Ich hatte mal mit dem P82B96 experimentiert. 100m Cat5 100kHz I²C und 
mal Schirmung mit Masse verbunden und mal Schirmung nur vorhanden aber 
nicht angeschlossen. Überhaupt keine Veränderung zwischen beiden Fällen. 
Jedenfalls war weder bei der Funktion noch am Oszi ein Unterschied zu 
erkennen.

von Lukas M. (pepsifan)


Lesenswert?

> Wie hast du den I²C denn realisiert? Einfach Standard 5V Pegel und
> Pull-Up auf einer Seite?

Genau: 5V mit Pull-Up Widerständen (1,5k) auf einer Seite.

Dass bei deinem Versuch nach 100m rein garnichts angekommen ist, wundert 
mich. Aber ein "Ground-Rauschen" müsste eine Schirmung ja zumindest 
vermindern.

von John M (Gast)


Lesenswert?

Hallo,

ich habe mein ganzes Haus per I²C verkabelt und muss sagen: es geht 
einwandfrei!! Natürlich kann man nicht mit 400kHz  fahren, aber für 
einen Haussterung muss das auch nicht sein. Ich habe die Geschwindigkeit 
maximal gedrosselt, bin jetzt bei ~3kHz und läuft schon seit Jahren 
stabil.
Als Leitungungne sind die hanz normalen Telefonkabel 2x2 und 10x2 
verlegt.


Gruß
John

von Dennis X. (Gast)


Lesenswert?

Naja als Hausbus ist IIC jetzt nun wirklich nicht gedacht. Da bietet 
sich RS485 an. Aber wenns denn funktioniert ;-)

von Jörg S. (joerg-s)


Lesenswert?

Lukas M. schrieb:
> Dass bei deinem Versuch nach 100m rein garnichts angekommen ist, wundert
> mich.
Die 100m Verbindung funktioniert bei mir! Die Schirmung hat halt nichts 
negativ beeinfluss :)

von Lukas M. (pepsifan)


Lesenswert?

Hallo,

joerg-s, da hatte ich mich bei Deiner 100m Verbindung verlesen, sorry.

@John M
> ..läuft schon seit Jahren stabil..
> Telefonkabel 2x2 und 10x2

Erstmal danke für die Info! Ich wusste es gibt jemand, der I2C 
erfolgreich so verwendet.
Könntest Du noch beschreiben, welches (2x2 oder 10x2?) und wie Du die 
Kabel für größere Distanzen belegt hast? Ich habe z.B. schon gelesen, es 
sollten bestimmte Adern miteinander verdrillt/verseilt sein - hast Du da 
etwas beachtet?
Läuft bei dir auch eine Stromversorgung durchs gleiche Kabel?


PS: John M, könntest Du mir vielleicht irgendeine Möglichkeit der 
Kontaktaufnahme mitteilen? Oder mal im IRC-Chat vorbei schauen, da bin 
ich gerade oft online.

von John M (Gast)


Lesenswert?

Ups, schon länger nicht mehr hier vorbeigeschaut...

Lukas, habe Dir eine PM geschickt.

Zu meinen Kabeln: nichts spezielles, Standard Telefonkabel, keine 
besondere Belegung.

von Uwe (Gast)


Lesenswert?

Hallo Lukas,
Mein (Freeware-) Projekt läuft mit einem einfach modifiziertem I2C Bus 
seit Jahren in mehreren Haushalten. Leitungslängen von mehr als 100m 
sind ohne Probleme möglich, da die Taktung bei 1-3 kHz liegt. Daher gibt 
es auch kein  Problem mit den Kabeln - die müssen bei diesen Frequenzen 
nicht verdrillt sein. Allerdings sollten diese geschirmt sein, weil es 
sonst zu starken Abstrahlungen im Radiobereich kommt! Wenn du die 
Stromversorgung auch über den Bus realisieren möchtest, achte auf den 
Gleichstromwiderstand der Kabel. Die Beschreibung meines Projektes 
findest du auf der Website [http://hauscomputer.gmxhome.de/] Aus 
Sicherheitsgründen setzen wir mittlerweile beim Übertragungsprotokoll 
auf eine Prüfsumme (ATtiny26 mit eigener Firmware anstelle PCFs..) Damit 
werden Störimpulse von Waschmaschinen, Hauswasserwerken u.ä. zuverlässig 
eliminiert.

von Lukas M. (pepsifan)


Lesenswert?

Hallo & Danke für die Antworten!

John M: Vielen Dank, ich melde mich bei Bedarf!

Uwe: Ich habe mir Deine Seite einmal angesehen und bin begeistert. Toll 
zu wissen, dass das alles doch mit I2C geht. Leider habe ich aber keine 
Erklärung für die "Modifikation" gefunden. Geht es dabei um die 
Prüfsumme, oder was meinst Du mit Sicherheitsgründen?

Wenn das Kabel geschirmt, aber nicht besonders verdrillt sein muss, 
könnte es doch das hier tun?!
http://www.pollin.de/shop/dt/NzcxODM0OTk-/Haustechnik/Kabel_Draehte_Litzen/Litzen/Steuerleitung_LiYDY_4x_0_5_mm_10_m.html

Wäre schön günstig und hätte für die Stromversorgung einen ganz 
akzeptablen Querschnitt - im Gegensatz zu allen anderen Kabeln die ich 
so gefunden hab in dem Preissegment.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Verdrilltes Kabel ist nur dann hilfreich, wenn man ein differentielles 
Signal (D+ und D-) hat, wie es z.B. bei Ethernet und RS485 der Fall ist. 
Der Witz ist hier, dass sich eine Störung von außen auf beide Signale 
gleich auswirkt und sich somit "wegsubtrahiert".

Bei I2C (und z.B. auch RS232) bringt eine Verdrillung rein gar nichts.

von Uwe (Gast)


Lesenswert?

Hallo Lukas,
dein Kabel von Pollin kannst du natürlich nehmen, aber CAT Kabel ist 
wesentlich billiger und du hast mehr Adern: für Masse und 
Stromversorgung würde ich jeweils 3 bzw. 2 Leitungen parallelschalten, 
wegen dem Spannungsabfall über der Leitung. Im Handbuch "0" sind die 
Anleitungen für Module mit Netzwerkbuchsen auf der Platine, sodass 
fertige Kabel verwendet werden können.

> Leider habe ich aber keine
> Erklärung für die "Modifikation" gefunden. Geht es dabei um die
> Prüfsumme, oder was meinst Du mit Sicherheitsgründen?

Dabei wurde der "normale" Spannungshub auf der SCL und SDA Leitung von 
5V auf 12V angehoben um letztlich direkt vor den I2C Bauteilen einen 
Widerstand von 110 Ohm in Reihe mit einer parallelgeschalteten Z-Diode 
(5,1V) zu ermöglichen. Das Ganze ergibt einen EMV-Schutz vor induzierten 
Störimpulsen vom Bus. Der maximale "Input" Strom in die ICs wird so auf 
zulässige Werte begrenzt. Die Prüfsumme dagegen dient dazu, fehlerhaft 
übertragene Bits zu erkennen und zu ignorieren. Der I2C Bus hat auf der 
Bit Übertragungsschicht von Natur aus kein solches Protokoll und wird 
deshalb von Profis auch nicht für längere Übertragungswege eingesetzt. 
Fürs Hobby ist er aber preiswert und nachbausicher.

von Timm T. (Gast)


Lesenswert?

Die Geschwindigkeit wird begrenzt durch die Leitungskapazität, die von 
den Pullups beim Wechsel low=>high wieder aufgeladen werden muss.

Die Widerstände können nicht zu klein gemacht werden, weil die OCs der 
Slaves meist nur 3mA sinken können.

Man kann aber die Widerstände durch KSQs ersetzen. Um bis auf 5V Pegel 
zu kommen, nimmt man einen Stromspiegel mit PNP-Transistoren (BCV62) und 
einen Widerstand gegen GND.

Damit wird die Leitungskapazität nicht mehr exponentiell (R=>C), sondern 
linear (I=>C) geladen und die Frequenz kann locker verdoppelt werden.

Einziger Nachteil, es fließt ständig der Steuerstrom des Stromspiegels 
von 2x 3mA gegen GND, auch wenn kein Signal übertragen wird.

von Lukas M. (pepsifan)


Lesenswert?

Vielen Dank für die Antworten, das hilft mir sehr.

Gerade bastel ich nicht daran, demnächst werde ich entsprechende Kabel 
bestellen und die Arbeit daran mit den hier gewonnenen 
Verbesserungsvorschlägen wieder aufnehmen.
Bei Problemen melde ich mich wieder.

Danke Allerseits!

von Ralf G. (old-school) Benutzerseite


Lesenswert?

Hallo Lucas,

>> P82B96 ist der Baustein den Du suchst,
ich habe selber ein HausBus mit I2C/12V 100kHz in Verbindung mit dem 
P82B96 seit Jahren laufen ...

NXP hat den mittlerweile überarbeitet PCA9600 (05/2011)

http://www.nxp.com/documents/data_sheet/PCA9600.pdf

Gruss
Ralf

von Lukas M. (pepsifan)


Lesenswert?

Hallo nochmal,

ist schon was her - aber ich werde demnächst wohl weiter daran basteln. 
Danke für den Hinweis zum PCA9600!
Da die Verfügbarkeit bzw. Beschaffung schlecht war, habe ich bei 
Reichelt angefragt...

Ergebnis:
Der PCA 9600 kann nun unter der BestellNr: "PCA 9600 D" bei Reichelt 
bestellt werden. Bzw. bald, ist noch im Zulauf.

Wollte nur kurz Bescheid sagen, falls andere das gleiche vor haben und 
diesen Chip suchen...

Grüße
Pepsifan

von Thomas (Gast)


Lesenswert?

Es gibt von Adafruit den LTC4311 I2C Extender, der könnte eventuell 
helfen.

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.