Forum: Mikrocontroller und Digitale Elektronik I²C über längere Distanz. Welches Kabel?


von Bernd (Gast)


Lesenswert?

Hallo!
Ich möchte eine I²C Kommunikation über ca. 20m gesamtlänge realisieren.
Dafür wollte ich, analog zum Hausbus-Wikieintrag, den PCA9600 als 
Bustreiber nehmen.

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

Ich bin mir noch nicht so sicher wie viele Leitungen ich brauche. 
Signal,Takt und GND sollten doch reichen,oder? Jeder Slave hat seine 
eigene Stromversorgung.
Dann habe ich an XLR Kabel gedacht (Robust,Dreipolig,Omnipräsent) ohne 
allerdings zu wissen ob der innere Kabelaufbau geeignet ist für mein 
Vorhaben. Für DMX werden diese Kabel ja auch verwendet.

Liebe Grüße,

Bernd

von Lehrmann M. (ubimbo)


Lesenswert?

Bernd schrieb:
> Ich möchte eine I²C Kommunikation über ca. 20m gesamtlänge realisieren.

Völliger Blödsinn. Gepfusche bis zum Umfallen. Nein glaub mir damit hast 
du keinen Spaß. Nimm einen Hausbus der auf CAN basiert und du bist 
glücklich und störungsfrei.

von Bernd (Gast)


Lesenswert?

Laut einigen AN sind längen bis zu 1km möglich.

von Ekkehard (Gast)


Lesenswert?

Ich habe seit 6 Jahren problemlos einen I2C-Hausbus mit 16 Meter Länge 
am laufen (Geschwindigkeit 100 kHz). Verwendet habe ich ganz normales 
CAT5 Netzwerkkabel. Treiber: P82B715 PN

von hmmm (Gast)


Lesenswert?

Lehrmann Michael schrieb:
> Bernd schrieb:
>> Ich möchte eine I²C Kommunikation über ca. 20m gesamtlänge realisieren.
>
> Völliger Blödsinn. Gepfusche bis zum Umfallen.

Der Hersteller des Treiberbausteines sagt, dass er dafür gedacht ist und 
wird sich da hoffentlich was bei gedacht haben...

von Dennis X. (Gast)


Lesenswert?

Naja wenn wir  jetzt  allerdings einmal  die Grundverwendung von I2C 
ansehen  ist  diese  Kommunikation  für platinen entwickelt worden.  für 
hausbus Sachen sind andere Systeme besser geeignet.

von spess53 (Gast)


Lesenswert?

Hi

>Naja wenn wir  jetzt  allerdings einmal  die Grundverwendung von I2C
>ansehen  ist  diese  Kommunikation  für platinen entwickelt worden.  für
>hausbus Sachen sind andere Systeme besser geeignet.

I2C hat sich halt auch gemausert:

http://www.google.de/url?sa=t&rct=j&q=an10658&source=web&cd=1&ved=0CCIQFjAA&url=http%3A%2F%2Fwww.nxp.com%2Fdocuments%2Fapplication_note%2FAN10658.pdf&ei=V2v3TputI8_GswaipfDzDw&usg=AFQjCNHDGumqUNtsum_IPisOPCl75Dm5Jg&cad=rja

MfG Spess

von Bernd (Gast)


Lesenswert?

Ich möchte PWM-Module ansteuern und die laufen eben über I²C  und nicht 
über CAN. Daher wäre I²C  schon ganz gut.

Gruss

Bernd

von Frank K. (fchk)


Lesenswert?

Bernd schrieb:
> Ich möchte PWM-Module ansteuern und die laufen eben über I²C  und nicht
> über CAN. Daher wäre I²C  schon ganz gut.

Dann nimmst Du eben pro Knoten einen kleinen PIC18F25K80 für 1.95€ das 
Stück (hat 1 CAN und 1 I2C) als Umsetzer. Das funktioniert wenigstens 
hinterher.

fchk

von numurai (Gast)


Lesenswert?

Den Rechtecken in einem CAT5 Kabel ist es ziemlich wursch, welches 
Protokoll sie transportieren. Die Physik ist für alle gleich.

von Klaus (Gast)


Lesenswert?

Schau dir mal den P82B96 an.

Ich hab da mal gelesen, daß jemand mit diesem Baustein an beiden 
Seiten der Leitung und einem Buspegel von 12V einige 100m zuverlässig 
überbrückt hat. Wichtig war da, SCL und SDA nicht im gleichen Paar zu 
haben, sondern immer eine Datenleitung mit einer Versorgung zu führen. 
Die Pullups, die wegen der höheren Treiberleistung der P82B96 recht 
niedrig sein können, sollten auf beide Seiten aufgeteilt werden.

MfG Klaus

von Bernd (Gast)


Lesenswert?

Ich glaube der PCA9600 ist das Nachfolgemodell von dem Chip.
Ich finde keine JR45 Printbuchsen. Weiss da Jemand weiter? (Alleine 
deswegen wäre XLR schon praktischer.. )

Gruss

Bernd

von Arc N. (arc)


Lesenswert?

Bernd schrieb:
> Ich glaube der PCA9600 ist das Nachfolgemodell von dem Chip.
> Ich finde keine JR45 Printbuchsen. Weiss da Jemand weiter? (Alleine
> deswegen wäre XLR schon praktischer.. )

Conrad? 716196 - 62

> Gruss
>
> Bernd

von Klaus (Gast)


Lesenswert?

Bernd schrieb:
> Ich glaube der PCA9600 ist das Nachfolgemodell von dem Chip.

Sieht so aus.

Bernd schrieb:
> Ich bin mir noch nicht so sicher wie viele Leitungen ich brauche.
> Signal,Takt und GND sollten doch reichen,oder? Jeder Slave hat seine
> eigene Stromversorgung.

Du solltest aber die Busversorgung, an der die Pullups hängen, mit in 
die Leitung nehmen, mal unabhängig, ob der Slave auch davon versorgt 
wird. Schau dir mal

Fig 13. Long distance I2C-bus communication

im PCA9600 Datenblatt an.

MfG Klaus

von Ralf G. (old-school) Benutzerseite


Lesenswert?

> Ich hab da mal gelesen, daß jemand mit diesem Baustein an beiden
> Seiten der Leitung und einem Buspegel von 12V einige 100m zuverlässig
> überbrückt hat.

sogar 200 Meter bei 100kHz

es ist eigentlich egal was für ein Stecker Du nimmst, Du solltest nur 
beachten wofür wird der Stecker noch verwendet, könnte ein vertauschen 
eine Schädigung mit sich führen, Kontakt-Sicherheit und 
Strom-Belastbarkeit ist auch wichtig bei Auswahl.

Bei XLR-Verbindungen könnten die Kabel mit Bühnen-Geräte vertauscht 
werden ... würde ich ich empfehlen ...


Gruss Ralf

von Ralf G. (old-school) Benutzerseite


Lesenswert?

um sicher zu gehen, Signalwege mit einem P82B96 auftrennen und mit einem 
rs422 Treiber jedes der vier Signale mit einem Aderpaar verbinden (4x2)

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Jenachdem um was es dir geht, wäre vielleicht sogar DMX eine Lösung. 
RS485, 50m mit Mikrofonkabel möglich und 250kbit/s Übertragungsrate. 
Allerdings nur in eine Richtung. Du kannst aber die 5 poligen DMX für 
eine Richtung auf den 5er-Standard verkabeln und die 2 freien Pins für 
D+ und D- für den Rückweg verwenden.

von Ralf G. (old-school) Benutzerseite


Lesenswert?


von Lehrmann M. (ubimbo)


Lesenswert?

numurai schrieb:
> Den Rechtecken in einem CAT5 Kabel ist es ziemlich wursch, welches
> Protokoll sie transportieren. Die Physik ist für alle gleich.

Dir ist schon klar, dass es verschiedene Methoden gibt Rechtecksignale 
zu übertragen? Schonmal was von differentieller Übertragung gehört -> 
CAN-Bus?! Fehlerkorrektur? Die Physik ist zwar für alle gleich aber sie 
bedienen sich verschiedener physikalischer Prinzipien.

Ich weiß auch dass sich der I2C prinzipiell für sowas eignet. Das ist 
allerdings und das muss man hier mal deutlich betonen eine 
Bastlerlösung. Wenn ich einem Kunden sowas anbiete dann lacht der sich 
kaputt. Das hat was von solchen Heißkleberattacken denen einige Bastler 
immer wieder verfallen. Da wird dann alles mit Heißkleber zugepampt.

Der Zweck des I2C liegt wie bereits erwähnt nicht in der 
Langstreckenübertragung, sondern in einem niederratigem Bussystem für 
die Kommunikation innerhalb einer Einheit bzw. auf einer Platine oder 
bestenfalls auf einem Platinenarray. Für große Distanzen gibt es andere 
Bussysteme die unempfindlicher gegen Störungen sind. Ganz oben steht da 
der CAN bzw. im Bereich der Hausautomatisierung der EIB Bus (der dem CAN 
sehr ähnlich ist). Ansonsten ist noch Ethernet üblich.

Dennoch kann ich verstehen, dass man auf eine derart einfache Lösung wie 
I2C zurückgreift. Zu viel sollte man sich da allerdings nicht erwarten. 
Gerade wenn es um Störungen, etc geht.

von Klaus (Gast)


Lesenswert?

Lehrmann Michael schrieb:
> Ich weiß auch dass sich der I2C prinzipiell für sowas eignet. Das ist
> allerdings und das muss man hier mal deutlich betonen eine
> Bastlerlösung.

Wenn ich mir so die Datenblätter und App. Notes von NXP zu den 
Bustreibern wie dem P82B96 oder dem PCA9600 ansehe, kommt es mir nicht 
so vor, als seien die extra für Bastler geschrieben. Man sollte aber 
auch verstehen und berücksichtigen, was da geschrieben steht.

MfG Klaus

von Jackson F. (Gast)


Lesenswert?

Hallo Bernd,

ich würde dir empfehlen, auf jeden Fall ein Kabel mit geschirmten 
Twistet-Pair-Leitungen zu verwenden.
Falls der I2C-Bus funktioniert: perfekt.
Falls er nicht funktioniert, kannst du mit geschirmten Twistet-Pair 
immer noch RS485, CAN o.ä. machen.
Du hast dann alle Möglichkeiten offen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Bernd schrieb:
> Ich möchte eine I²C Kommunikation über ca. 20m gesamtlänge realisieren.
Mann kann auch mit einem Panzer in den Urlaub fahren. Nur: mit einem Van 
ist das praktischer und angenehmer...

Bernd schrieb:
> Ich finde keine JR45 Printbuchsen.
Such mal nach RJ45...

Klaus schrieb:
> Ich hab da mal gelesen, daß jemand mit diesem Baustein an beiden
> Seiten der Leitung und einem Buspegel von 12V einige 100m zuverlässig
> überbrückt hat.
Ich habe da mal gelesen, dass einer von einer 100m hohen Klippe 
gesprungen und danach 40m tief getaucht ist. Nur: warum sollte ich das 
auch tun, wenns andere passende Übertragungsmedien gibt?

Klaus schrieb:
> Wenn ich mir so die Datenblätter und App. Notes von NXP zu den
> Bustreibern wie dem P82B96 oder dem PCA9600 ansehe
Das Problem beim I2C (wie beim CAN) ist, dass jedes Bit sowohl vom 
Master wie auch vom Slave manipuliert werden kann (I2C: 
Clock-Stretching), und deshalb die Übertragungsrate entsprechend niedrig 
gewählt werden muß.

von Mine Fields (Gast)


Lesenswert?

Ja, das typische Problem, wenn sachliche Argumente auf Pseudoargumente 
wie "ja aber geht doch" und "ja aber der Hersteller bietet doch Treiber 
an" stoßen.

Natürlich gibt es immer Anwendungen, in denen es extrem billig sein muss 
und es absolut nicht auf Übertragungssicherheit und Zuverlässigkeit 
ankommt (China-Spielzeug). Für solche Anwendungen bietet der Hersteller 
diese Chips an. Wenn die eigene Lösung ebensowenig zuverlässig sein 
darf, kann man es machen. Eine gute Lösung ist es dann aber immer noch 
nicht.

Bernd schrieb:
> Dann habe ich an XLR Kabel gedacht (Robust,Dreipolig,Omnipräsent) ohne
> allerdings zu wissen ob der innere Kabelaufbau geeignet ist für mein
> Vorhaben. Für DMX werden diese Kabel ja auch verwendet.

Dazu ein kleiner Hinweis: XLR ist nicht gleich XLR. Es gibt die normalen 
Mikrofonkabel, die nicht unbedingt geeignet sein müssen. Für DMX werden 
normalerweise spezielle Twisted-Pair-Kabel mit definierten 
Wellenwiderstand eingesetzt, also ähnlich wie Ethernet.

von Klaus (Gast)


Lesenswert?

Lothar Miller schrieb:
> Nur: warum sollte ich das
> auch tun, wenns andere passende Übertragungsmedien gibt?

Was bedeutet hier "passend" ? Natürlich gibts viele Medien vom 
Dosentelefon bis zu Satellitenlink.

Bernd schrieb:
> Ich möchte PWM-Module ansteuern und die laufen eben über I²C  und nicht
> über CAN. Daher wäre I²C  schon ganz gut.

Ob es in diesem Fall (20m) sinnvoll ist, I²C auf CAN zu wandeln, und 
dann wieder zurück, mit all den dabei entstehenden Problemen: mehr 
Hardware - mehr Fehler; mehr Code - mehr Bugs; mehr Layer - mehr 
Latency, sollte man sich gut überlegen.

MfG Klaus

von Jörg S. (joerg-s)


Lesenswert?

Lehrmann Michael schrieb:
> Ich weiß auch dass sich der I2C prinzipiell für sowas eignet. Das ist
> allerdings und das muss man hier mal deutlich betonen eine
> Bastlerlösung. Wenn ich einem Kunden sowas anbiete dann lacht der sich
> kaputt. Das hat was von solchen Heißkleberattacken denen einige Bastler
> immer wieder verfallen. Da wird dann alles mit Heißkleber zugepampt.
Vielleicht hast du selber so eine "Bastlerlösung" zu Hause. In 
HDMI/DVI/VGA Kabeln ist auch ein I²C Bus drin :)

>ich würde dir empfehlen, auf jeden Fall ein Kabel mit geschirmten
>Twistet-Pair-Leitungen zu verwenden.
Würde ich auch sagen. Hab auch schon I²C / 100kHz über 100m laufen 
lassen. Dabei hatte ich auch ein Cat5 Kabel genommen.


Und wie im I²C Hausbus Beitrag schon steht kannst du auch I²C per 
RS485/CAN übertragen. Einfach direkt gewandelt ohne Controller und 
Software:
http://www.mikrocontroller.net/articles/I2C_als_Hausbus#Differentielle_.C3.9Cbertragung

von ulle (Gast)


Lesenswert?

Jörg S. schrieb:
> Und wie im I²C Hausbus Beitrag schon steht kannst du auch I²C per
> RS485/CAN übertragen. Einfach direkt gewandelt ohne Controller und
> Software:
> http://www.mikrocontroller.net/articles/I2C_als_Ha...

Nur braucht das Kabel dann 4-5 Adern (ggf. noch Masse), anstatt 2-3 
Adern bei CAN oder RS-485.

von Bernd (Gast)


Lesenswert?

Also ich bin Student der angewandten Theaterwissenschaft und das ganze 
ist für eine Lichtinstallation die in Echtzeit ueber MAX/MSP angesteuert 
wird.
Daher ist es mir egal ob es Bastlercharakter hat oder nicht - verkaufen 
werde ich das ganze vorerst sowieso nicht. Wie erwähnt möchte ich nur 
Lämpchen über die PWM Ic's steuern. Wenn da mal kurz die falsche Lampe 
angeht juckt mich das nicht sonderlich.


Gruss

Bernd

von Ralf G. (old-school) Benutzerseite


Lesenswert?

@Bernd (Gast)

lass Dich nicht von deinem I2C-Weg abbringen, das was Du vor hast, kann 
sehr wohl funktionieren.

Wie Du schon selber Recherchierst hast sind die beiden I2C-Treiber 
P82B96 oder PCA9600 die richtige Wahl.

Das Verbindungskabel und die Steckverbindung müssen gut gewählt sein, 
dabei auf ausreichend Signal-Masse achten.

Die Aktoren würde ich dann galvanisch vom I2C-Bus entkoppeln, um 
jegliche Störungen vom Bus fern zu halten.

Leider haben einige hier ein Problem mit dem I2C-Bus ... warum auch 
immer ?

Gruss Ralf

von Frank S. (herrschrader)


Lesenswert?

Mein Hausbus läuft auch seit mehreren Jahren anstandslos mit P82B715 
Treibern.

Länge geschätzt 30 Meter.

Als Kabel habe ich ungeschirmte nicht verdrillte 4-adrige Litze verlegt, 
was sicher nicht optimal ist aber aus nicht-elektrischen Gründen 
sinnvoll war.
Versorgung aller Geräte mit 5V über den Bus.

Es gibt definitiv Störungen auf dem Bus.
Lässt sich aber gut in den Griff kriegen:

- Der Master sendet mit niedrigem Takt. Ich bin bei unter 100 kHz, 100 
kHz geht aber auch noch.

- Gesendet wird mit dem SMBUS Protokoll mit CRC Fehlererkennung und 
wenig Daten pro Paket.

- Saubere Programmierung (bei mir hängen PICs als Geräte am Bus), damit 
nicht ein einzelnes Amok laufendes Gerät den Bus auf low zieht und alle 
anderen blockiert.

Wenn ich heute neu aufsetzen müsste, würde ich auch über CAN nachdenken 
(ist technisch schon sehr schön auf Fehlertoleranz getrimmt), aber I2C 
macht Spaß, weil man die Bits am Oskar noch gut einzeln sehen und von 
Hand dekodieren kann.

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.