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