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