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