Von LSB/g auf m/s²?

Gast #6246733
Lesenswert?

Guten Tag,

ich bin dabei, einen BMI160 Sensor von Bosch für zu verwenden und da ich 
ein ziemlicher Anfänger bin, habe ich da einige Fragen, hier ist das 
Datenblatt:
https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmi160-ds000.pdf

Ich möchte gerne die Beschleunigung (x,y,z) und Orientierung (x,y,z) 
messen und dann dementsprechend umrechnen. In einem Arduino Skript wird 
der Skalierungsbeschreich +/- 2g für Beschleunigung und 250dps für 
Orientierung verwendet. Auf Se.8 des Datenblatts steht, dass die 
Empfindlichkeit bei 2g 16384 LSB/g beträgt. Das Skript an sich liest aus 
den 12 Registern die Werte aus und packt sie in ein byte Array, das am 
Ende zurückgegeben wird:


  for (int i = 0; i < 12; i++)
  {
    // Read 12 bytes of data
    // xGyr lsb, xGyr msb, yGyr lsb, yGyr msb, zGyr lsb, zGyr msb
    // xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
   data[i]=readBMI(12+i); //Read from Register 12+i
    ble.print(data[i]); //send value to bluefruit uart
    Serial.print(data[i], HEX);
    Serial.print(" ");
    Serial.print(i);
    Serial.print(" ");
    if(i==11){
      ble.print(byte(0x00));
      }
  }
  Serial.println();

Meine Frage ist jetzt, ich bekomme solche Werte, wie kann ich nun meine 
Messwerte in m/s² und °/s bekommen? Also speziell, wie erhalte ich aus 
der LSB/g Angabe meine tatsächliche Beschleunigung?  Ich habe irgendwo 
gelesen, dass ich Beispielsweise für die X-Beschleunigung den Wert des 
Registers durch die 16384 LSB/g teilen muss, um g zu bekommen. Ist das 
korrekt so? Auf einer anderen Seite hat jemand eine Rechnung mit 
(2^15)/2*g gemacht, und die Rohdaten durch diesen Wert geteilt...

Vielen Dank!
Gast #6254711
Lesenswert?

Kleiner Tipp: Schau dir die Referenzimplementierung des BMI160 von Bosch 
auf GitHub.

Deren Treiber sind ein Beispiel von Schönheit im Code mit klar 
definierten Schnittstellen.

Im wesentliches ist es bei jeder MPU gleich: Es gibt vorgegebene 
Divisoren, je nach eingesetztem Range.

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