INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

Sensorauslesung SPI



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

17.03.2015, 08:44 (Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2015 09:13 von Alighieri.)
Beitrag #1

Alighieri Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Mar 2015

2011
-
kA



Sensorauslesung SPI
Hallo liebes Forum,

zur Zeit verwende ich folgenden Druck und Temperatursensor: http://www.meas-spec.com/downloads/MS5803-05BA.pdf
zusammen mit der NI USB-8652 Karte: http://digital.ni.com/manuals.nsf/websea...AC006D49F4

Das ganze soll über Spi laufen, dass heißt ich sende einen von den 5 Basic Commands (8 bit) an den Sensor und dieser gibt mir dann Daten zurück.
Die wichtigen Kommandos für mich sind PROM Read und ADC Read. Wie ihr auf Seite 8 des Sensordatenblatts sehen könnt, ist die Größe der Antwort angegeben in bit.
PROM Read gibt pro Koeffizient 16bit zurück und ADC Read 24bit für Temperatur und Druck.

Ich habe herumprobiert, und wenn ich nach dem ersten Koeffizienten frage mit dem Kommando A2 (hexa), dann gibt er mir folgenden Wert jedes mal gleich 254. Das kann nicht sein, da die Antwort erstens 16bit groß sein soll und einen typischen Wert von 46372 haben soll.

Wenn ich jedoch mehrmals das Kommando A2 im Array an den Sensor schicke bekomme ich folgende Werte: 254 182 54 255 255 255 und immer weiter 255. Wenn ich nun 182 und 54 zusammenfasse bekomme ich (auch für alle anderen Koeffizienten genauso) einen Wert der zum typischen Wert sehr gut passt.

Somit habe ich die 6 Koeffizienten bekommen, was mir aber ein wenig komisch vorkommt.

Wenn ich nun nach den "rohen" Temperatur und Druckwerten frage mit dem Kommando ADC Read (00000000), dann soll eine 24 bit Antwort für Druck und Temperatur zurückkommen. Schick ich das Kommando wie oben auch schon gemacht öfters in einem Array dann bekomme ich folgende Werte zurück:

254, 92, 85, 216, 127, 255, 255, 255 und 255 immer weiter.. (Dabei verändert sich der Arrayeintrag der hier bei 216 und 85 liegt bei jeder Abfrage. Die anderen bleiben gleich)

Ich kann auch davon ausgehen, dass die Werte 92 85 216 zur Temperatur gehören, denn wenn ich den Sensor umschließe werden die Werte kleiner. Dabei wird 92 ganz langsam kleiner dann die 85 und dann 216 ganz schnell.


Kann mir irgendjemand sagen ob das normal ist? Wenn ja wie ich meine Werte daraus ziehen soll
Und wenn nein was ich denn falsch mache.

Ich hänge mal meine Schaltung anbei..


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2015, 09:22
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Sensorauslesung SPI
Hallo Alighieri,

Zitat:Somit habe ich die 6 Koeffizienten bekommen, was mir aber ein wenig komisch vorkommt.
Entweder du bekommst korrekte Werte oder eben nicht.
Deiner Beschreibung nach sind die Werte korrekt…

Ich würde dir noch empfehlen, das VI aufzuräumen:
- Statt 6 einzelner Abfragen bietet sich eine Schleife an.
- IndexArray kann man aufziehen, man muss nicht jedes Arrayelement mit einer einzelnen Funktion auslesen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2015, 09:28
Beitrag #3

Alighieri Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Mar 2015

2011
-
kA



RE: Sensorauslesung SPI
(17.03.2015 09:22 )GerdW schrieb:  
Zitat:Somit habe ich die 6 Koeffizienten bekommen, was mir aber ein wenig komisch vorkommt.
Entweder du bekommst korrekte Werte oder eben nicht.
Deiner Beschreibung nach sind die Werte korrekt…

Ich denke auch sie sind korrekt. Aber dann bleibt noch die Frage was mit den zwei anderen Werten ist die ich nach dem ADC Read Command bekommen sollte. Wie tüftel ich diese zusammen, sodass ich nachher einen numerischen Wert bekomme, der dem typischen ähnelt.
Wenn ich den 2 und 3 Arrayeintrag zusammenfasse und dann diesen mit dem 1, bekomme ich 6049226. Was schonmal in der richtigen Größenordnung liegt.
Bleibt die Frage ist es Druck oder Temperatur und wenn eines davon wo ist der Wert für die andere Größe geblieben Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2015, 09:43 (Dieser Beitrag wurde zuletzt bearbeitet: 17.03.2015 09:44 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Sensorauslesung SPI

Akzeptierte Lösung

Hallo Alighieri,

Zitat:Bleibt die Frage ist es Druck oder Temperatur und wenn eines davon wo ist der Wert für die andere Größe geblieben
Manual lesen!

Dort steht auf Seite 11:
Zitat:The conversion command is used to initiate uncompensated pressure (D1) or uncompensated temperature (D2) conversion.
Und auf Seite 7 findest du alle "conversion commands" in einer Tabelle.
Du musst deinem Chip schon sagen, was er dir liefern soll…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.03.2015, 09:50
Beitrag #5

Alighieri Offline
LVF-Grünschnabel
*


Beiträge: 19
Registriert seit: Mar 2015

2011
-
kA



RE: Sensorauslesung SPI
Vollkommen logisch! Danke! Es kommt auch direkt das raus was rauskommen soll!
Ich wusste nicht das der Conversion Befehl zu jedem Auslesen gehört und vor dem ADC Read gehört und P und T auswählt.
Super danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: