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 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
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.
> 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.
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
Naja als Hausbus ist IIC jetzt nun wirklich nicht gedacht. Da bietet sich RS485 an. Aber wenns denn funktioniert ;-)
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 :)
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.
Ups, schon länger nicht mehr hier vorbeigeschaut... Lukas, habe Dir eine PM geschickt. Zu meinen Kabeln: nichts spezielles, Standard Telefonkabel, keine besondere Belegung.
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.
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.
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.
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.
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.
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!
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.