Forum: Haus & Smart Home IIC Bus - Abschirmung aber wie?


von Philipp (Gast)


Lesenswert?

Hallo zusammen,

ich habe mir mit Arduino eine kleine Steuerung für mein Haus gebaut(bin 
noch dabei). Leider habe ich nun ein Problem mit dem IIC-Bus.

Den Arduino trennen ca.4 Meter Kabel von einem Temperatursensor, das 
Kabel ist 6-Adrig und mit Folie und Geflecht geschirmt. Ich habe 2 Adern 
für "VCC"(5V), 2 für "GND" und die beiden Anderen für SCL/SDA verwendet. 
Die Schirmung habe ich anfangs nicht angeschlossen.
In den Testversuchen auf meinem Schreibtisch hat noch alles 
Funktioniert, nach Einbau der Anlage bekommen ich nun fehlerhafte Werte 
über den Bus zurück.

Habe dann versucht die Schirmung auf verschiedene Arten in den Griff zu 
bekommen. Zuerst Schirmung mit "Masse" verbunden (einseitig und 
beidseitig),
dann Schirmung mit "Erde" verbunden (einseitig/beidseitig), leider kein 
Erfolg. Egal wie ich die Schirmung verbunden habe, wenn ich das Geflecht 
berühre funktioniert alles einwandfrei.

Was könnte das Problem sein?

Gruß
Philipp

von TK (Gast)


Lesenswert?

Hallo,

hast Du Dir mal mit einem Oszi die Pegel angesehen?
Was kommt denn am Sensor an - was kommt am uC an?
Welche PullUps sind denn verbaut - bei dieser Entfernung
sollten die PullUps bei Größenordnung 1k8 liegen (bitte nicht mit 10k
kommen und sagen, es hat im Büro damit ja funktioniert).
Evtl. solltest Du mal Tests mit PullUps auf beiden Enden probieren.

Zur Schirmung:
Wenn Du schon die "harte" Verbindung getestet hast, und das nichts 
bringt,
gibts ja noch die "weiche" Verbindung mit 1n/1kV und 1M/1kV parallel 
zwischen
Schirm und GND.
Evtl. kommst Du damit weiter.

Gruß
TK

von Philipp (Gast)


Lesenswert?

Hallo TK,

Funktioniert nun, leider habe ich kein Oszilloskop zur Hand. Ich hatte 
für die PullUps 4,7k verwendet, habe das auf 1,8k geändert und auch auf 
beiden Seiten versucht, leider nichts gebracht.

Dann habe ich die Schirmung auf einer Seite mit einem 1nF C und einem 
1Meg R gegen "GND" gezogen und jetzt funktionierts.

Hoffe das ist jetzt richtig so?

Vielen Dank!

Gruß
Philipp

von John Doe (Gast)


Lesenswert?

I2C ist eigentlich nicht für solche entfernungen entwickelt worden.

Was noch helfen kann ist die Reduzierung der Geschwindigkeit.
I2C funktioniert auch noch mit wenigen Hz Clock-Speed.

Oder etwas eleganter mit einem I2C Bustreiber.
Hier gibt es verschiedenste ICs die es ermöglichen auf etliche Meter 
Kabel zu treiben.

Das Hauptproblem ist die Kapazität des Kabels. Je länger das Kabel, 
desto höher ist die Kapazität des Kabels. Das Muss der Pullup hochziehen 
bzw der Controller mit dem Port-Pin runterziehen können.

Irgendwann kommst du an die Grenze des Ports und da helfen die 
Bustreiber weiter.

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.