In this video lesson we describe how to measure roll, pitch, and yaw using the MPU6050. We describe the issues associated with drift in these gyros and will propose a path forward in dealing with the drift issue.
We are using the following circuit for this project:
And this is the code we develop in today’s lesson.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | from imu import MPU6050 from machine import I2C,Pin import math import time i2c=I2C(0, sda=Pin(16), scl=Pin(17), freq=400000) mpu = MPU6050(i2c) roll=0 pitch=0 yaw=0 tLoop=0 cnt=0 while True: tStart=time.ticks_ms() xGyro=mpu.gyro.x yGyro=mpu.gyro.y zGyro=mpu.gyro.z roll=roll+yGyro*tLoop pitch=pitch+xGyro*tLoop yaw=yaw+zGyro*tLoop cnt=cnt+1 if cnt==10: cnt=0 print('R: ',roll,'P: ',pitch,'Y: ',yaw) tStop=time.ticks_ms() tLoop=(tStop-tStart)*.001 |