I2C Kabellaenge

Hi,

ich habe hier einen LM75 (Temperatursensor) mit I2C-Schnittstelle an einem Atmel haengen der auf Anfrage die Temperatur ausliest und ueber RS232 zur Verfuegung stellt. Die beiden sind ueber ein Patch-Kabel miteinander verbunden. Die Spannungsversorgung zum LM75 wird auch mit uebertragen, also 4 Draehte. Auf eine Laenge von bis zu 5m funktioniert das auch noch recht gut, darueberhinaus klappt es manchmal und manchmal nicht. Mir ist auch klar dass der I2C nicht fuer sowas gedacht ist, aber gibt es eine einfache Moeglichkeit da vielleicht nochmal 3-5m herauszuholen? Die Pullups (1k) vom Bus sind auf der Seite vom LM75. Ich koennten den Atmel naeher an die Messtelle bringen und das Seriell-Kabel verlaengern, allerdings brauche ich dann ein extra Netzteil. Hat jemand eine Idee? Bin momentan planlos...

Danke

Olli

Reply to
Oliver Joa
Loading thread data ...

Oliver Joa schrieb:

Man könnte die Versorgungsspannung übers RS232-Kabel übertragen, wenn da noch Adern frei sind und der Stromverbrauch sich in Grenzen hält.

Michael

Reply to
Michael Rübig

Oliver Joa schrieb:

Die Kapazit=E4t des Kabels begrenzt die Datenrate, denn das ganze ist ein RC-Tiefpass. Bei 10m Kabel hast Du vielleicht 1000pF Kabelkapazit=E4t. Zusammen mit den 1kOhm Pullups ergibt das eine Tiefpassfrequenz von etwa 150 kHz. Das hei=DFt nicht, dass es dann mit 100kHz Taktfrequenz noch gehen w=FCrde, da die kapazititve Kopplung nicht nur gegen GND (Tiefpasswirkung) sondern auch der Leitungen untereinander (=DCbersprechen) stattfindet, die Effekte addieren sich also von ihrer Wirkung.

Die Reichweite l=E4sst sich durch Verringerung der I2C-Taktfrequenz erh=F6hen.

Die St=F6rsicherheit ist jedoch problematisch bei Patchkabel. Besser w=E4re es (aus Sicht der St=F6rfestigkeit), einzeln geschirmte Adern zu nehmen (z.B. Mikrofonkabel), um das =DCbersprechen zu minimieren. Leider haben geschirmte Leitungen eine noch h=F6here Kapazit=E4t als Patchkabel, Du m=FCsstest also die Datenrate schon recht niedrig legen. Ein brauchbarer Ausgangswert f=FCr Tests k=F6nnten z.B. 30 kHz sein. Daf=FCr hast Du dann die Chance, dass es dann zuverl=E4ssig funktioniert.

Das bringt keine Verbesserung. Pullups direkt an den Atmel reicht.

Gru=DF Thorsten

Reply to
Thorsten Wahn

Am Wed, 17 Sep 2008 09:48:56 +0200 schrieb Oliver Joa:

Je eine Ader mit Masse verdrillt für die Signalleitungen nehmen?

Falls man an die Firmware kommt: langsamer auslesen?

Lutz

--
Mit unseren Sensoren ist der Administrator informiert, bevor es Probleme im 
Serverraum gibt: preiswerte Monitoring Hard- und Software-kostenloses Plugin 
auch für Nagios - Nachricht per e-mail,SMS und SNMP: http://www.messpc.de
Neu: Ethernetbox jetzt auch im 19 Zoll Gehäuse mit 12 Ports für Sensoren
Reply to
Lutz Schulze

Oliver Joa schrieb:

I2C ist spezifiziert bis 400pF Leitungskapazität, darüber wird es haarig. Wenn es nur um die Verdopplung geht, kannst du ein I2C-extender in die Mitte deiner Leitung reinpacken. Mehr geht es nicht, sie lassen sich nicht kaskadieren. So ein Teil ist z.B. PCA9515A in SO8 Gehäuse.

Waldemar

Reply to
Waldemar Krzok

Waldemar Krzok schrieb:

Einfach einen 82B715 (gibt auch noch andere ähnliche Typen) an beiden Enden (spiegelverkehrt also) einbauen. Die Pull-up Widerstände können dann sehr klein ausfallen. Wird so im Mobilfunkbereich gemacht. Da gibt es eine Firma, die i2c _zwischen_ den Geräten benutzt.

Dazu kann man dann noch die beiden Versorgungsleitungen als Abschirmungen benutzen, also Mikrofonkabel stereo mit einmal VCC und einmal GND beschalten. Die Versorgungsspannungsleitungen an beiden Enden mit Kondensator ordentlich koppeln!

Taktrate absenken soweit es praktikabel ist. Bus-Reset einplanen mit Wiederholung der Übertragung - ist bei einem Thermometer als Datenquelle ja kein Problem.

Bei der Abart SMbus aufpassen, das es Timeouts gibt!

- Henry

--
www.ehydra.dyndns.info
Reply to
Henry Kiefer

Ich hab an iic 6 LM75 mit insgesammt ca 20 m (10m+5xrest) Leitung geschafft. Allerdings recht langsam(3 kilobit) mit den Pullups beim Master und 100nf in der Versorgung bei den LM75. Die Leitung war ein abgeschirmtes 0.5er Klingelkabel.

Das ganze ist aber schon etwas über der Grenze so dass man öfters lesen und das Ergebnis auf Plausibilität prüfen sollte.

--
MFG Gernot
Reply to
Gernot Fink

Es klappt jetzt scheinbar. Ich habe einfach einen Watchdog aktiviert. Bleibt die I2C-Kommunikation haengen wird der atmel restartet, danach gehts wieder weiter. Der Reset stoert nicht weiter, da sowieso jede Minute abgefragt wird. Ich habe auch versucht die Geschwindigkeit von

100Khz auf 15Khz zu reduzieren, was aber alleine nichts gebracht hat. Die Fehler sind nach wie vor aufgetreten, zwar nicht so häufig aber trotzdem gelegentlich.

Danke für die Hilfe

[...]

Gruss

Olli

Reply to
Oliver Joa

Hallo!

Da gibts so einen Schaltung um den Bus aktiv per Stromquelle zu terminieren. Erzeugt schön steile Flanken. Zusammen mit sehr niedriger Taktrate hab ich damit mal DS1632-Temperatursensoren über 30m abgefragt. Natürlich muss da auch noch eine Plausibilitätsprüfung und Vergleich von zwei Messwerten rein. Dann gings aber super.

formatting link

Gruß Thomas

Reply to
Thomas Stegemann

Muß es zwingend I2C und der LM75 sein? Bei SPI (z.B. LM70/71/74 oder Max1618 oder so) wäre das einfacher zu realisieren, z.B. mit RS422/485-Treibern.

Mit freundlichen Grüßen

Frank-Christian Krügel

Reply to
Frank-Christian Kruegel

Na die feine Art ist das nicht. Da würd ich ja eher nocht den IIC per bitbang realisieren. Da gibts keine Hänger.

--
MFG Gernot
Reply to
Gernot Fink

Es gibt allerdings i2c-Peripherie-ICs, die sich gerne dauerhaft aufhängen und nur mit einem VCC-wegnehmen wiederbelebt werden können. Maxim ist so ein Kandidat.

- Henry

--
www.ehydra.dyndns.info
Reply to
Henry Kiefer

Thomas Stegemann schrieb:

100R Pull-Up ist zu wenig! Es gibt aber solche Chips u.a. von LTC.

- Henry

--
www.ehydra.dyndns.info
Reply to
Henry Kiefer
[...]

was ist ein IIC und was ein bitbang?

Danke

Olli

Reply to
Oliver Joa

IIC = I2C

Bit banging ist, wenn man das Protokoll per Software implementiert und nicht die dafuer vorgesehene Hardware auf dem Chip (so sie vorhanden ist, nennt sich UART) benutzt:

formatting link

Das tut man meist nur, wenn der UART entweder kein I2C kann, schon besetzt ist, oder eine Macke hat, die man nicht anders umschiffen kann.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Hatte ich bisher noch nicht gehabt. Bus-Hänger hatte ich allerdings auch schonmal gesehen. Da hat bisher immer geholfen, ein paar Stop-Conditions per Software zu generieren, also einfach SDA ein paar mal zu wechseln, während SCL High ist.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Für den Fall dass SDA von enem slave auf low gehalten wird muß man natürlich vorher mit SCL klimpern bis SDA high wird.

--
MFG Gernot
Reply to
Gernot Fink

Stimmt, ich glaube es war auch SCL, was ich gewechselt hatte, ist schon was her das Projekt. Gibt sogar Chips, die sowas machen:

formatting link

was nicht gerade für I2C spricht, wenn es für sowas einen Markt gibt. Vielleicht hat Jörg recht und SPI ist besser, auch wenn es mehr Pins braucht. Ich kann zumindest bestätigen, daß ich noch nie einen Chip mit SPI gesehen habe, wo der SPI-Bus hängengeblieben wäre, was wohl an der ziemlich einfachen Implementierbarkeit von SPI liegt. Und bei entsprechend niedrigen parasitären Kapazitäten, müsste es ja auch prinzipiell weniger Strom brauchen als I2C. Nachteil ist das fehlende Acknowledge von der Empfängerseite, aber viele Chips bieten ja an, die Register wieder auszulesen, wenn die Kommunikation registerbasiert ist, sodaß man das damit verifizieren könnte.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Die Schaltung verrät ja nicht was "Vcc" ist. Wenn mans mit 5V versucht und CMOS-high 3,75V haben muß hat man schnellere Anstiegszeit bei reduziertem Pegel was ein fauler Kompromiß ist. Prinzipiell hilft die Schaltung aber gegen Kabelkapazität. Günstiger ist geregelte Spannung oberhalb 5V:

+--- 8V | R1 | E PNP B-- 5V C |

---+-----

Das Signal geht dann aber ca. 0,35V über 5V weshalb Diode nützlich sein kann:

+--- 8V | R1 | E PNP B-- 5V C | A K |

Ansonsten ist meine Meinung natürlich auch den LM75 & I2C rauswerfen.

MfG JRD

Reply to
Rafael Deliano

Eventuell wäre dann PNP-Stromspiegel a la BCV62 verwendbar.

Mfg JRD

Reply to
Rafael Deliano

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.