I2C-Extender oder Repeater?

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!

Die I2C SCL- und SDA-Leitungen sollten auf keinen Fall miteinander verdrillt werden! Es könnte gut sein, sie jeweils mit einem Erdungskabel zu verdrillen, aber behalten Sie die Kapazität gegen Erde im Auge.

Antworten (3)

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".

Fand es ein bisschen seltsam, aber da der Hersteller der Encoder die Drähte auch schon auf einer Länge von etwa 12 cm verdrillt hatte, - aber wahrscheinlich um sie zu trennen, wenn sie mit dem Uart Rx/Tx verwechselt wurden, schien es irgendwie angemessen zu sein, zu folgen was bereits "implizit" war. Danke, dass du das für mich geklärt hast! Ich habe bereits die digitalen Signale von den Motorleitungen durch eine GND-Leitung getrennt, aber nicht zwischen jedem Paar, wie Sie erwähnen, sondern zwischen der Signalseite aller drei Paare und der anderen Seite, die die Gleichstrommotoren antreibt. Vielleicht reicht das nicht.
Es sollte wahrscheinlich ausreichen - aber wahrscheinlich ist ein starkes Wort :) Normalerweise würde man, wenn man diese Leitungen auf Leiterplatten auslegt, auch eine Massebahn zwischen SDA und SCL legen - wenn natürlich genug Platz vorhanden ist. Wenn Sie Gleichstrommotoren über ein separates Kabel antreiben können, wäre dies wahrscheinlich der beste Weg. oder schneiden Sie das Flachbandkabel zwischen Motorleitungen und Kommunikationsleitungen ab und legen Sie eine Abschirmung um die Kommunikationsleitungen. Versuchen Sie jedoch zuerst, wenn möglich, die I2C-Signalqualität und -form mit einem Oszilloskop zu überprüfen.
Ja, das ist wahrscheinlich das Beste, da ich das meiste davon bereits konstruiert habe und mit den I2C-Problemen konfrontiert bin, wie im Datenblatt erklärt, das ich unten eingefügt habe (in meiner Antwort an Ben Voigt) … das Dokument scheint entweder falsch zu sein, oder irreführend in Bezug auf Repeater etc. Nochmals vielen Dank!

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.

Danke für den Hinweis. Trotzdem ist die Länge von fast 2m kein Problem, da im Datenblatt der Encoder folgendes erwähnt wird:
„Der I2C-Standard schreibt vor, dass die Buskapazität für jede Leitung unter 10 pF gehalten werden sollte. Die Buskapazität ist wichtig für den korrekten Busbetrieb. Für die Verdrahtung der SDA- und SCL-Leitungen wird eine Twisted-Pair-Konfiguration empfohlen, um eine minimale Buskapazität sicherzustellen Die Gesamtlänge eines I2C-Busses induziert eine höhere Buskapazität als 10pF ein korrekter Betrieb kann nicht gewährleistet werden.In diesem Fall wird ein I2C-Repeater empfohlen.Als Faustregel ist I2C für Buslängen bis zu 1m ausreichend und sollte ohne Verwendung vermieden werden von Repeatern für längere Busse.“

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.