Umgang mit Signalrauschen über eine 50-Fuß-Kommunikationsverbindung

Situation: Anschließen einer Motorsteuerung an eine MCU. Die Motorsteuerung ist etwa 50 Fuß von der MCU entfernt. Verbunden über ein einzelnes Kabelrohr (vergraben), das die folgenden Kabel enthält: (Es gibt keine anderen elektrischen Geräte in der Umgebung, und diese befinden sich im Freien zwischen zwei wetterfesten Kästen.)

  • 24-VAC-Stromversorgung zur Motorsteuerung (Nr. 14/2) (60 Hz)
  • Cat5-Kabel (24 AWG Kupfer)

An MCU übertragene Signale:

  • Motorrichtungssignal. Diese Leitung wird je nach Drehrichtung des Motors hoch oder tief gezogen. Keine schnellen Änderungen: Motor läuft mindestens 10 Sekunden lang in eine Richtung.

  • Motorpositionsanzeige. Eine Rechteckwelle auf TTL-Pegel (100 Hz bis etwa 1 kHz), die eine Anzahl von Impulsen pro Umdrehung des Motors ausgibt.

Das Problem: Signale, die an der MCU ankommen, sind sehr verrauscht – Sie können die 60-Hz-Leitungsinterferenz deutlich sehen – und Sie können Übersprechen auf den beiden Leitungen sehen – das Richtungssignal pulsiert zusammen mit der Rechteckwelle der Positionsanzeige.

Irgendwelche Vorschläge, wie man diese Signale bereinigen kann, um verwendbar zu sein?

Ich könnte möglicherweise eine zweite MCU in die Motorsteuerungsbox einbauen, aber welches Protokoll könnte ich verwenden, um über das vorhandene Cat5-Kabel zu übertragen, das für diese Art von Interferenz nicht so anfällig wäre? Würde I2C bevorzugen ... Vorschläge? In der Hoffnung, den CAN-Bus zu vermeiden, da er zu viel Komplexität und zusätzliche Hardware hinzufügt.

Irgendwelche Vorschläge geschätzt.

Haben Sie ein einfaches Protokoll wie RS485 in Erwägung gezogen?
Welche Drähte werden genau wofür im Cat-5-Kabel verwendet?
@Jack - Ich habe mehrere Protokolle in Betracht gezogen, möchte aber unnötige Hardware und Komplexität vermeiden. Da ich Arduino Uno MCUs verwende, hatte ich gehofft, ein bereits integriertes Protokoll zu verwenden, ohne dass zusätzliche Chips erforderlich sind.
@Ecnerwal - Das grüne Paar trägt + 5 V und GND, und das blaue Paar trägt die beiden von mir erwähnten Signale. Ich wette, das ist Teil des Problems, oder? Muss ich ein verdrilltes Paar pro Signal verwenden? und den zweiten Draht mit Masse verbinden?
Ich habe es vermutet (zwei Signale auf einem Paar). Ja, verschieben Sie die Signale auf verschiedene Paare und paaren Sie sie mit Signalerde. Es ist kein Differential, aber es sollte eine Bootsladung besser sein.
Wie wäre es mit <10nF-Kappen an beiden Enden? Da das Signal eine ziemlich niedrige Frequenz hat.
@Michael - werde das auch versuchen, wenn das Twisted Pair nicht funktioniert. Danke!
@Ecnerwal, ich habe getan, was Sie vorgeschlagen haben, und jedes Signal zusammen mit einer Masse durch ein anderes Paar geleitet, und das System funktioniert jetzt perfekt! Können Sie dies in eine Antwort aufnehmen, damit ich Ihnen Anerkennung zollen kann? Danke!
Ich habe meine Antwort bearbeitet (deren Schreiben mich veranlasst hat, die Frage zu stellen, die uns hierher gebracht hat.) Schön, dass ab und zu eine einfache Lösung funktioniert, nicht wahr?

Antworten (4)

Beginnen Sie mit den einfachen Dingen - ersetzen Sie das Cat5 UTP durch Cat 5, 6 oder 7 STP - geschirmtes Twisted Pair. Schirm an einem Ende erden. Wenn das es löst, sind Sie mit wenig Aufwand fertig. Wenn nicht, funktioniert alles, was Sie als Nächstes tun (z. B. die Verwendung geeigneter differenzieller Leitungstreiber), besser.

Ich frage mich auch, ob Sie mit Motorleistung und Signalmasse eine Erdungsschleife machen.

Bearbeiten: Wie wir in den Kommentaren erläutert haben, liefen beide Signale auf einem einzigen Paar, was ungefähr so ​​​​schlecht ist, wie sie für die Kreuzkopplung der Signale werden könnten.

Während die differenzielle Übertragung das ist, wofür Cat5 ausgelegt ist, sollte das einfache Verschieben jedes Signals auf separate verdrillte Paare, wobei die andere Hälfte des Paares geerdet ist, die Dinge aus Sicht der Kreuzkopplung viel besser machen, und tat es tatsächlich weiter Kommentare. Ich würde sagen, es fällt immer noch unter die allgemeine Überschrift dieser Antwort, beginnen Sie mit den einfachen Dingen (noch einfacher, wenn Sie die Kabel nicht wechseln, nur wie Sie die Drähte verwenden), obwohl ich nicht an Kabelpaar gedacht hatte Missbrauch, bis ich die erste Form der Antwort geschrieben und die Frage in den Kommentaren gestellt habe.

Ich habe die Signalmasse nicht mit der Motorleistung geerdet. Der 24-VAC-Transformator hat COM- und 24-VAC-Anschlüsse. Die Steuerplatine gleichrichtet und filtert ein 5-VDC-Signal für die interne Verwendung. Ich bin mir nicht sicher, ob die beiden gemeinsam geerdet sind, kann es aber überprüfen.
@RyanGriggs: Wenn Sie dies noch nicht getan haben, sollten Sie die Verwendung von Cat 5 für den Untergrund / den Außenbereich in Betracht ziehen (abgeschirmt, wie Ecnerwal vorschlägt). Diese Art von Kabel ist mit einem Gel "überflutet", um Wasser fernzuhalten. Vergrabene Leitungen füllen sich oft mit Wasser, entweder durch kleine Lecks oder durch Kondensation. Das ist normal.
Thx für deine Hilfe!

Einseitige Signalisierung ist die Quelle Ihrer Probleme. Differentialsignalisierung wird Übersprechen und Rauschen drastisch verbessern. RS-422 wäre eine geeignete Wahl.

I2C ist nicht ideal, da seine Bidirektionalität (und folglich schwach angesteuerte Signale) sich nicht gut für differenzielle Signalisierung eignet. Es scheint jedoch, dass Sie nur eine Richtung benötigen. Und wenn Sie bidirektionale Kommunikation wünschen, haben Sie zusätzliche Paare in Ihrem Cat5.

danke @uint128_t, erfordert RS-422 spezielle Encoder/Decoder-Chips oder kann Arduino dies mit den vorhandenen Datenpins tun?
Der Schnellcheck sieht so aus, als würden Sie Hardware benötigen. Überhaupt nicht auf Qualität geprüft , aber RS485 zwischen Arduinos (unter Verwendung einer kleinen Treiberplatine auf jeder Seite): arduino-info.wikispaces.com/SoftwareSerialRS485Example For rs422 (Suche getippt, ich denke ähnlich: electronic.stackexchange.com/questions/ 160551/…
I2C-über-Differential ist möglich, mit dem P82B96 zusammen mit geeigneten Transceivern ...

Aufbauend auf der Antwort von uint128_t:

Sie können RS-422-Transceiver-Chips (Single-Ended-zu-Differential-Konverter und Differenz-zu-Single-Ended-Konverter) am MCU-Ende und am anderen Ende Ihres Kabels verwenden, um die vorhandenen Signale von Single-Ended in Differential und zurück umzuwandeln.

Dies würde die Verwendung des seriellen RS-422-Übertragungsprotokolls nicht erfordern, sodass am Motorende des Kabels keine MCU erforderlich ist.

Da Sie 2 verfügbare Leiter plus GND haben, würde ich vorschlagen, sie für eine symmetrische Übertragung für das Geschwindigkeitssensorsignal zu verwenden. YDies wird die Gleichtaktstörung ziemlich gut unterdrücken.

Sie müssen auch die Richtung übertragen, dies könnte durch ein beträchtliches Gleichtakt-Gleichstromsignal erfolgen. Da es sich bekanntlich um Gleichstrom handelt, außer beim Rückwärtsfahren, können Störungen durch einen Tiefpassfilter unterdrückt werden.