LCD über I2C - Problem: Kabellänge oder Störsignale ?

Guten Morgen,
fast fertig mit meinem Projekt bin ich auf ein großes Problem gestoßen.
Zum Aufbau:
Arduino UNO sendet mir über I2C Daten für ein LCD 16x2 Display. Verbindung erfolgt über ein KFZ-Kabel, ungeschirmt, 13-polig, Länge ca. 5-6 Meter.
Das mehradrige Kabel ist für meinen Einsatz optimal deshalb läuft auf 2 Adern bei Tastendruck ein Elektromotor der ca. 20A zieht.

Speisung des gesamten Systems über 12V KFZ Batterie (Arduino läuft mit 9V).

Problem: Wenn ich den Arduino starte, zeigt mir das Display an was es soll! Sobald ich den Elektromotor kurz anschalte, wechseln die Wörter zu Sonderzeichen, anschließend nur noch ein blaues Display.

Erst nach einem aus- und wieder anschalten des Stroms läuft das Display so wie es soll.

Mir ist klar das I2C so nicht für lange Kabel gedacht ist, aber für meine Bedürfnisse ausreichend. Was könnte jetzt die Ursache sein? Liegt es an einem Spannungsabfall bei Zuschaltung des Motors? Müssen meine Datenleitungen abgeschirmt sein?

Ich will, wenn möglich, ein Austausch des Kabels verhindern, bzw. kein zweites abgeschirmtes Kabel für den I2C neben dran legen. Es gibt aber auch kein Mehradriges Kabel mit zwei geschirmten Adern und der Rest mit 2,5 oder 1,5er Adern.

Ich habe Versuchsweise extern ein zweites Display mit I2C über ein 9m langes Kabel dran gehängt (Abseits der 20A führenden Adern). Auch hier zeigt sich nur ein blaues Display.

Wäre das hier evtl. eine mögliche Lösung ohne großen Umbau?
http://sandboxelectronics.com/?product=active-i2c-long-cable-extender-p82b715-module

Oder hilft hier nur ein abgeschirmtes Kabel?

Großen Dank für eure Hilfe!
Gruß

Der Rangeexpander ist mal ein Anfang zum testen. Es gibt einen neuen, verbesserten, den p82b96. Da kannst du den i2c mit höherer Spannung (bis 15V) und somit störsicherer fahren. Aber das Problem wird der Einschaltimpuls des E-Motors sein.
Hast du schon versucht, das Display nach dem Schalten des Motors neu zu initialisieren? Keine saubere, aber vielleicht funktionierende Lösung, wenn es nur der Einschaltimpuls war. Ansonsten nächster Schritt Rangeexpander

Arduino und der Elektromotor sind nicht von einander abhängig, bis auf die Verlegung des Kabel und der Stromversorgung.

Ich hab mal im Sketch unter void loop noch mal " lcd.begin(16,2) " eingefügt.
Ergebnis: das Display fängt an zu flackern (Beleuchtung an/aus/an/...)

Gibt es hier eine bessere möglichkeit?

Zum Betrieb: Der Elektromotor wird spontan immer wieder an- und ausgeschaltet

, bis auf die Verlegung des Kabel

Tipp:
Schaue dir die I2C Signale auf einem Oszi an, und dir wird klar werden, warum es versagt.
Deine ganzen Abhilfe Maßnahmen kannst du auf dem Wege auch überprüfen.

Wird der Motor vom Arduino gesteuert?

Schaltplan?

Nein, der Elektromotor wird über einen Taster in Nähe des Displays angesteuert. Das Tastensignal geht in dem 13 poligen Kabel zu einem Kasten in dem auch der Arduino drin sitzt. Dort ist ein 12V Relais für den Elektromotor. Aus dem Kasten geht ein Kabel weiter zum Motor.

Falls nicht ausreichend, dann mache ich naher noch einen Schaltplan.

Ein Oszi besitze ich leider nicht, somit keine Möglichkeit etwas zu prüfen

arrhenius:
Mir ist klar das I2C so nicht für lange Kabel gedacht ist, aber für meine Bedürfnisse ausreichend. Was könnte jetzt die Ursache sein?

Wenn es dir klar ist, warum machst du es dann ?
Und nein, für deine Bedürfnisse reicht es nicht. Du wirst da noch ganz andere Problem bekommen, wenn dein Motor des KFZ erstmal läuft.

Für deine Anwendung solltest du die I2C-Extender und abgeschirmtes Kabel einsetzen.
Ohne diese Änderung wirst du nie eine saubere, sicher Funktion erhalten.

hallo,
Arduino samt Display wurde bei laufendem Motor des KFZ getestet und funktioniert einwandfrei. Erst der Elektromotor bringt den Ausfall.

Also eine Mögliche Abhilfe wäre nun ein abgeschirmtes Kabel mit diesen Extendern. Hilft hier auch der Baustein den ich am Anfang des Themas verlinkt habe?

Andere Idee: Wenn ich den I2C wieder ausbaue und das Display rein durch die 12 Kontakte wie hier gezeigt Nr.14 LCD Display | Funduino - Kits und Anleitungen für Arduino ansteuere, kann es dann auch zu Problemen kommen ?

Ein Kabel mit mehreren Adern ist einfacher zu finden als eins, mit einzel geschirmten Adern.

arrhenius:
Also eine Mögliche Abhilfe wäre nun ein abgeschirmtes Kabel mit diesen Extendern. Hilft hier auch der Baustein den ich am Anfang des Themas verlinkt habe?

Andere Idee: Wenn ich den I2C wieder ausbaue und das Display rein durch die 12 Kontakte wie hier gezeigt https://funduino.de/nr-13-lcd-display ansteuere, kann es dann auch zu Problemen kommen ?

Ein Kabel mit mehreren Adern ist einfacher zu finden als eins, mit einzel geschirmten Adern.

Verwende ein eigenes, abgeschirmtes Kabel nur für I2C und die von dir genannten Extender.
Die gibt es als Bausatz bei Horter und du brauchst 2 Stück.

Das Display direkt, ohne I2C anzuschließen bereitet die selben Probleme.

Die direkte Ansteuerung des Displays ohne i2c geht über die Entfernung auch eher nicht. Es gibt Audiokabel, das ist wie Zwillingslitze, da sind die Adern einzeln abgeschirmt. Aber zusätzlich noch den i2c-extender. Weil schon die langen Kabel ein Grundproblem darstellen. Der E-Motor kommt dann noch erschwerend dazu

Ich werde nicht mehr. :slight_smile:

Das ist ungefähr das selbe, als wenn man schreibt, ich habe das Display angezündet, und es ging einfach kaputt. Wie kann ich das verhindern, Ich möchte aber kein Schutzgehäuse um das Display bauen. Gibt es vielleicht einen Zauber den man sprechen kann, dass das Display dann Feuersicher ist?

Moin Franz, es sollte nach Möglichkeit ein geschirmtes Kabel sein sowie die Expander.Bei mir setze ich nur geschirmte Kabel ein da ich ein Display am Ende von einem Modell sitzen habe.Die Kabellänge beträgt dort 1,70 m und hat einen 2 fachen Schirm der am Metallgehäuse angeschlossen ist.
MfG
Lutz
PS: Es dürfen keine Stromleitungen in dem Kabel sein

Es gibt bei :
http://www.bedea.com/index.php/de/produkte/spezialkabel/anwendungen/kommerzielle-elektronik
sicherlich ein Kabel, dass evtl. passt.
Besser ist allerdings, da haben meine Vorredner recht, Trennen, was zu trennen ist.
Parallel Verlegung vermeiden, falls gemeinsamer Kabelweg, hilft manchmal das Verseilen...
Es gibt z.B. Steuerkabel für Schnellaufrollos bei Notausgängen (Sonnenschutz -> Notausgang freimachen).
Dann wären da nioch die alten Boschfunkanlagen (ehemalige Pagerdienste etc) wo solche Kabel zu Einsatz kamen.
Zur Not einfach mal den Elektriker des geringsten Misstrauens fragen, sein Grißhändler hat Kataloge und Lieferanten für solche Dinge.