Forum: Mikrocontroller und Digitale Elektronik Problem mit I²C-Bus und dem Extender f. lange Leitungen


von A. Arndt (Gast)


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

von Andreas K. (oldcoolman)


Lesenswert?

Hallo,
also ich hab mal ein i2c um die 17 Meter verlängert mit dem
aktiven Pullup von big C (unter c-control rubrik).
den hab ich wenige cm vom controller entfernt parallel geschalten.
der Temperatursensor war dann weit weg(ca 17m)montiert.

Gruß
Andi

von A. Arndt (Gast)


Lesenswert?

Hallo,

konnte nicht ganz folgen, welche Teile wurden genau wo und wie 
angeschlossen...

Also wurde der Extender direkt am Master angeschlossen und kein 
I²C-Device paralell zum Master direkt angeschloosen ?

Gruss
A. Arndt

von labelohase (Gast)


Lesenswert?

 die 2 Widerst. müssen auf der L = long sein (ist Verbindung
zum nächsten 82B715) und darf kein
anderes IC angeschlossen sein.
l-hase

von A. Arndt (Gast)


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

von Andi (Gast)


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





von OLLI (Gast)


Lesenswert?

Hi Andi,

für jede Platine brauchst du einen Extender.

PL1 Extender  ----  PL2 Extender  ---- PL3 Extender usw.


Grüße OLLI

von Andi (Gast)


Lesenswert?

Ok super,

danke Olli!

von Manfred (Gast)


Lesenswert?

Hallo,

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

Gruß

Manfred

von Falk (Gast)


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

von Andi (Gast)


Lesenswert?

Naja also ich möchte auf jeden Fall nen Extender verwenden um auch die 
Geschwindigkeit nutzen zu können.

Hat jemand von euch Erfahrungen mit dem von mir oben beschriebenen 
Aufbau?! Bin mir nun immer noch nicht sicher ob ich einen oder zwei 
Extender pro platine brauche!?


Danke,

Andi

von Andi (Gast)


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

von Manfred (Gast)


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

von Andi (Gast)


Lesenswert?

So hier noch was Neues zum P82B715:

Schaut euch mal die Seite 5 an:

http://www.nxp.com/acrobat/applicationnotes/AN444.pdf

Laut der Schaltung reicht dann doch einer pro Platine, ich hänge ihn ja 
an die twi-pins und mache die Verkabelung (also vom "Vorgänger" zu den 
"Nachfolgern") erst nache dem Extender.

Werd das so jetzt mal testen.


Grüße,


Andi

von bascom (Gast)


Angehängte Dateien:

Lesenswert?

das könnte dir helfen

von T. A. (wambly)


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.

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
Noch kein Account? Hier anmelden.