Forum: Mikrocontroller und Digitale Elektronik Störungen durch Übersprechen auf langem Kabel verringern I2C


von Martin S. (martinst)


Angehängte Dateien:

Lesenswert?

Hallo,
ich betreibe einen Sensor über ein längeres ungeschirmtes Kabel an einem 
ATmega. Der uC treibt die SCK-Leitung, die SDA-Leitung wird am uC mit 
einem 1k pull-up auf 5V gezogen. Sowohl der uC als auch der Sensor 
können die Leitung auf GND ziehen. Der Sensor funktioniert meistens, 
jedoch sind auf SDA massive Störungen von SCK eingekoppelt (und 
andersrum, nur seltener).

Ich habe eine LTSpice-Simulation erstellt, in der nur der uC SDA treibt, 
sie stimmt mit der Realität recht gut überein, siehe Anhänge.

Wie kann das kapazitive Übersprechen verringert werden?
Ein Widerstand in der SCK-Leitung bringt leider nicht den gewünschten 
Erfolg.

Gruß Martin

von Georg A. (georga)


Lesenswert?

> Wie kann das kapazitive Übersprechen verringert werden?

Anderes Kabel nehmen ;)

Man könnte die Anstiegszeiten von SCLK etwas langsamer machen, also 
einen C ans Signal. Gefühlt aber irgendwie Pfusch :)

Oder mit einem langsamen Weak-Keeper das Signal virtuell niederohmiger 
halten...

von Frank K. (fchk)


Lesenswert?

Ah! Da hat mal wieder jemand gelernt, dass man mit I2C keine längeren 
Strecken überbrücken sollte.

Ein Satz PCA9600 oder P82B96 könnte das Design retten.

fchk

von derp (Gast)


Lesenswert?

Hier ein paar Sachen, die ich bei langen I²C-Leitungen gelernt hab:

- kleiner C zum glätten bringt einiges (max. 400pF pro Leitung sind es 
glaub ich laut der Spec)

- geringe Pull-Ups verwenden (hast du ja schon, wobei 1k schon arg wenig 
sind)

- bei Flachbandkabel zwischen den SCL und SDA andere Leitungen legen, z. 
B. +5V GND. Hier habe ich auch mal von einer optimalen Anordnung 
gelesen. Leider aber wieder vergessen...

- geringere Datenrate verwenden, wenn möglich

von Simon K. (simon) Benutzerseite


Lesenswert?

derp schrieb:
> Hier ein paar Sachen, die ich bei langen I²C-Leitungen gelernt hab:
>
> - kleiner C zum glätten bringt einiges (max. 400pF pro Leitung sind es
> glaub ich laut der Spec)

400pF insgesamt. D.h. Kabelkapazität, und Summe der Kapazität der 
Busteilnehmer. Viele Chips bieten eine Slew-Rate Begrenzung für I2C an.

von Christoph H. (christoph_b)


Lesenswert?

hatte ein ähnliches Problem bei meinem Roboter.
Habe den ISL33001 von Intersil verbaut. Dazu noch je einen kleinen Kondi 
zum glätten. Die Pullups habe ich von 1.2k auf 3.3k geändert.
Seit her keine Probleme mehr.

von Falk B. (falk)


Lesenswert?

@ Martin St. (martinst)

>Wie kann das kapazitive Übersprechen verringert werden?

Kapazität verringern. SCL und SDA jeweil mit einer eigenen Masseader 
verdrillen, sprich man nimmt gleich zwei verdrillte Paare. GGf. noch 
eine Schirmung aus Folie um jedes Paar.
Ausserdem sind I2C Ausgangstreiber bewußt langsam, die schalten nicht 
wie ein AVR-Pin in 5ns (!) sondern eher in 100-500ns. Also einen echten 
I2C Treiber dazwischen schalten.

von Marco S (Gast)


Angehängte Dateien:

Lesenswert?

In der Tat. Slewrate ist alles, um Störungen zu erzeugen. Bei mir haben 
sich in der Praxis durch Einsatz von Stromquellen die Störungen schon 
mal drastisch reduziert. Ist zwar Billiglösung, dafür aber in jeder 
Grabbelkiste vorhanden.

von Horst H. (horst_h44)


Lesenswert?

Wenn auf der Empfängerseite die Leitung quasi offen ist, wirkt sie wie 
eine Antenne und schnelle Flanken von anderen Leitungen werden 
einkoppelt. Leitungsreflexionen kommen noch dazu. Mehr zu 
Übertragungsleitungen: 
http://ichaus.biz/upload/pdf/ei09_21_green_027.pdf . Falls der 
SPI-Daten- und Taktausgang genügend Strom kann würde ich auf der 
Empfängerseite mit dem Leitungswiderstand (ca. 120 Ohm) abschließen, 
oder so nahe wie es der Treiber hergibt.

von Falk B. (falk)


Lesenswert?

@ Horst H. (horst_h44)

>eine Antenne und schnelle Flanken von anderen Leitungen werden
>einkoppelt. Leitungsreflexionen kommen noch dazu. Mehr zu
>Übertragungsleitungen:

Schon mal auf's Thema geschaut? Es geht um I2C, das ist eher 
langsam, das Thema Wellenwiderstand greift hier nicht.

>SPI-Daten- und Taktausgang genügend Strom kann

Können sie nicht, weil I2C.

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.