Pages: [1]   Go Down
Author Topic: Arduino I2c Extender 25m P82B715 mit Video  (Read 1977 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi bin grad am rumbasteln, wie ich mit dem I²C-Bus möglichst weite Strecken überwinden kann. Bin bis jetzt auf 25m gekommen. Hab ma nen Video gemacht(nix besonderes).
Werd meine Schaltung morgen noch nachreichen falls einer ohne viel suchen nachbastel will.
Hier erst mal das Video:

Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21255
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die maximale Länge der I2C Schnittstelle hängt von der Kapazität und den PullUP-Widerständen ab.
Die Kapazität hängt vom Typ des Kabels, welche Leitungen Du verwendest, und von der Länge ab.
Außerdem kann I2C mit verschiedenen Geschwindigkeiten arbeiten. Je niedriger desto länger kann der Kabel sein.
Grüße Uwe
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jo.
Nun ich habe doppelt geschirmtes CAT5e Kabel 25m von Reichelt für rund 7,5€ gekauft. Das Kabel ist nicht schlecht.
Als Pullups habe ich 4,7k genommen. Müsste man halt je nach Länge/ Anzahl Busteilnehmer ändern (Pullups sollten größer werden wenn ich micht nicht irre).
Ich habe außerdem SDA mit GND verdrillt und SCL mit VCC verdrillt. Die Schirmung habe ich einseitig auf Masse gelegt.
Am Takt habe ich bisher noch nie "rumgespielt". Es sollte also der "Standarttakt" den der Arduino/ die Lib vorgibt.

@ Uwe hab ma gelesen das manche noch Kondensatoren von SDA und SCL auf GND legen. Weisst du was das für ein Sinn hat?
« Last Edit: August 03, 2011, 04:50:57 pm by bytzmaster » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21255
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der PullUp muß kleiner gewählt werden je größer die Kapazität (Länge des Kabels) ist. Die Grenze ist 1,5kOhm.

Das Problem ist, daß der über die Kabellänge verteilte Kondensator zwischen SDA bzw SCL und Masse über den über die Kabellänge verteilte Widerstand des Kabels entladen werden muß um ein LOW signal zu erhalten bzw über den Pullup-Widerstand geladen werden für ein HIGH-Signal. Ist die Summe der Kondensatroren und Widerstände zu groß ist die Ansiegszeit der Flanken zu flach um ein ordentliches H-L Signal zu erhalten und die Schnittstelle funktioniert nicht mehr.

Ein zusätzlicher Kondensator verschlechtert eigentlich alles.

Viele Grüße Uwe
Logged

0
Offline Offline
Full Member
***
Karma: 2
Posts: 108
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke für die Aufklärung!

Deswegen find ich den Chip ja so Klasse, er erhöht die zulässige Kapazität von 400 pF auf 3000 pF. Ich werd die Tage auch ma testen ob ich das Klabel verlängern kann nach den Möglichkeiten die du oben geschrieben hast(Takt, R verringern) und ob man die P82B715 mehrfach nehmen kann um die zulässiger Kapazität noch weiter zu erhöhen(mit mehr mein ich mehr als 2(2 sind im datenblatt als Beispiel vorhanden)).
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21255
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Der I2C Bus wird über PullUp-Widerstande auf HIGH gezogen. Die Ausgänge der I2C Bausteine ziehen über einen Open Kollektor bzw Open Drain auf Masse. So können mehrer Ausgänge paralellgeschaltet werden. Mehrere Slave gleich wie mehrere Master.

Der P82B715 übersetzt die Standart I2C in ein "Subnetz" mit Ausgängen die einen höheren Strom auf Masse schalten kann (max 30mA entspricht 170 Ohm pullup). So kann ein größere Kapazität geschaltet (geladen oder entladen) werden. Dieses Subnetz funktioniert nur zwischen 2 oder mehr P82B715 ( so ähnlich wie ein MAX232 oder MAX485 der eine serielle Schnittstelle mit TTl Level auf andere Level / Verbindungen übersetzt und so größere Weiten überbrücken kann). Eine Größere Kapazität heißt ein längeres Kabel.

Ich glaube nicht daß man mehrere "Subnetze" in Reihe schalten kann:
I2C --- P82B715 --- P82B715 --- I2C --- P82B715 --- P82B715 --- I2C

Grüße Uwe
« Last Edit: August 03, 2011, 06:20:34 pm by uwefed » Logged

Pages: [1]   Go Up
Jump to: