Ich habe ein Projekt, bei dem I²C / I2C / TWI über eine lange Distanz (30 bis 40 Meter) durchgeführt werden muss.
Ich habe einige Leute gesehen, die vorgeschlagen haben, die Taktrate auf etwa 500 Hz zu senken, um die Auswirkungen der Kapazität einer so langen Leitung zu mildern, nehme ich an? Die von mir verwendeten Komponenten erfordern mindestens die Standardtaktrate von 100 kHz. Ich habe einige weitere Nachforschungen angestellt und unter den Antworten auf eine andere Frage einen Vorschlag zur Verwendung eines P82B96-Stufenschalters gefunden. Im Datenblatt geben sie Beispiele für ihre Verwendung auf Linien von sogar 100 Metern:
Ich habe eine andere Möglichkeit gefunden, Ebenen durch ein Breakout-Board von Adafruit zu verschieben , das nur ein Mosfet (bss138) mit zwei Pull-up-Widerständen ist (einer für jede Seite / Spannung). Sie haben die Idee vonEin Anwendungshinweis von NXP (AN10441) und zwei der dortigen Kanäle könnten folgendermaßen verwendet werden:
Jetzt frage ich mich: Welche Lösung ist die beste? Oder gibt es etwas, das ich übersehen habe? Und reichen 5 V aus, um eine gute Verbindung zu gewährleisten? Wäre die Verwendung einer noch höheren Spannung wie 12 V von Vorteil?
Antworten:
Ich denke, Sie sind mit so etwas wie dem NXP P82B96 auf dem richtigen Weg. Wenn Sie sich Abbildung 14 und den zugehörigen Text ansehen, wird im Datenblatt die Verwendung einer Kabellänge von bis zu 250 m mit Datenraten über 100 kHz erläutert.
Es gibt viele I2C-Temperatursensoren, mit denen Sie ohne Kalibrierung und ohne zusätzliche analoge Schaltkreise eine Genauigkeit von einigen Grad Celsius erzielen können. Da Sie die Daten ohnehin zur Verarbeitung zurückbringen, ist das Herausfiltern von Rauschen sehr einfach.
Wenn Sie sich Sorgen über die Verdrahtungskapazität machen, ist es möglicherweise besser, wenn Sie ein ungeschirmtes Twisted Pair anstelle eines abgeschirmten Kabels verwenden.
quelle
Sie können wahrscheinlich mit den DS18B20-Sensoren davonkommen, indem Sie ein abgeschirmtes CAT5-Kabel oder ein ähnliches Kabel verwenden. Es handelt sich nur um thermische Messungen. Wenn also einige Messwerte verfälscht werden, können Sie Ihr Programm robust genug machen, um damit umzugehen (es ist sowieso eine gute Praxis).
Für die Verwendung in Kettenrestaurants habe ich sogenannte RTU-Steuerungen (Rooftop Unit) entwickelt, die mit mehreren passiven Sensoren arbeiten (sie sind austauschbar) NTC-Thermistoren, für deren Komfortheizung keine Kalibrierung erforderlich ist). Es ist viel einfacher, Rauschen aus einem passiven Sensor herauszufiltern. Eine andere Reihe von Installationen (ein großer nordamerikanischer Automobilkomplex) verwendete Platin-Widerstandsthermometer mit Signalaufbereitern - sehr genaue und stabile Geräte. Sie sollten zuerst den Sensor auswählen und dann prüfen, wie er möglicherweise angeschlossen ist. Jede dieser Sensoroptionen ist für Ihre Anwendung geeignet (obwohl die RTDs möglicherweise zu hoch sind).
Falls es nicht klar ist, schlage ich eine "Stern" -Konfiguration von Sensoren um Ihren Prozessor vor.
Wenn Sie wirklich einen "Bus" (außer One-Wire oder I2C) verwenden möchten, benötigen Sie Smarts an den Enden, dh einen Prozessor in irgendeiner Form. Wenn Sie auf Hochtouren sind, sollten Sie drahtlose Sensoren verwenden, die über ein ISM-Band kommunizieren, das in Ihrer Region legal ist. Alternativ können Sie einen Sensor pro Pi verwenden und diese über Ihr WLAN-Intranet miteinander kommunizieren lassen.
quelle