Forum: Mikrocontroller und Digitale Elektronik Verteiltes Sensorsystem


von FLorian U. (florian_u)


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

von Alexxx (Gast)


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

von FLorian U. (florian_u)


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.

von Alexxx (Gast)


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

von Alexxx (Gast)


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.

von FLorian U. (florian_u)


Lesenswert?

Ok, das mit dem ansprechen bekomme ich denke ich hin.
Ist es den richtig, dass die Clock Leitung auch nochmal extra über ein 
Twisted Pair übertragen werden muss?

von oszi40 (Gast)


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!

von FLorian U. (florian_u)


Lesenswert?

Gut mein Plan:

2 Adern f. MISO
2 Adern für MOSI
2 Adern f. Clock
1 Masse
1 5V

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? Das 
ginge dann nicht.

von FLorian U. (florian_u)


Lesenswert?

Ich will die Sensorplstine über Strom versorgen, kann man auch die Masse 
über die Schirmung führen oder ist das eher dumm?
Sonst bräuchte ich 10 Pol bzw 9 und das ist ja mit Netzwerkkabeln nicht 
mehr so gut.

von (prx) A. K. (prx)


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.

: Bearbeitet durch User
von FLorian U. (florian_u)


Lesenswert?

ja gut, aber es muss alles klein sein. µC mit der ganzen Peripherie 
braucht auch wieder Platz. Dann der CAN Transceiver...
So spar ich mir wenigsten den µC.

von (prx) A. K. (prx)


Lesenswert?

Ein µC mit integriertem CAN Transceiver wie der LPC11C24 braucht eher 
weniger Platz als deine 3-4 RS485 Transceiver.

: Bearbeitet durch User
von FLorian U. (florian_u)


Lesenswert?

Gibt es denn irgendwo einen Schaltplan, wie man das ganze verschalten 
muss?
Habt nirgendwo was gefunden.

: Bearbeitet durch User
von FLorian U. (florian_u)


Lesenswert?

Hat das noch keiner mal erfolgreich aufgebaut und ne 
Verschaltungsskizze?

von (prx) A. K. (prx)


Lesenswert?

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.

von Marc V. (Firma: Vescomp) (logarithmus)


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

von Hermann (Gast)


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.

von Hermann (Gast)


Angehängte Dateien:

Lesenswert?

FLorian Unbekannto schrieb:
> Gibt es denn irgendwo einen Schaltplan, wie man das ganze verschalten
> muss?

Wo ist da das Problem?

von Hermann (Gast)


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.

von (prx) A. K. (prx)


Lesenswert?

Marc Vesely schrieb:
> Ich lese gerade das 3. Datenblatt zu den angegebenen SPI-Sensoren,

Vielleicht sollte ich mal wieder zum Optiker, aber wo in diesem Thread 
sind irgendwelche Sensoren konkret angegeben?

von Purzel H. (hacky)


Lesenswert?

Wenn schon verteilt, dass eher unabhaengige Module mit Controller an 
einem Vierdrahtbus. als RS485 plus Speisung.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

A. K. schrieb:
> Vielleicht sollte ich mal wieder zum Optiker, aber wo in diesem Thread
> sind irgendwelche Sensoren konkret angegeben?

 Ja, gerade deswegen gehe ich die ganzen Datenblätter durch ;-D)

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.