PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I²C / TWI-Hardware



Gucky
24.02.2008, 18:36
Hallo,
Ich habe im Forum und in der WIKI sehr viele Details zur Programmierung dem I²C-Bus gefunden, aber leider keine Angabe über die maximale Entfernung der einzelden Geräte, die mit dem Bus verbunden sein können.
Verschiedene Controller, die in einem Gehäuse sitzen sollten kein Problem sein, aber wie sieht das ganze aus, wenn ich unter einer Platte (z.B. 2x2m) mehrere Controller mit Draht verbinde ?

Kann mir jemand dazu was sagen ?

Gruß und Danke im vorraus, Gucky. O:)

Edit: Wer Rechschreibfehler findet, darf sie behalten. (I²E im Titel). Sorry.

pongi
24.02.2008, 18:48
2x2 m sollten schon drin sein, vor allem, wenn die Übertragungsrate nicht zu gross sein muss. Ansonsten würde ich eher zum UART raten.

deSilva
24.02.2008, 19:15
Sehr präzise :-)


Pi mal Daumen so: Die (Leitungs-) kapazitäten musst Du durch einen Pull-Up ausgleichen, dies solltre die Flanken nicht zu stark verzerren... Bei 100 kHz (Low speed) könnte man sagen
100 pF -> 10k
200 pF -> 4k7
400 pF -> 2k2

Danach geht eher nix mehr weil natürlich LOW auch noch getrieben werden muss.

Wenn Du "echte" Leitungen hasst, solltest Du 100pF pro Meter rechnen, zusätzlich zu den Pins mit 10pF/Pin. Bei mehrlagigen Platinen ist das bedeutend komplizierter.

Ich würde die Widerstände auch aufteilen: 1/2 ans eine Ende und 1/2 ans andere....

Bei längeren Leitungen würde ich auch einen differenziellen Bus empfehlen..

Gucky
24.02.2008, 19:23
Danke für die schnellen Antworten.

Die Übertragungsrate ist nicht sehr groß, es werden immer nur ein paar Bytes in mehreren Sekunden Abstand übertragen.

Gibt es eventuel Hardwaretreiber, um die Entfernung z.B. auf ca. 10m zu erhöhen ?

Gruß Gucky. :wink:

deSilva
24.02.2008, 19:31
Ja, Du kannst "Repeater" (z.B. PCA 9517 ca 1,50 Euro) einbauen - vielleicht alle 3 Meter? Aber ob sich das dann noch lohnt???

P.S.: ich hatte oben noch was nachgetragen..

Gucky
24.02.2008, 20:24
@deSilva und @pongi
Danke, werde ich mir die Signale mal mit einem Scope ansehen und dann entscheiden, was ich letzendlich mache.

Gruß Gucky. :wink:

Ratber
24.02.2008, 20:40
@Gucky

Wie du ja sicher schon herausgelesen hast gibt es aus gutem Grunde keine Verbindlichen Längenangaben.

Wichtig ist die maximale Kapazität der Verbindung und die ist stark von der Bauart abhängig.
Einige erreichen die 400pF schon nach wenigen Zentimetern und andere erst weit im zweistelligen Bereich oder sogar noch mehr.
Gutes Netzwerkkabel zb. bringt schon was.

Du hast also die Wahl entweder die Länge der Verkabelung an den Kapazitäten zu orientieren oder den Bustakt abzusenken (Meist braucht man ja nicht die volle Geschwindigkeit) um mehr Strecke zu bekommen.

Differenzielle Busse oder Leitungstreiber bringen mehr Strecke und Leistung aber kosten wieder etwas.

Hallimasch
25.02.2008, 06:14
Hallo,

ich möchte im Autp über I2C Temperaturen messen, die Kabellängen würden 1,5 bis 2 m betragen ....

Sind da Störungen zu erwarten ?

Besonders abgeschirmte Kabel sind kein Problem ...

Danke und Gruß

Hallimasch

Ratber
25.02.2008, 08:57
Im Kfz sind immer störungen zu erwarten.
Deswegen sollte man dort digitale Elektronik besonders gut schützen.

Es gibt natürlich immer einige die das nicht glauben.
Diese mögen sich mal die betreffenden Basteltopics hier ansehen mit welchen Problemen dort gekämpft wurde.
Es geht dabei meist um die mangelhafte entstörung.


Was dein Problem betrifft.
Das ablesen der Temperatur muß ja nicht 10-100x die Sekunde erfolgen, das wäre unsinnig, also kann der Bustakt stark abgesenkt werden.
Damit ist die Leitungslänge kein Problem mehr und störungen eleminiert man mit guter Schirmung wie du schon richtig gesagt hast sowie einigen zusätzlichen elementen am Bus.

Hallimasch
25.02.2008, 09:09
Im Kfz sind immer störungen zu erwarten.
Deswegen sollte man dort digitale Elektronik besonders gut schützen.

Es gibt natürlich immer einige die das nicht glauben.
Diese mögen sich mal die betreffenden Basteltopics hier ansehen mit welchen Problemen dort gekämpft wurde.
Es geht dabei meist um die mangelhafte entstörung.


Was dein Problem betrifft.
Das ablesen der Temperatur muß ja nicht 10-100x die Sekunde erfolgen, das wäre unsinnig, also kann der Bustakt stark abgesenkt werden.
Damit ist die Leitungslänge kein Problem mehr und störungen eleminiert man mit guter Schirmung wie du schon richtig gesagt hast sowie einigen zusätzlichen elementen am Bus.

Danke für Antwort.
Wenn aller 2 bis 3 Sekunden die Temperaturen abgefragt werden reicht völlig aus.

Gruß Hallimasch

deSilva
25.02.2008, 10:14
Du meinst also, da guckt einer und sagt; "Ah, der Hallimasch, der war soo brav, der hat schon 3 Sekunden keine Daten mehr angefordert, da wollen wir nun aber mal ganz besonders genau sein" :-)

Das Problem ist der kurze Burst, in dem ein Dutzend Bits geschickt werden; der dauert üblicherweise (bei 100kHz) einige 100µs. Wenn das gestört wird, dann ist es eben weg. Also häufiger abfragen ("Redundanz") und Fehlererkennung einbauen. Diese 100µs zu verlängern durch reduzierte Taktfrequenz ist eine zweischneidige Sache, das kann sogar umgekehrt besser sein!

ZU schnell ist auch nicht gut, weil Du Leitungskapazitäten füllen musst. Viel Strom ist gut, also eher mit 2k2 als mit 10k Widerständen arbeiten. Dann hast Du Induktivitäten: Steile Flanken sind zwar gut, aber wenn's denn nicht sein muss, dann lieber doch etwas flacher (=Dämpfung); da können dann Längswiderstände Wunder wirken (100 Ohm oder so).

Das ist doch einfach alles nur gesunder Menschenverstand :-)