Ich verwende ein Arduino, um mit I2C-Magnetometersensoren zu kommunizieren. Die Teileliste und ein grundlegendes Blockdiagramm der Verdrahtung sind unten dargestellt:
Magnetometer HMC5883L:
TCA9548A I2C-Expander:
https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout/overview
Standard-4-Pin-Flachbandkabel:
https://www.digikey.com/product-detail/en/3m/8125-04-100/ML04G-100-ND/1107830
Rechteckiger Standard-6-Pin-Header:
https://www.digikey.com/product-detail/en/sullins-connector-solutions/PPTC061LFBN-RC/S7004-ND/810145
Standard-4-Pin-Header:
https://www.digikey.com/products/en?keywords=3M9449-ND
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Ich entschuldige mich für das Schema, aber ich musste es vereinfachen, um es klarer zu machen. Im Wesentlichen verwenden wir einen Arduino Uno, um mit einem I2C-Multiplexer von sechs Magnetometersensoren zu lesen. Der Multiplexer ist an einer für den Arduino hergestellten Leiterplatte befestigt, also sehr nahe daran, und die Sensoren sind in einem Abstand von 1,5 Metern über ein Flachbandkabel entfernt, das über Stiftleisten mit der Leiterplatte verbunden ist. Das Schema zeigt nur einen Sensor, da alle sechs es unordentlich machen würden, aber die anderen Sensoren sind auch auf die gleiche Weise angeschlossen.
Nach dem, was ich über I2C gelesen habe, gibt es einige Probleme mit Übersprechen, und gemäß einer anderen gestellten Frage wird empfohlen, VDD und GND zwischen SDA und SCL zu platzieren, um das Auftreten von Übersprechen zu reduzieren und / oder zu verhindern. Der HMC5883L versagt in dieser Hinsicht, also habe ich mit meinem Flachbandkabel die Drähte gekreuzt, sodass VCC und GND zwischen SDA und SCL liegen. Es ist nicht die eleganteste Lösung, aber es ist die einfachste Lösung. Die Kreuzung tritt nur am Sensorende des Kabels auf (weniger als 1 Zoll), nicht in der Mitte, aber ich habe mich gefragt, ob dies ein Problem mit der I2C-Kommunikation sein würde. Um ehrlich zu sein, habe ich dies mit zwei Sensoren getestet, daher bin ich ziemlich zuversichtlich, dass diese Konfiguration mit allen 6 Sensoren funktionieren wird, aber ich wollte fragen, nur für den Fall, dass ein Problem auftreten könnte, das ich nie in Betracht gezogen habe.
Falls Sie sich fragen, musste ich die 10k-Pull-up-Widerstände auf den SDA- und SCL-Leitungen hinzufügen, damit die Sensoren aus 1,5 Metern Entfernung gelesen werden konnten. Als ich es zunächst auf einem Steckbrett aufgestellt hatte, reagierten sie nicht, und erst als ich die Widerstände hinzufügte, konnten sie aus großer Entfernung gelesen werden. Die Sensoren selbst haben 10k-Pull-up-Widerstände, aber ich nehme an, dass das Verringern des Widerstands eine größere Entfernung ermöglichte. Die Widerstände sind 10k SMD-Widerstände, die sich auf der Leiterplatte selbst befinden.
Was ist Ihre I2C-Geschwindigkeit? Je nach Geschwindigkeit und Entfernung kann I2C für einen Hochgeschwindigkeitsbus mit niedriger Impedanz bis auf 1k sinken. Siehe http://www.ti.com/lit/an/slva689/slva689.pdf
Was genau meinst du mit:
Die Kreuzung tritt nur am Sensorende des Kabels auf (weniger als 1 Zoll), nicht in der Mitte
Durch das „Kreuzen“ der Drähte besteht die gute Praxis darin, die beiden I2C-Leitungen nicht nebeneinander laufen zu lassen. Dies ist beispielsweise eine schlechte Vorgehensweise für ein langes Flachbandkabel:
- VCC
- Masse
- SDA
- SDL
Eine "bessere" Art, Dinge zu tun:
- VCC
- SDA
- Masse
- SDL
Auf diese Weise schirmt GND SDA von SDL ab. GND selbst kann jedoch Rauschen erzeugen, wenn die Umgehung auf beiden Seiten des Kabels nicht ausreichend ist.
Der beste Weg wäre, zusätzliche Drähte zu haben, um die Signale abzuschirmen:
- VCC
- Masse
- SDA
- Masse
- SDL
- Masse
Dies wird beispielsweise bei allen IDE-Flachbandkabeln verwendet.
Zum Hauptthema Ihrer Frage, dem möglichen Übersprechen, habe ich keine Meinung, da ich keine Erfahrung damit habe.
Aber ich habe einen Kommentar zu den Pull-up-Widerständen.
Aus dem Datenblatt des Teils geht meines Erachtens hervor, dass Sie auf beiden Seiten des TCA9548A Pull-up-Widerstände benötigen. Es gibt auch eine relevante Frage auf dem offiziellen Support-Kanal von TI, wo TI sagt, dass Sie Widerstände auf beiden Seiten haben müssen, auf den Upstream- und den Downstream-Kanälen.
Trotzdem hast du recht, wenn du sagst
Ich nehme an, dass die Verringerung des Widerstands eine längere Entfernung ermöglichte
Es trifft hier nicht zu, aber es ist allgemein wahr. Wie Sie im Datenblatt des Teils, Abschnitt 9.2.2, sehen können, wird der maximal zulässige Pull-up-Widerstandswert definiert durch
Je länger die Drähte, desto höher die Buskapazität und desto niedriger ist der maximale Widerstand, den Sie verwenden können.
Adam Lawrence
glen_geek
SamGibson
SamGibson
BesteQualitätVakuum
Das Photon
Das Photon
SamGibson
BesteQualitätVakuum