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