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!
Sorry, hatte vergessen, meinen Output zu zeigen: 0000002438555667500 00000022842354974400 0000002152422464345380 000000212026218620
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.