Ich entwickle ein Dolly-Pan-Tilt-System, bei dem ein Arduino über I2C mit drei unabhängigen Drehgebern zur Positionierung verbunden ist. Nachdem ich einige Beiträge auf dieser Seite und anderswo gelesen habe, bin ich mir bewusst, dass I2C eine Beschränkung hinsichtlich der Entfernung der Kabel für eine korrekte Signalübertragung hat. Meine Probleme/Fragen sind folgende:
SDA- und SCL-Drähte sollten verdrillt sein, obwohl einige denken, dass dies nicht nötig ist? Ich überlege, für jede Funktion, Dolly, Schwenk- und Neigebewegung, einen verdrillten SDA/SCL zu verwenden, die sehr dicht beieinander auf einem 24-poligen Flachbandkabel sitzen. Verdrehen ist also wahrscheinlich ausreichend sowie ein I2C-Repeater, da der Abstand zwischen dem Arduino-Controller für den Dolly-Encoder etwa 2,20 m beträgt, der Abstand für den Panning-Encoder etwa 1,80 m beträgt und der Tilt-Encoder mit 0,60-0,70 cm näher liegt .
Ich habe jedoch gesehen, dass sowohl I2C-Repeater als auch Extender erwähnt wurden: Welcher ist besser geeignet, da beide das Gleiche zu tun scheinen?
I2C-Extender: P82B715
I2C-Repeater: CPC5902G von Clare
Was ist wirklich der Unterschied und die Vorteile zwischen den beiden ICs? Außerdem habe ich irgendwo gelesen, dass die Gesamtentfernung zwischen dem Master und seinen I2C-Slaves berücksichtigt werden sollte, in meinem Fall: Addieren Sie die oben genannten Entfernungen 2,20 m + 1,80 m + 0,70 m für alle drei Bewegungen und betrachten Sie sie nicht unabhängig voneinander zum Mikrocontroller; – ist das gültig?
Da leider alle drei I2C-Kabelpaare direkt nebeneinander liegen (Abstand zwischen jeder Leitung beträgt 1,26 mm) auf dem Flachbandkabel gefolgt von der GND-Leitung, kann es immer noch laut werden, da danach die Kabel die DC-Motoren antreiben +/- @ 12V und bis zu 2A. Ich habe meine Berechnungen bezüglich der Drahtkapazität für das Flachbandkabel AWG (28) basierend auf dieser Website durchgeführt und bin zu 38,51 pF für 2,5 m Kabel gekommen.
Das Datenblatt meiner Encoder fordert jedoch, unter 10pF zu bleiben, um einen korrekten Betrieb zu gewährleisten!
Woher kam die Idee, dass SDA- und SCL-Leitungen verdrillt werden sollten?
Dies ist neben dem Durchtrennen der Drähte das zweitschlechteste, was Sie der I2C-Kommunikation antun können.
Das Verdrillen ist für differentielle Leitungen wie CAN oder RS485/422 geeignet.
Bei ausreichend langsamer Kommunikation benötigen Sie wahrscheinlich nicht einmal einen Repeater/Extender auf 2,5 m. Vor allem, wenn es sich um ein 5V-System handelt. Drehen Sie einfach diese I2C-Leitungen auf.
Wenn Sie einige freie Leitungen auf dem Flachbandkabel haben, versuchen Sie, einige GND-Leitungen zwischen I2C-Paaren (nicht verdrillt) oder sogar zwischen SDA und SCL desselben Kanals zu platzieren.
BEARBEITEN: Es gibt eine Möglichkeit, wie Twisted-Pair für I2C nützlich sein könnte. Dort wird jedes der beiden Signale differentiell übertragen (eine Art 4-Draht-I2C).
Das Ansteuern von I2C-Bus-Signalen über Twisted-Pair-Kabel mit PCA9605 überträgt SDA bidirektional über ein Twisted-Pair-Kabel.
Das Senden von I2C-Bus-Signalen über lange Kommunikationskabel mit P82B96 oder PCA9600 erklärt die Vorteile der Übertragung von SDA mit einem unidirektionalen "4-Draht-Treiberverfahren".
Verdrehen Sie SDA und SCL nicht zusammen. Legen Sie ein Erdungskabel zwischen Motorversorgung und digitalen Signalen. Verlegen Sie die digitalen Signale nach Möglichkeit innerhalb einer Abschirmung. Möglicherweise müssen Sie zwei Kabel parallel verlegen – eines für digitale Signale und eines für den Motor. Stellen Sie außerdem sicher, dass Sie eine separate digitale und analoge Erdung verwenden. I2C ist SEHR empfindlich gegenüber Rauschen.
Ein Repeater hilft nicht, da er das gute Signal nur stärker macht, ohne das Rauschen schwächer zu machen. Wenn das Rauschen stark genug ist, um falsche Kanten zu verursachen, ist es auch stark genug, damit der Repeater Kanten erkennt und sie verstärkt.
Ein langes Kabel hat zwei Auswirkungen. Die erste ist eine zusätzliche Kapazität auf dem Bus. Die zweite ist die Ausbreitungsverzögerung. Beispielsweise fügt ein CAT-5-Kabel eine Kapazität von etwa 18 pF/ft hinzu und hat eine Ausbreitungsverzögerung von etwa 0,6 ft/ns.
Im Vergleich zu anderen Arten von digitalen Bussen ist I2C ziemlich langsam. Die zusätzliche Kapazität von einigen Metern Kabel ist wahrscheinlich vernachlässigbar, da Tabelle 6 der I2C-Spezifikation 3.0 besagt, dass Sie bis zu 400 pF auf jeder SDA/SCL-Leitung haben können.
Die Ausbreitungsverzögerungen, die durch ein paar Meter Kabel eingeführt werden, sind wahrscheinlich auch vernachlässigbar, da Tabelle 6 der I2C-Spezifikation 3.0 die Anstiegszeiten der SDA/SCL-Signale bis zu 1 us zulässt.
Insgesamt müssen Sie wahrscheinlich keinen Repeater hinzufügen.
Möglicherweise haben Sie Ihr Encoder-Datenblatt falsch gelesen. 10 pF ist die maximal zulässige Pin-Kapazität für jemanden, der einen Chip entwickelt, der mit dem Bus verbunden ist. Da Sie in Ihrem Fall den Bus selbst konstruieren und keinen Chip, müssen Sie wahrscheinlich nur die Gesamtzahl auf jeder Leitung unter 400 pF halten.
Ich würde SDA und SCL sicherlich nicht miteinander verdrehen, da es sich um vollständig getrennte digitale Signale handelt, nicht um ein differenzielles Paar. Wenn Sie sie zusammendrehen, werden sie kapazitiv gekoppelt und verursachen ein Übersprechen, das Ihre Kommunikation weniger zuverlässig macht (was bedeutet, dass Taktimpulse in Ihren Daten und Datenbits in Ihrer Uhr erscheinen).
Sie können jedoch SDA und SCL jeweils mit einem eigenen Erdungskabel verdrillen, wenn Sie dies wünschen. Dies verbessert die Rauschimmunität auf Kosten einer kleinen zusätzlichen Buskapazität.
Auch die Abschirmung von SDA und SCL kann hilfreich sein.
Wouter van Ooijen