Buenas! Yo he empleado un MPU6050 en varias ocasiones y para evitar un poco el ruido de las vibraciones lo que hago es hacer 50 lecturas (o mas) y tomar la media como el valor "real" del inclinometro, así evitas que te salgan cosas raras de vez en cuando.
Te posteo un trozo de codigo para que puedas verlo mejor ![]()
float posicionreal() {
//Lectura modulo MCU6050
G1MED = 0.0;
for (int n = 1; n <= 50; n++) {
Wire.beginTransmission(MPU);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(MPU, 6, true);
AcX = Wire.read() << 8 | Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)
AcY = Wire.read() << 8 | Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
AcZ = Wire.read() << 8 | Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
float gax = AcX;
float gay = AcY;
float gaz = AcZ;
G1GRA = 180.0 / 3.1416 * atan(gax / sqrt(gay * gay + gaz * gaz));
G1MED = G1GRA + G1MED;
delay(10);
}
G1MED = G1MED / 50.0;
return G1MED;
}