Verteiltes Sensorsystem

OP #3805137
Lesenswert?

Hi Leute,

ich hatte vor Sensoren mit SPI Interface über die ferne abzufragen. 2m 
Kabel von einer zu anderen Platine.
Naja, wie man so liesst ist SPI ja nicht das mittel der Wahl. Kann man 
das irgendwie geschickter machen? Ohne die Platine des Sensor maßgeblich 
zu vergrößern bzw zu verkomplizieren?

Danke
Gast #3805157
Lesenswert?

SPI über 2m ist gar kein Problem
Wenn du keine hohe Datenrate brauchst (<= 100Mbit/s)...
1. Möglichkeit:
An Clk_in & MOSI & MISO R-C-Tiefpass mit Tau~1/7 Datenperiode...
...und einen Schmitt-Trigger (oder 2 Schmittinverter hintereinander: 
74HC14)
+ evtl. EMV-Schutzbeschaltung.
Möglicherweise musst du noch den SPI-Modus der Master-SPI zwischen 
senden und empfangen umschalten

2. (beste) Möglichkeit (auch für deutlich längere Strecken):
RS-485-Sender & -Empfänger. Braucht aber 2 Leitungen pro Signal.

3. Möglichkeit: Verwende (langsame) RS-232
OP #3805234
Lesenswert?

Danke Alexx für deine kompetente Antwort.
okay, das RS-485 find ich am besten. Das hatte ich auch schonmal 
gelesen.
Ist mir am sympatischsten.
Dh. ich brauche 3x2 Leitungen um die Twisted Pair Sache hinzubekommen.
MOSO, MISO, CLK. Wenn ich mehrere Sensoren abfragen will schalte ich die 
entsprechenden Pegelwandler ab, damit die Sensoren nichts mitbekommen. 
Das ist sozusagen das CS. Der Chipselect am Sensor ist dauerhaft ein, 
richtig?

Wenn ich ein Ethernetkabel nehme, dann kann ich das restliche Paar für 
GND und 5V nehmen um damit den Sensor zu versorgen.
Gast #3805359
Lesenswert?

Eine andere Möglichkeit wäre, alle Sensoren hintereinander zu hängen (in 
einer großen Schleife) und quasi alle in einem Rutsch abzufragen:
µC-Master-SPI-MOSI => MOSI-Sensor1(Slave) + MISO-Sensor1 => 
MOSI-Sensor2(Slave) + MISO-Sensor2 => .... => µC-Master-SPI-MISO. Und so 
viele CLKs generieren, bis die Daten des ersten Sensors (oder die 
Kennung des Masters wieder) im Master gelandet sind. Dann sollte aber 
vom Master irgend eine Kennung kommen, damit der Master merkt, wann 
seine Kennung zurück ist. Theoretisch kann man natürlich auch einfach 
die erforderliche CLK-Anzahl generieren (Anzahl der Sensoren muss 
fest&bekannt sein).

Ein Bus-System (parallele Verschaltung) wäre aufwendiger, könnte aber 
mit einem µC in jedem Sensor über ein Adress-Paket vom Master realisiert 
werden, der nur bei passender Adressierung das CS aktiviert. dann 
bräuchte man aber hard-codierte Empfänger-Adressen und viel Software.

Da wäre dann wahrscheinlich I2C die nahe liegendere Realisierung.
Mit Schottky-Dioden in den RS-485-Sender-Leitungen (+Pull-Up / 
pull-down) könnte man den open-Collector-Ausgang von I2C nachahmen - 
habe das aber nicht komplett durchüberlegt...
Gast #3805378
Lesenswert?

Ein anderes paralleles Verfahren fällt mir gerade ein - ein Time-Slot 
mit fester Datenpaketlänge:
Master schickt eine bestimmte Master-Kennung (an jeden Sensor), danach 
(kleine Wartezeit für Verarbeitung) hat jeder Sensor - je nach seiner 
Adresse/Rang seinen Slot wann er senden darf...
Wäre robust & noch relativ einfach zu programmieren.
Gast #3805683
Lesenswert?

Fragt sich, wie verteilt und in welcher bösen, verseuchten Umgebung das 
System betrieben werden soll. Maschinenhalle? Jedes Kabel ist auch eine 
schöne Antenne. Je nach Art der Störung/Messung würde ich die Signale 
mehrfach senden und auf Plausibilität prüfen. Netzwerkkabel ist zwar 
evtl. eine Lösung, könnte aber auch leicht zu rauchigen Verwechsungen im 
Patchfeld führen, wenn noch andere Spannungen mitgeführt werden. Deshalb 
guuut beschriften!
#3805813
Lesenswert?

FLorian Unbekannto schrieb:
> Die Frage ist nur ob CS auf DauerLow gezogen werden draf. Ich mein mann
> muss nach jedem Byte einmal die CS Leitung High werden lassen oder?

Hängt vom SPI-Slave ab. Manche brauchen es, manche nicht.

Irgendwann könnte es sich auch lohnen, an Stelle des SPI mit RS485 oder 
RS422 Transceivern beispielsweise echtes RS485 oder CAN zu verwenden, 
und den dezentralen Sensoren einen kleinen µC für die Umsetzung SPI/Bus 
zu verpassen.

Aber bei 2m in wenig störverseuchter Umgebung gehts auch mit normalen 
Logikpegeln und passendem Abschluss.
(Firma: Vescomp) #3806582
Lesenswert?

A. K. schrieb:
> Die sparsame Reaktion könnte darauf zurück zu führen sein, dass die
> Leser allesamt von der Detailfreude deiner Posts förmlich erschlagen
> wurden.

 Ich lese gerade das 3. Datenblatt zu den angegebenen SPI-Sensoren,
 wahrscheinlich komme ich am Donnerstag zu seinem Mikrocontroller, ist
 ja recht kompliziert das kleine Ding, dass er sich ausgesucht hat..
Gast #3806829
Lesenswert?

FLorian Unbekannto schrieb:
> es muss alles klein sein. µC mit der ganzen Peripherie
> braucht auch wieder Platz

Ich verstehe nicht was du machst und brauchst, weil ich über deine 
Sensoren nichts finde. Wenn du die Signale digital übertragen willst, 
hast du doch sowieso einen µC im Sensor. Ich würde das mit RS485-Bus 
machen. Das kostet dann in jedem Sensor nur zusätzlich den 
RS485-Treiber. 2 Adern für den Bus und durchgeschleift zu jeden Sensor.
Das ist jedenfalls der Standard. So habe ich das auch gemacht. Besonders 
praktisch finde ich die billigen Patch-Kabel. Alles fertig 
konfektioniert und reichlich freie Adern für Versorgung usw. Nätürlich 
brauchst du dann die Software für Master und Slave, aber so dramatisch 
ist das nicht. Die Daten werden dann einfach über den USART geschickt.
Gast #3808220
Lesenswert?

Entschuldigung! Habe nicht genau genug gelesen und bin wohl über das 
Ziel hinausgeschossen. Die SPI-Sensoren kannte ich noch nicht.
Die sind wohl für ein Bus-System nicht geeignet, da sie nicht auf eine 
Adresse reagieren können. Also braucht jeder sein eigenes CS. Alle 
anderen Signale sollte man parallel verdrahten können. Es sieht wohl so 
aus, dass sie bei CS high auf TriState gehen (deute ich aus dem 
Signalverlauf). Habe nur diesen Sensor angesehen:
http://de.rs-online.com/web/p/temperatur-und-feuchte-sensoren/7833891/

FLorian Unbekannto schrieb:
> Die Frage ist nur ob CS auf DauerLow gezogen werden darf.

Das geht jedenfalls nicht, da sie dann gar keinen Messwert erfassen 
(siehe Datenblatt).

Die Twisted Pair für jedes Einzelsignal halte ich für sinnlos, da man 
den Rückstrom nicht für jedes Signal getrennt zur Verfügung hat. Geht 
also nur alle Signale einzeln zur verdrahten. Das ist vermutlich bei 2m 
kein Problem.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren