Go Down

Topic: Arduino I2c Extender 25m P82B715 mit Video (Read 2219 times) previous topic - next topic

bytzmaster

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:

http://www.youtube.com/watch?v=U_lc3KHo1Yk

uwefed

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

bytzmaster

#2
Aug 03, 2011, 10:26 pm Last Edit: Aug 03, 2011, 11:50 pm by bytzmaster Reason: 1
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?

uwefed

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

bytzmaster

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)).

uwefed

#5
Aug 04, 2011, 01:15 am Last Edit: Aug 04, 2011, 01:20 am by uwefed Reason: 1
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

Go Up