将值从加速度计转换为G力

时间:2018-06-05 21:25:21

标签: arduino accelerometer esp8266 arduino-esp8266 mpu6050

我正在尝试使用esp8266和mpu6050构建一个小型G力记录器,我已设法从传感器读取值并打印出以下数据: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 :(得分:0)

您是否更改了加速度计的比例?如果你使用+ -8g,那么你将除以4096得到G值。

满量程范围= LSB灵敏度

- / + 2g = 16384 LSB / g

- / + 4g = 8192 LSB / g

- / + 8g = 4096 LSB / g

- / + 16g = 2048 LSB / g