Hallo zusammen,
ich habe an meinen Motorradlenkrad ein 1.8" Arduino TFT Bildschirm, der
mir die Uhrzeit anzeigt.
Der Mikrocontroller ist aber unter der Sitzbank verbaut.
Somit verläuft das Kommunikationskabel unter den Tank zum Lenkrad.
Dort kommt es natürlich an den Zündspulen/Zündkabeln vorbei.
Ich hatte Anfangs massive Störungen, die ein Betrieb unmöglich machten.
Jetzt habe ich eine bessere Position gefunden. Leider schleichen sich
dennoch manchmal Störungen ein, die sich in Pixelfehler bemerkbar
machen.
Ich nutze ein abgeschirmtes Kabel 8x0,14 mm^2.
Den Schirm habe ich nur einseitig ( am µC angeschlossen)
Das kabel ist ca 1,5 m lang. Verlege ich das Kabel testweise über den
Tank, läuft die Kommunikation problemlos.
Jetzt wollte ich mal fragen, ob jmd eine Idee hat oder ob ein
verdrilltes Netzwerkkabel ein Versuch wert wäre. Spielt der Querschnitt
auch eine zu berücksichtigende Rolle?
Über Tipps wäre ich sehr dankbar.
Alternativ könnte ich das Kabel unter der Ölwanne verlegen, aber dann
würde es direkt 1m länger werden, das wäre sicher auch nicht so dolle.
Bevor ich es vergesse.
Der grüne Pfeil zeigt das Kabel an der Position, wo es am besten läuft.
An der roten Linie funktioniert es am schlechtesten.
Es scheint, als ob es Metall nicht mag.
Mach aus jeder einzelnen SPI-Leitung eine Differenzial-Verbindung. Damit
bekommst Du die Signale gut durch Dein Netzwerkkabel und die Störungen
bekommst Du so auch weg.
SPI schrieb:> Mach aus jeder einzelnen SPI-Leitung eine Differenzial-Verbindung. Damit> bekommst Du die Signale gut durch Dein Netzwerkkabel und die Störungen> bekommst Du so auch weg.
Hi, kannst Du mir kurz erklären, wie das genau geht?
Beste Grüße Heinz
@ Heinz (Gast)
>Dort kommt es natürlich an den Zündspulen/Zündkabeln vorbei.
Hmm, nicht so gut, das sind starke Störquellen.
>Ich nutze ein abgeschirmtes Kabel 8x0,14 mm^2.>Den Schirm habe ich nur einseitig ( am µC angeschlossen)
Schon mal gut. Mit GND verbunden?
Idealerweise musst du auch den Schirm am Display mit GND verbinden.
>Das kabel ist ca 1,5 m lang. Verlege ich das Kabel testweise über den>Tank, läuft die Kommunikation problemlos.>Jetzt wollte ich mal fragen, ob jmd eine Idee hat oder ob ein>verdrilltes Netzwerkkabel ein Versuch wert wäre.
Ist auch nicht besser.
> Spielt der Querschnitt>auch eine zu berücksichtigende Rolle?
Nein.
>Alternativ könnte ich das Kabel unter der Ölwanne verlegen, aber dann>würde es direkt 1m länger werden, das wäre sicher auch nicht so dolle.
Nicht sinnvoll.
Man könnte speziell für SCK einen kleinen RC-Filter + nicht
invertierendenSchmitt-Trigger am Display einbauen, das ist das
kritischste Signal. 100 Ohm + 100pF sollten für einen ersten Test
reichen. Ein 74HC14 mit 2 Gattern in Reihe ist dein Freund. Im
Zweifelsfall auch für das Datensignal, sind ja genug Gatter vorhanden.
SPI schrieb:> Differenzial-Verbindung
Wäre auch mein Tipp.
In KFZ hat sich übrigens CAN bewährt.
In der Industrie wird(wurde) gerne RS485 verwendet.
Auch ohne den Takt zu kennen:
Dein, 1,5 Meter, Kabel ist etwas lang für SPI.
Nimm CAN
SPI ist nicht dafür gemacht die Platine zu verlassen.
Das bekommst du nie zuverlässig zum laufen
Auch das Kabel und die Kabelführung sieht nicht nach dauerhafter Lösung
aus.
@Heinz (Gast)
>> Mach aus jeder einzelnen SPI-Leitung eine Differenzial-Verbindung. Damit>> bekommst Du die Signale gut durch Dein Netzwerkkabel und die Störungen>> bekommst Du so auch weg.>Hi, kannst Du mir kurz erklären, wie das genau geht?
Man kann die SPI-Signale von "normalem CMOS Einzelsignal" (single ended)
auf ein differentielles Signal umwandeln. Dann werden pro Signal 2
verdrillte zur Übertragung genutzt, das macht es deutlich
störunempfindlicher. Am Display werden dann wieder die differentiellen
Signale in normale Signale umgewandelt. Das gibt es fertig als IC,
MAX488 ist so einer.
Ist aber unnötig aufwändig.
Heinz schrieb:> Hallo zusammen,>> ich habe an meinen Motorradlenkrad ein 1.8" Arduino TFT Bildschirm, der> mir die Uhrzeit anzeigt.> Der Mikrocontroller ist aber unter der Sitzbank verbaut.
Warum soweit vom Bildschirm?
> Somit verläuft das Kommunikationskabel unter den Tank zum Lenkrad.
Pack doch den Controller direkt hinter dem Bildschirm, dann bist du die
Sorgen los.
Mfg aus dem Rhein-Ruhr Gebiet
Hallo und vielen Dank für eure Antworten.
Ich habe mich leider zu Beginn zu stark mit anderen Dingen beschäftigt
und das ganze am Schreibtisch unter "unrealen" Bedingungen getestet. Die
SPI Kommunikation ging erst bei 8 MHz (µC) ---> SPI 2 MHz bei 1,5m Kabel
in die Knie.
Die Kommunikation und damit die Hardware ändern würde jetzt nicht mehr
gehen, da das den ganzen Zeitplan sprengen würde. Platine erweitern, am
Display eine Platine hinzufügen.Trotzdem Super vielen Dank für eure
ganzen Tipps.
Ich lege jetzt den Schirm des Kabels am Bildschirm auch noch an GND und
schaue mich noch nach einen verdrillten Kabel um.
Die durchschnittliche Fehlerhäufigkeit ist so, dass ich ca alle 3 min
einen Fehler bekomme.
Ich habe die Software jetzt so geändert, dass das Display sich alle 10
Sekunden neu initialisiert. Das bedeutet, dass Pixelfehler dann
verschwinden, es sei denn beim nächsten Beschreiben gibt es direkt den
nächsten Fehler.
Leider geht das Bild dann immer für ein paar ms weg, sonst würde ich das
Initialisieren auch jede Sekunde machen.
Der Mikrocontroller muss unter der Sitzbank, weil ich dort Daten aus den
Steuercomputer abgreife und die nicht alle zum Lenkrad führen will.
Verbesserungsvorschläge sind weiter gerne gesehen.
@ Heinz (Gast)
>Die Kommunikation und damit die Hardware ändern würde jetzt nicht mehr>gehen, da das den ganzen Zeitplan sprengen würde.
Naja, MINIMALE Änderungen sollten drin sein. U.A. ein
Serienterminierung. Pack ca. 33 - 68 Ohm an die SPI Ausgänge deines uC.
Siehe Wellenwiderstan.
>Die durchschnittliche Fehlerhäufigkeit ist so, dass ich ca alle 3 min>einen Fehler bekomme.
Ach herje, das ist ja soooo vieeeeel! Ich wette, die meisten, incl. mir,
sind von dauerhaften Störungen im Sekundenbereich ausgegangen!
Heinz schrieb:> dass das Display sich alle 10 Sekunden neu initialisiert.> Leider geht das Bild dann immer für ein paar ms weg, sonst würde ich das> Initialisieren auch jede Sekunde machen.
Wenn du es "nur" komplett neu beschreibst kannst du dir evtl. das
Flackern ersparen. Oder verliert das Display auch noch die Konfiguration
und muss deshalb neu initialisiert werden?
Lothar M. schrieb:> Heinz schrieb:>> dass das Display sich alle 10 Sekunden neu initialisiert.>> Leider geht das Bild dann immer für ein paar ms weg, sonst würde ich das>> Initialisieren auch jede Sekunde machen.> Wenn du es "nur" komplett neu beschreibst kannst du dir evtl. das> Flackern ersparen. Oder verliert das Display auch noch die Konfiguration> und muss deshalb neu initialisiert werden?
Ja, leider ist das der Fall.
Friert dann sozusagen alles ein.