Beschleunigungssensor auslesen

Gast #3486462
Lesenswert?
• ▲
▼
Hallo,

ich lese die Register eines Beschleunigungssensor aus.
Laut Datenblatt:
These registers contain the X-axis, Y-axis, and Z-axis 14-bit 
left-justified sample data expressed as 2's complement numbers.

folgende Variablen werden eingelesen:
1
typedef struct
2
{
3
  int16_t x;
4
  int16_t y;
5
  int16_t z;
6
} SRAWDATA;
7

8
SRAWDATA Accel;
9

10
ReadAccelMagnData(&Accel);
11

12
float x = Accel.x / 16383.0;
13
float y = Accel.y / 16383.0;
14
float z = Accel.z / 16383.0;
15

16
g = sqrt(x * x + y * y + z * z);
ist das richtig dass man den Wert durch 16383 teilt?
Die Anzeige stimmt soweit.
X 0
Y 0
Z 1
Sensor liegt wagerecht!

aber bei höheren g Kräften wird zu wenig angezeigt(laut g kraft 
simulator)
Ich weiß nicht wie man das überprüfen kann.
#3486491
Lesenswert?
• ▲
▼
Wenn Z=1 rauskommt ist doch alles gut. Dreh den Sensor mal um. Gibt das 
dann Z=-1?

Ich hätte allerdings bei "14-bit left-justified sample data expressed as 
2's complement numbers" was anderes erwartet ...

Um weiterhelfen zu können: Welcher Sensor genau? Auf welchen 
Wertebereich von g konfiguriert? Und zeig mal die Rohdaten in Accel.

LG, Sebastian
#3486525
Lesenswert?
• ▲
▼
Klaus schrieb:
> Sensor = Freescale FXOS8700CQ
> Rohdaten:
> Accel.x -164
> Accel.y 712
> Accel.z 16232

Sieht doch gut aus. Wertebereich ist ±2g, als 14-bit left-adjusted 
2-complement also von -32768 bis 32764 mit den zwei untersten Bits immer 
0. Division durch 16383.0 oder 16384.0 ist also korrekt.

Wie gesagt: Probier erst mal alle Sensorpositionen durch wo eine Achse 
genau 1g erhält, und zwar plus und minus.

Dann halt den Sensor mal auf 45 Grad schräg, und kontrolliere, ob beide 
betroffenen Achsen so bei 0.7g landen.

LG, Sebastian
#3486572
Lesenswert?
• ▲
▼
Klaus schrieb:
> Wertebereich ist auf ±8g eingestellt.

Das scheint nicht so zu sein. Bei 1g liefert z 16232, das ist schon die 
Hälfte des int16-Wertebereichs. Mir scheint der Wertebereich bei ±2g zu 
liegen. Kontrollier das noch einmal.

> Bei 45° zeigen 2 Achsen 0,7, das passt denke ich.
> Wie könnte man höhere Werte testen?

Tja. Um eine Achse mit konstanter Winkelgeschwindigkeit rotieren lassen? 
Oder auf einem Schlitten über ein Fallgewicht konstant beschleunigen?

LG, Sebastian

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.