logo资料库

Arduino提高篇17—MPU6050姿态解算.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
Arduino提高篇提高篇17—MPU6050姿态解算 姿态解算 对于大多数MPU6050的应用来说,获取到的原始数据并没有多大用处,我们需要对原始数据进行姿态融合解算,最终得到姿 态数据,也就是三个欧拉角:航向角(yaw)、横滚角(roll)和俯仰角(pitch)。 MPU6050内部自带数字运动处理器(DMP)硬件加速引擎,配合运动驱动库直接输出四元数,进而很方便的计算出欧拉角,大 大降低了主控MCU的负担。本篇使用MPU6050的驱动库来获取姿态数据。 1. MPU6050驱动库安装 驱动库安装 MPU6050的驱动库有很多,我们可以在IDE中单击「项目」—「加载库」—「管理库」,在搜索栏输入”6050″,可以看到不 同的驱动库。 本篇我们使用的由国外大牛Jeff Rowberg开发的库并没有在列表中,需要下载后导入到Arduino。点击跳转到Github下载。
下载到的库文件其实是多种设备的IIC驱动库,我们这里只需要两个文件夹下的文件。解压后,进入”Arduino”文件夹,里面 的”I2Cdev”和”MPU6050″就是我们需要的文件。 找到Arduino的libraries文件路径,Windows下路径为”C:\Users\Tony\Documents\Arduino\libraries”,修改“Tony”为你的电脑用 户名。我们拷贝这两个文件夹到该路径下,至此库文件安装完成。
2. 实验材料 实验材料 Uno R3开发板 配套USB数据线 面包板及配套连接线 MPU6050传感器模块 3. 实验步骤 实验步骤 1. 根据原理图搭建电路图。 根据原理图搭建电路图。 MPU6050传感器模块的VCC、GND分别连接开发板的3.3V、GND,传感器的SDA、SCL引脚连接开发板A4、A5引脚。 实验原理图如下图所示: 实物连接图如下图所示:
2. 新建新建sketch,拷贝如下代码替换自动生成的代码并进行保存。 ,拷贝如下代码替换自动生成的代码并进行保存。 /* DMP MPU6050姿态解算 */ #include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" MPU6050 mpu; uint8_t fifoBuffer[64]; Quaternion q; VectorFloat gravity; float ypr[3]; void setup() { Serial.begin(115200); mpu.initialize(); mpu.dmpInitialize(); mpu.CalibrateAccel(6); mpu.CalibrateGyro(6); mpu.PrintActiveOffsets(); mpu.setDMPEnabled(true); } void loop() { if (mpu.dmpGetCurrentFIFOPacket(fifoBuffer)) { mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&gravity, &q); mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); Serial.print("ypr\t"); Serial.print(ypr[0] * 180 / M_PI); Serial.print("\t"); Serial.print(ypr[1] * 180 / M_PI); Serial.print("\t"); Serial.println(ypr[2] * 180 / M_PI); } } 3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。 连接开发板,设置好对应端口号和开发板类型,进行程序下载。
4. 实验现象 实验现象 打开串口监视器,波特率设置成与程序中相一致的115200。监视器中输出三个欧拉角数据,移动MPU6050,数据发生变化。 关注公众号「TonyCode」,后台回复“提高”,获取文中代码。
作者:TonyIOT
分享到:
收藏