Korrekte Erdung von 2 MCUs mit I2C

Ich baue ein mechatronisches System, das aus 1) XY-Gantry, gesteuert mit PIC32 und einem DIY-Motorschild und 2) Steuerbox mit PIC24, drei Potentiometern + Raum für Erweiterungen, normalerweise ziemlich weit entfernt, besteht. Die beiden Systeme müssen über eine XLR-Leitung verbunden werden, da es sich um eine Audioeinstellung handelt.

Beim Entwerfen des Systems waren zwei große Anliegen, kein Rauschen in den Rest des Systems einzuführen und das Erdschleifenproblem zu verstehen. Mein Reflex als EE-Student bestand darin, Operationsverstärker zu verwenden, um die Erdschleife zu unterbrechen. Der Plan war, die drei Signalleitungen von den Schleifern der Potis über xlr zu senden und die Masse der Steuerung zu verwenden, um die Differenzspannung am System zu messen. Ich habe mir große Mühe gegeben, etwas zu entwerfen, das mit einem echten Rail-to-Rail-Swing funktionieren würde. Funktioniert anständig gut auf der Bank, und ich denke, das würde für das endgültige System funktionieren, aber es scheint, als würde ich mich in den Typen verwandeln, der nur einen Hammer in der Werkzeugkiste hat.

Also denke ich an I2C. Bietet viel Platz für Erweiterungen und benötigt nur zwei Zeilen. Dies bedeutet möglicherweise, dass das System, das zwei XLR-Kabel verwenden sollte, jetzt möglicherweise nur noch eines benötigt. Also, hier ist das System, das ich mir vorstelle:

Geben Sie hier die Bildbeschreibung ein

Dieses Bild lässt die Pull-up-Widerstände am Bus UND den SHIELD des XLR weg. Ich plane Pull-ups an den drei Segmenten des Busses (Vorpuffer an beiden Enden und am Puffer). Der CLK wird relativ schnell arbeiten, daher möchte ich keine EMI in die audi0-Leitungen einführen Sie werden sich alle einen XLR-Bus teilen, also frage ich mich, wie ich das Gelände richtig anschließen kann. Ich habe die RANE-Notizen gelesen, und nach dem, was ich gesammelt habe, muss ich, um einen funktionierenden Faraday-Käfig herzustellen, beide Chassis mit der Kabelabschirmung verbinden, um ein vollständiges Gehäuse herzustellen.

Meine Verwirrung ist folgende: Die Gehäusemasse wird zu einer Verlängerung der Abschirmung, um EMI fernzuhalten. Vieles, was Leute schreiben, geht davon aus, dass Sie Erdung zur Hand haben und dass Sie Erde, Signal und Chassis irgendwann über eine direkte, RC-gekoppelte oder diodengekoppelte Verbindung miteinander verbinden können. Zunächst ist mir aufgefallen, dass ich an meinen Stromkreisen keine Erdung über eine Gleichstromtonne habe, da ich über ein geschaltetes und ein transformatorgekoppeltes Netzteil auf zwei verschiedenen Netzteilen sitze. Binde ich also die Abschirmung an die Signalmasse (Trommelhülse)? Wenn ja, mit Direkt, RC oder Diode? Meine Gedanken sind ja, und eine RC-Schaltung mit <= 100Ω zu verwenden. In einem schlechten Fall - wenn die Masse 1 und 2 der Stromversorgung sehr unterschiedlich sind - wirkt sich der Offset an Masse auf meine Logikpegel aus? Die P82B715 sollen "level-übersetzend" sein.

Danke für die Eingabe.

I2C ist nicht gut für lange Drähte. Von wie lange sprichst du?
Ja, ich habe definitiv davon in der Literatur gehört. Ich denke, 20 m wären ein Durchschnitt, wobei 50 m wirklich die Obergrenze sind. Nach dem, was ich lese, kann der P82B solche Entfernungen bewältigen.
Die beste Erdung für i2c besteht darin, es auf derselben Platine zu belassen. Wie wäre es mit RS485?
@ErikFriesen: Spielen Sie auf die "Übertragung der I2C-Signale als Differenzsignale mit RS-485-Hardware" an, wie in Abb. 3 von "AN10364: Optoelektrische Trennung des I2C-Busses" gezeigt ? Dieses Dokument zeigt auch eine Möglichkeit, einen I2C-Bus optisch zu isolieren, sodass der Master und der/die Slave(s) auch mit mehreren hundert Volt Offset kommunizieren können.
Ich denke, i2c ist dafür ungeeignet, warum nicht ein wenig überdenken und rs485 oder eine Art lvds verwenden?
Kurz nach diesem Beitrag auf RS485 umgestellt; Hatte eine Weile funktioniert, aber seit ein paar Wochen ist es kaputt. Viel Spass beim Herausfinden..
Es ist vielleicht nicht der beste Weg, wie andere darauf hingewiesen haben, aber wenn Sie zwei Boxen über große Entfernungen verbinden möchten, müssen Sie sie nur durch einen Transformator oder Optokoppler oder Inline-Kondensator elektrisch isolieren. So würden Sie zum Beispiel Ethernet machen. Die andere Möglichkeit besteht darin, einfach ein Kabel mit einem Metallmantel auszuwählen, der den Mantel auf beiden Seiten mit Masse verbindet, und zu akzeptieren, dass, wenn der Blitz eine Box trifft, er beide trifft.

Antworten (5)

Es stehen einige Optionen zur Verfügung.

Der branchenüblichste Ansatz für dieses Problem besteht darin, einen anderen Bus anstelle von I2C zu verwenden. Viele Mikrocontroller unterstützen nativ CAN-Bus oder ModBus. Eine weitere gängige Wahl ist RS-232.

Der andere Ansatz wäre die Verwendung isolierter Transceiver. Ich empfehle, dies unabhängig davon zu tun, welchen Bus Sie verwenden.

Der dritte Ansatz wäre, Macht zusammen mit Ihrer Kommunikation weiterzugeben. Sie stellen ausdrücklich fest, dass es sich um einen geringen Stromverbrauch handelt, definieren jedoch nicht, wie niedrig, sodass ich nicht weiß, ob dies praktikabel ist.

Hey Tom, danke für den Beitrag. Ich bin vor einiger Zeit auf RS-485 umgestiegen. Jetzt schön mitsummen.
Wahrscheinlich eine gute Wahl. Haben Sie noch Probleme? Vielleicht kann ich dir helfen. Andernfalls wählen Sie bitte eine Antwort aus und markieren Sie sie als akzeptiert, damit Ihre Frage nicht in der Sortierung für unbeantwortete Fragen angezeigt wird.

Ich würde die folgende Frage stellen: Ist Ihre Linearversorgung mit niedriger Leistung transformatorisoliert? (Das sind sie normalerweise.) Das heißt, wird ein Transformator verwendet, um die Netzspannung in eine niedrige Wechselspannung umzuwandeln, dann in Gleichstrom umzuwandeln und zu regeln? Wenn dies der Fall ist und Sie die Niederspannungsleitungen schweben lassen können, binden Sie einfach Ihre beiden DC-Erdungen mit einem geeigneten Draht zusammen. Der Abwärtstransformator trennt den Ausgang vom Eingang.

Wenn Sie dies tun, besteht die Möglichkeit, dass das Low-Power-Chassis immer noch mit einer anderen Erdungsleitung verbunden ist als das High-Power-Chassis, was eine potenzielle Gefahr darstellt. Und es ist notwendig, sich das lineare Versorgungsschema anzusehen, um zu sehen, ob Sie die gemeinsame Versorgung tatsächlich von Masse trennen können. Es ist auch eine ausgezeichnete Idee zu überprüfen, ob beide Netzanschlüsse richtig verdrahtet sind. Wenn dies nicht der Fall ist, liegt möglicherweise tatsächlich Netzspannung an den beiden Schaltungsmassen an.

Ja, es ist Ihr Standard-Transformator, Filterkappe, Regler-PS-Setup. Dies war definitiv ein Teil meiner Verwirrung über die Erdung meines Systems (es ist ein 2-poliger Stecker, kein 3-poliger Stecker, wie im Diagramm angegeben). Ich bin mit Schaltnetzteilen weniger vertraut, aber ich frage mich, ob dies der Fall ist die gleiche Situation auf der SMPS-Seite - ein kurzer Blick zeigte, dass diese fast immer auch Transformatoren verwenden.
[Auch von RYS. Zweiter Teil einer Antwort, die in einen Kommentar umgewandelt wurde.] Ich bin also an beiden Enden transformatorisoliert, aber möglicherweise über verschiedenen Gründen. Wenn ich die Abschirmung meines Kabels an beiden Enden mit dem Chassis verbinde, gehe ich davon aus, dass ich diese mit meiner Signalerde (beide Enden) verbinden muss. Was ist der beste Weg, dies zu tun? Ein Widerstand würde definitiv den Strom durch die Abschirmung begrenzen ...

In einem schlechten Fall - wenn die Masse 1 und 2 der Stromversorgung sehr unterschiedlich sind - wirkt sich der Offset an Masse auf meine Logikpegel aus?

Schlimmer noch: Es zerstört die I²C-Puffer. Sie erlauben nur Spannungen von 0 bis VCC (max. 12 V) auf Busleitungen.

Ich würde eher RS485 als Bus verwenden. Es gibt Transceiver mit einem höheren Gleichtaktspannungsbereich, und der Bus ist nicht so empfindlich gegenüber Rauschen wie I²C.

Wenn die Massepotentialdifferenz hoch werden kann, müssen Sie möglicherweise Optokoppler verwenden.

Die P82-Designnotizen besagen, dass der Chip je nach Leitungskapazität 50-100 m aushält, was für meine Anforderungen ausreicht. RS485 sieht aber interessant aus. Meine Frage bleibt; Ich sehe, dass rs485 auf lokale Masse verweisen oder Masse mit dem Twisted Pair senden kann. Wenn wir letzteres tun, wie sollten die Erdungen angeschlossen werden?
DMX verwendet RS485 mit 250 kBaud auf 120-Ohm-Spezialkabel oder 100-Ohm-Cat-5 mit der richtigen Terminierung. Das könntest du nachschlagen.

Wenn Robustheit wichtiger ist als Kosten, sollten Sie möglicherweise Folgendes in Betracht ziehen:

1) I2C-Isolator-IC zum Isolieren von Signalen und Strom. Siehe zahlreiche ICs von Analog / Clare / Linear / NXP / Silicon Labs / TI / ...

und/oder

2) I2C „Long-Distance“-Treiber, wie NXP PCA9600, NXP P82B96 oder ähnlich.

I2C ist bekanntermaßen schwierig, die Signalintegrität über jede Art von Entfernung aufrechtzuerhalten, da es auf passive Pull-up-Widerstände angewiesen ist. Da Sie nur zwei Enden Ihres Kommunikationsbusses haben, wäre der bessere Ansatz die Verwendung von RS-232, das speziell für diesen Zweck entwickelt wurde. Es wird auch viel einfacher sein, Fehler zu beheben. Wenn Rauschen ein Problem darstellt, sollten Sie die Verwendung von optisch isoliertem RS-232 in Betracht ziehen. Es ist viel einfacher auf RS-232.

Wenn Sie darauf bestehen, I2C zu verwenden, ist es am besten, es durch einen Isolator zu leiten: http://www.analog.com/en/interface-isolation/digital-isolators/adum1250/products/product.html

Ich bin auf RS485 umgestiegen. Hatte es eine Weile lang funktioniert, ist aber auf einige Probleme gestoßen - Ihr Name fällt mir ein. Irgendwelche Tipps, wie ich RS 232 im Halbduplex-Modus verwenden könnte? Ich weiß, dass 232 eine höhere Differenzsignalspannung verwendet - irgendein Vorteil gegenüber RS485 in Bezug auf den Gleichtakt?