Преобразовать значения из акселерометра в силы G - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь построить небольшой регистратор силы G с использованием esp8266 и mpu6050, мне удалось прочитать значения с датчика, и он выводит следующие данные: Data from sensor

Теперь мне интересно, как получить из этих данных читаемые человеком силы G?

Код, который я использую:

void loop() {
// read raw accel/gyro measurements from device
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

// these methods (and a few others) are also available
//accelgyro.getAcceleration(&ax, &ay, &az);
//accelgyro.getRotation(&gx, &gy, &gz);

#ifdef OUTPUT_READABLE_ACCELGYRO
    // display tab-separated accel/gyro x/y/z values
    Serial.print("a/g:\t");
    Serial.print(ax); Serial.print("\t");
    Serial.print(ay); Serial.print("\t");
    Serial.print(az); Serial.print("\t");
    Serial.print(gx); Serial.print("\t");
    Serial.print(gy); Serial.print("\t");
    Serial.println(gz);
#endif

#ifdef OUTPUT_BINARY_ACCELGYRO
    Serial.write((uint8_t)(ax >> 8)); Serial.write((uint8_t)(ax & 0xFF));
    Serial.write((uint8_t)(ay >> 8)); Serial.write((uint8_t)(ay & 0xFF));
    Serial.write((uint8_t)(az >> 8)); Serial.write((uint8_t)(az & 0xFF));
    Serial.write((uint8_t)(gx >> 8)); Serial.write((uint8_t)(gx & 0xFF));
    Serial.write((uint8_t)(gy >> 8)); Serial.write((uint8_t)(gy & 0xFF));
    Serial.write((uint8_t)(gz >> 8)); Serial.write((uint8_t)(gz & 0xFF));
#endif

// blink LED to indicate activity
blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState);}

1 Ответ

0 голосов
/ 12 июня 2018

Вы меняли масштабирование для акселерометра?Если вы используете + -8g, то вы получите деление на 4096, чтобы получить значения G.

Полный диапазон шкалы = чувствительность LSB

- / + 2g = 16384 LSB / g

- / + 4g = 8192 LSB / г

- / + 8g = 4096 LSB / г

- / + 16g = 2048 LSB / г

...