Forum: Mikrocontroller und Digitale Elektronik SPI 1,5m im Auto, galvanische Trennung nötig?


von Jan (Gast)


Lesenswert?

Guten Abend,

ich baue momentan an einem Wettbewerbsfahrzeug eine elektrische 
Wasserpumpe ein. Diese wird mittels PWM angesteuert und erhält die 
Information dafür (Duty-Cicle) von einem "Hauptrechner" per SPI. Es 
werden also nur sehr sporadisch Daten zur Pumpensteuerung übertragen, 
vielleicht alle 5 Minuten einmal oder so....

Die Entfernung zwischen den Modulen beträgt circa 1,5m, ich weiß, dass 
dies nicht der Verwendungszweck der SPI ist, aber auf Grund der geringen 
Datenmenge möchte ich dennoch einen Versuch wagen.
Die einzige Frage die sich mir stellt ist, ob ich den Bus galvanisch 
trennen sollte? Ich habe vor ein 9-poliges Kabel für die Verbindung zu 
nutzen und zwischen CLK, MOSI und MISO jeweils Masse zu legen...Also vom 
Potentialausgleich sollte das denke ich ok sein....der Knackpunkt über 
den ich nun nachdenke: Der Slave wird wohl irgendwo im Motorraum 
plaziert werden und dort ist das Umfeld sehr sehr rau (Lichtmaschine, 
Zündspulen, etc)...könnte das zu ernsthaften ESD Problemen führen und 
mir die Controller zerhauen?


Gruß Jan

von Langsam (Gast)


Lesenswert?

Welche Datenrate/Frequenz ?

von holger (Gast)


Lesenswert?

>Die Entfernung zwischen den Modulen beträgt circa 1,5m,

Die Entfernung zwischen den Modulen kann auf 0m reduziert
werden. Leg einfach die Pumpenkabel über die 1,5m und gut.

von Jan (Gast)


Lesenswert?

Datenrate ist im Prinzip absolut egal...könnten von mir aus 100Hz sein, 
es wird nur sporadisch ein Byte übertragen, um den Duty-Cycle der PWM zu 
ändern:

Holger:
Ja prinzipiell wäre das möglich..nur sprechen dagegen 2 Gründe
1: Die Leitungen, über die der gepulste Strom saust wollte ich möglichst 
kurz halten, um zu große Abstrahlungen zu vermeiden
2: Hätte den SPI-Bus gerne im Motorraum, weil dort auch noch einige 
Temperaturfühler sitzen sollen und die alle einzel in den Innenraum 
verkablen fordert natürlich einen Mehraufwand an Kabeln...

von Ralph (Gast)


Lesenswert?

Verwende eine symmetrische Übertragung.

http://de.wikipedia.org/wiki/EIA-485


Mit einer solchen Übertragung haben wir in Autos Meßsysteme mit SPI über 
rund 5 - 6 Meter mit mehr als 2 MBit/s laufen.

Die RS485 Treiber müssen dazu allerdings so nah wie möglich an den SPI 
Controllern liegen.
Zusätzlich verdrillte und abgeschirmte Leitungen verwenden.
Je ein Treiberpaar für Clock, MISO und MOSI.

Für was willst du eine Galvanische Trennung ?
Du hast nur eine Spannungsversorgung im Auto. Also alle haben das 
gleiche Bezugspotential, es sei denn du treibst irgendwelche seltsame 
Spiele.

Grundsätzlich betrachtet wäre allerdings CAN Bus besser geeignet, weil 
dort bereits in Hardware und im Protokoll Absicherungsmaßnahmen , CRC , 
vorhanden sind.

von Lehrmann M. (ubimbo)


Lesenswert?

Jan schrieb:
> Die Entfernung zwischen den Modulen beträgt circa 1,5m, ich weiß, dass
> dies nicht der Verwendungszweck der SPI ist, aber auf Grund der geringen
> Datenmenge möchte ich dennoch einen Versuch wagen.

Nein solltest du nicht. Es gibt keinen Grund sowas zu machen. Nicht 
umsonst machen sich viele intelligente Leute tagtäglich Gedanken zu 
solchen Themen. Und eines darst du mir glauben - Dilettanten sind das 
mit Sicherheit nicht.

Jetzt willst du anfangen SPI für größere Distanzen auszubauen. Mal 
abgesehen, dass das sinnfrei ist ("Mann ohne Beine soll Maraton laufen") 
ist doch der Aufwand viel zu groß. Bau einen CAN-Bus auf, es gibt 
fertige Libraries wenn du dir das von der Komplexität noch nicht 
zutraust, ein CAN-Controller (MCP2515) kostet 2€ und nen Treiber MCP2551 
für 1€ (beides bei Reichelt) und fertig. 3€ + Hühnerfutter für einen Bus 
der - mit vernünftigen Kabeln verlegt und terminiert - sich im Auto seit 
Jahren bewährt hat und nahezu Störungsfrei arbeitet. Automatischer CRC, 
etc. ist alles mit an Bord - brauchst dich nicht drum kümmern. 
Störungsfest bis zum Geht-Nicht-Mehr. Damit hast du dann auch Spaß und 
hast nicht irgend so ein zusammengepfriemeltes Ding. Bitte tu dir den 
Gefallen und versuche nicht das Rad neu zu erfinden. Es gibt mehrere 
zehntausende Menschen die täglich in der Autoindustrie in der 
Entwicklung arbeiten, da gibt es Millionenbudgets für Entwicklung. Und 
die können es einfach besser als wir. Also keine Spirenzchen machen  - 
die denken sich schon was dabei ... nichts für ungut

Einige Probleme hast du aber immernoch. Das KFZ-Netz. Da hilft dir auch 
die Galvanische Trennung recht wenig. Spannungsspitzen sind dein 
Stichwort - eine ordentliche Stromversorgung: schau mal hier:

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23

von PittyJ (Gast)


Lesenswert?

Wir brauchten auch einmal SPI über längere Distanz. Für die 
Störsicherheit haben wir die Signale zwischendurch nach LVDS gewandelt. 
Das hat zumindest über ein paar Meter funktioniert. Ist allerdings auch 
etwas Aufwand.

Ansonsten möchte ich mich den Vorpostern anschliessen: CAN ist besser 
dazu geeignet.

von STK500-Besitzer (Gast)


Lesenswert?

Setzt die SPI auf symmetrische Signale um (RS422-Transceiver).
CAN arbeitet u.u. deswegen so störsicher, weil die Übertragung 
symmetrisch erfolgt.
Aber erst auf SPI auf CAN umsetzen und dann wieder zurück, halte ich für 
etwas übertrieben.

von Andreas K. (hammerhead)


Lesenswert?

@STK500-Besitzer: ProTip: Lies dir mal das Datasheet zum CAN-Controller 
durch. Danach ist dir vielleicht klar, dass die Dinger über SPI 
angebunden werden.

Ob man jetzt SPI auf CAN, RS422 oder RS485 umsetzt, macht nahezu keinen 
Unterschied. Man muss es so oder so auf ein symmetrisches Protokoll 
übersetzen...auf beiden Seiten.

von citb (Gast)


Lesenswert?

Jan schrieb:
> ich baue momentan an einem Wettbewerbsfahrzeug eine elektrische
> Wasserpumpe ein. Diese wird mittels PWM angesteuert und erhält die
> Information dafür (Duty-Cicle) von einem "Hauptrechner" per SPI. Es
> werden also nur sehr sporadisch Daten zur Pumpensteuerung übertragen,
> vielleicht alle 5 Minuten einmal oder so....

Das klingt seltsam.
Wenn die Wasserpumpe schon geregelt werden soll, dann muss diese auch 
einigermassen schnell nachgeregelt werden koennen, wenn z.B. 1 Minute 
Vollgas die Temperaturen steigen lassen.

Wenn das nicht sein muss, kannst Du die Regelung gleich mit einem Poti 
im Motorraum einstellbar machen.

citb

von Erich (Gast)


Lesenswert?

z.K.

http://www.avagotech.de/docs/AV02-3220DE
Seite 6/7  "SPI Isolation"  (mittels Optokoppler)

Ich denke schon, daß anzuraten ist eine galvanische Trennung 
vorzunehmen.
Ein andere Alternative wäre ggf. noch LIN statt CAN.

By the way:
Der Unterschied zwischen einer Steuerung und einer Regelung, ist der 
bekannt?
Beispielsweise ist der berühmte "Lautstärkeregler" (Drehknopf) am Radio 
eben kein Regler sondern ein Steller.

Gruss

von Jan (Gast)


Lesenswert?

Sooo erstmal danke für das reiche Feedback.

Zunächst mal, das mit den 5 Minuten war nur ein grober Richtwert um zu 
verdeutlichen, dass hier wirklich keine hohen Datenraten benötigt werden 
und es sich auch nicht um eine zeitkritische Kommunikation handelt.

Ich bin mit dem CAN-Standart bestens vertraut, weiß um die exakte 
Funktion, die Sicherungsmechanismen und die Vorteile. Gerade deswegen 
finde ich den CAN für meine Anwendung aber schlichtweg oversized. Ich 
habe auch kein Problem damit die Kommunikation über CAN zu 
programmieren, trotdem halte ich Gesamtaufwand für unverhältnismäßig 
hoch, nur um ein Byte zu übertragen.
Sicherlich ist CAN für die Anwendung im Automobil bestens geeignet, auch 
für sicherheitskritische Anwendungen....aber für eine einfache 
Pumpensteuerung?

Die Idee der galvanischen Trennung war folgende: Leider ist es eben so, 
dass man im Fahrzeug nicht unbedingt überall das selbe Potential hat, 
gerade bei neuen Fahrzeugen wo Karosserieteile teilweise verklebt sind 
und Compositwerkstoffe eingesetz werden, würde ich meine Hand nicht 
dafür ins Feuer legen, dass man überall eine gleich gute Masseverbindung 
und damit identisches Bezugspotential hat...es sei denn, man greift 
direkt an der Batterie ab, das ist klar.

von STK500-Besitzer (Gast)


Lesenswert?

Andreas Kist schrieb:
> @STK500-Besitzer: ProTip: Lies dir mal das Datasheet zum CAN-Controller
> durch. Danach ist dir vielleicht klar, dass die Dinger über SPI
> angebunden werden.
>
> Ob man jetzt SPI auf CAN, RS422 oder RS485 umsetzt, macht nahezu keinen
> Unterschied. Man muss es so oder so auf ein symmetrisches Protokoll
> übersetzen...auf beiden Seiten.

Es gibt nur EINEN CAN-Controller?
Na, dann zeig mir mal bitte, wie man einen SJA1000 per SPI anspricht!

Mit dem MCP2515 bin ich auch vertraut...

von Jan (Gast)


Lesenswert?

Soooo kurzes Update, bin doch auf CAN umgestiegen. Ist zwar immernoch 
voll oversized aber weniger Kabelgedöhns, da ja noch mehrere Knoten im 
Motorraum Einzug finden. Layout ist auch schon fertig, kann ich gerne 
mal hochladen wenn Interesse besteht.
Eingesetzt habe ich die hier vorgeschlagenen MCP 2515 und MCP2551.


Gruß Jan

von Jan (Gast)


Lesenswert?

Hier ist das Layout:

Beitrag "PWM-Motorregler mit CAN"

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.