We are using a GY-521 Arduino MPU6050 breakout board, using Jeff Rowberg's DMP6 libaries.

However, when we read values from the sensor while it is held stationary, the values drift considerably, until they stabilize at a value after around 1 minute.

Is this expected behavior from these chips with these libraries? We've tried with more than 4 chips, and all drift.

Notably, the chip does not drift when we use the code at the Arduino playground (http://playground.arduino.cc/Main/MPU-6050).

Rowberg's code has additional functions that we need, however. How can we fix this?

  • \$\begingroup\$ Same problem here. I've also tried to decrease sensitivity but it seems DMP6 is already set to least sensitive settings. This page here inventige.com/… suggests RK4 filtering for decreasing drift errors. \$\endgroup\$
    – andig
    May 13, 2013 at 9:17
  • \$\begingroup\$ Check this link which explains compensating MPU6050 drifts with Kalman or Complimentary filtering. \$\endgroup\$
    – andig
    May 14, 2013 at 12:27

1 Answer 1


Did you remember to compensate for temperature? It is not coïncidence that the device has an integratged temperature sensor.

7.19 Digital Output Temperature Sensor

An on chip temperature sensor and ADC are used to measure the MPU-60X0 die temperature. The readings from the ADC can be read from the FIFO or the Sensor Data registers.

  • 1
    \$\begingroup\$ Could you elaborate on how the compensation should be done? \$\endgroup\$
    – andig
    May 13, 2013 at 9:14
  • \$\begingroup\$ Sorry, never did that myself. \$\endgroup\$
    – jippie
    May 13, 2013 at 18:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.