LabVIEWForum.de - Sensorauslesung SPI

LabVIEWForum.de

Normale Version: Sensorauslesung SPI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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..
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…
(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
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…
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
Referenz-URLs