Forum: Mikrocontroller und Digitale Elektronik SPI Verbindung wird durch Zündspule gestört


von Heinz (Gast)


Lesenswert?

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.

von Heinz (Gast)


Angehängte Dateien:

Lesenswert?

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.

von SPI (Gast)


Lesenswert?

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.

von Heinz (Gast)


Angehängte Dateien:

Lesenswert?

Schuldigung, hier das Bild in besserer Größe.

Grüße Heinz

von Heinz (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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

von Einer K. (Gast)


Lesenswert?

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.

von Volle2 (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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

von Ursus P. (unwichtig)


Lesenswert?

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

von Heinz (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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!

von IZ (Gast)


Lesenswert?

Genitiv, Dativ, Akkusativ,.....uahhh

von Holm T. (Gast)


Lesenswert?

26LS31, 26LS32..

Gruß,

Holm

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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?

von Heinz (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.