Problem mit I²C-Bus und dem Extender f. lange Leitungen

Gast #566813
Lesenswert?

Hallo Leute,

ich habe ein wenig Problem mit der I2C-Technik.

Verdrahtung :

AVR ---> SDA + SCL Leitung Pull-Up 4,7 (5v) ---> RTC (DS1307) Auslesen 
läuft !

dazu nun an SCA / SDL den Extender 82B715 ran die Sx-Leitung und mit je 
330 Ohm auf Pufferleitung Lx gegen 5V (Ub).

Sobald ich an eine Leitung an den Pufferanschluss Lx anschliesse 
(anderes Ende offen an der Leitung !) klappt das Auslesen der Uhr (nur 
Wert 165 - für die eizelnen Stellen Minuten / Stunden usw.) nicht mehr. 
Die Leitung hat keinen Kurzschluss zueinander, auch nicht gegen den 
geerdeten Schirm. Die Leitung ist ca. 15m lang.

Wo müssen nun welche Pull-Ups hin, muss etwa pro Device immer ein 
Extender ran oder sollte es wie oben beschrieben klappen.

Am anderen Ende habe ich dann einen PCF8574 ,hinter dem Extender an den 
Sx-Leitungen, angeschlossen mit 4,7 k SCA / SCL gegen +5V, die 
Ansteuerung klappt, nur die Uhr direkt am "Master" geht dann nicht mehr, 
also entweder oder, ich hätte gerne beides.

Muss pro Extender immer die Puffenleitungen mit 330 upgepullt werden..?
Man wird das ein Stromverbrauch bei 12 Devices...

Wer hat hier Erfahrung und könnte mir helfen...

Gruss
A. Arndt
Gast #570218
Lesenswert?

Hallo,

ich habe etwas getüffelt :

Die Pull-Ups von 330 Ohm müssen nur 1x auf die "Pufferleitung" (Lx und 
Ly)

Am Master läuft nun die RTC mit je 330 Ohm in Reihe zum SDA und 
SCL-Anschluss der RTC und dann mit 22 kOhm Pull-Ups direkt an den 
82P715.

Die Pullups am Extender-Ausgang (nicht Puffer-Leitung) sind wohl auch 
abhängig davon, wieviele I²C-Devices an diesem 82P715 (Slave) hängen.

Würde mich gerne weiter austauschen mit Nutzern dieses I²C-Long Bus, 
also immer hierherein mit den Infos.

Gruss
A. Arndt
Gast #598286
Lesenswert?

Hab auch noch ne Frage zum I2C-Extender...

ich möchte mehrere Platinen (zwischen 3 und 10) per i2c verbinden 
(nacheinander, nicht sternförmig)


also: Platine 1 -------- Platine 2 --------... -------Platine n

da jede leitung bis zu 5m lang werden kann brauche ich die Extender. Nun 
werde ich aber aus dem Datenblatt des P82B715 nicht ganz schlau... 
(http://www.ortodoxism.ro/datasheets/philips/P82B715PN.pdf)

Laut Figure 3 auf Seite 4 müsste ich ja auf jeder Platine zwei (!) 
Extender verwenden?!

also PL1-Extender ------- Extender-PL2-Extender-------Extender-PL3-Ext.
usw...

Stimmt das so oder komm ich irgendwie auch günstiger weg?


Andi




Gast #601466
Lesenswert?

@ Manfred (Gast)

>ich denke es werden zwei Extender-Bausteine pro Plaine nötig sein, da
>die Kommunikation bidirektional ist.

Ich denke, es wird GAR KEIN I2C Expander benötigt. Ich hab hier gerade 
ne Platine "in der Mangel", dort ist ein I2C-Poti drauf. Da hängen an 
SDA 100nF (Ja einhundert Nanofarad) als EMV-Blocker dran, mit 10k 
Pull-Up. Über Sinn und Unsinn dieser Schaltung will ich hier nicht 
diskutieren, ist nicht auf meinem Mist gewachsen. Worauf ich hinaus will 
ist, dass die wunderbar per I2C kommuniziert, wenn gleich nur mit 500 
Hz. Das gleiche kann man dort auch machen. Der Master muss nur langsamer 
takten, dann sind lange Kabel auch kein Thema.

Allerdings muss man darauf achten, dass die Spannungsabfälle auf der 
Masse klein bleiben, sonst geht es nicht, eagl wie langsam. Also 
genügend dicke Kabel benutzen oder nur kleine Ströme zulassen.

MfG
Falk
Gast #601760
Lesenswert?

nachtrag:

also ich hab jetzt schon des öfteren gelesen, dass einer pro Platine 
reichen würde, im Datenblatt heisst es aber:

"The I2C bus capacitance limit of 400pF restricts practical
communication distances to a few meters. Using one 82B715 at
--> each end <-- of longer cables reduces the cable loading capacitance 
on
the I2C bus by a factor of 10 times and may allow the use of low
cost general purpose wiring to extend bus lengths."

Also bräuchte ich doch zwei pro Platine?!


Andi
Gast #601828
Lesenswert?

Hallo,

ich behaupte der Extender wirkt nur in eine Richtung. Wenn Platine A an 
Platine B sendet ist der Extender auf Platine A aktiv und der Extender 
auf Platine B hochohmig. Sendet B nach A ist es umgekehrt.
Wird nur ein Extender, z. B. auf Platine A verwendet, so muß dein 
Treiber auf Platine B die Leitungskapazität treiben. Begrentzt deine 
Geschwindigkeit.
Also zwei Extender nehmen.

Gruß

Manfred
#815288
Lesenswert?

Die I2C Konstandstromquelle hat bei mir leider nix gebracht. Obwohl am 
Oszi relativ gute Flanken erkennbar waren.

Jetzt hab ich 2 Linedriver (für 2-3m) gebastelt.
JCU hat jetzt eine Verbindung mit einem TMC222.

Am Master verwende ich die Pullup des Masters(ca. 47k) dann
82b715 (mit 5V) und 680_OHM PU----Leitung----680_OHM 82b715 (5V) 6k8 
pullup.


Zu obiger Klarstellung: 1 82b715 pro Platine.
Man baut einen "Master"-i2c Bus daran einen "Buffert"-I2c Bus und an 
diesen "BUS" hängt man die 82b715 "invers" an und erhält an jedem 
Standort einen "SUB-I2C" Bus(10cm bis einige Meter) als Stichleitung.

Der Exdender ändert nur die Impedanz und kann einige mA mehr treiben. 
Anfänglich dachte ich er setzt auch auf bis zu 12V um, aber leider gibt 
er die Vcc an den unbuffert I2C Bus auch ab. Das könnte dann den ein 
oder anderen IC zerstören.

Werde dann mal einen dritten kaufen, da ich eigentlich für die 2m ohne 
Buffer auskommen wollte, oder ich nehm den rs485 für die 15m in den 
zweiten Schaltschrank und mach mit dem Atmega als Intelligenz dort 
weiter. (Ist fast billiger als viel I2C kram und 1xSoftware).

Gruß  T.A.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren