正点原子 第65讲 MPU6050 六轴传感器实验

正点原子 第65讲 MPU6050 六轴传感器实验_第1张图片

1.MPU6050 简介

2 硬件 连接

3 源码讲解& 例程测试

正点原子 第65讲 MPU6050 六轴传感器实验_第2张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第3张图片

上图中2   单位表示的是  度/每秒

正点原子 第65讲 MPU6050 六轴传感器实验_第4张图片

INT  为中断输出脚

CS 为片选脚

AD0/SD0   用于设置地址    AD0=0  地址=0x68    AD0=1   地址=0x69     表示为二进制是1101000X,

最低位可以是 0 也可以说是 1 , 由于  IIC地址不包含最低位    所以  对应就是0xD0,或者0xD1

主 IIC  SCL(SCLK)      

          SDA(SDI)

 从IIC  AUX_CL

           AUX_DA

FSYNC  暂时没用

 

 

正点原子 第65讲 MPU6050 六轴传感器实验_第5张图片

复位 MPU6050  ,设置加速度传感器 和角速度传感器的满量程范围

 

 

正点原子 第65讲 MPU6050 六轴传感器实验_第6张图片

这里要特别注意时钟源的选择,一般以陀螺仪的X轴作为参考,所以设置为 001

 

 

正点原子 第65讲 MPU6050 六轴传感器实验_第7张图片

bit7-bit5  是用于传感器自测的,一般不进行设置。只需要看  bit4-3,他们用于设置陀螺仪的满量程范围

这里 灵敏度  为  16.4 LSB/(°/s)  ,也是分辨率为  16.4个LSB代表陀螺仪的速度是  1度/秒

 

 

正点原子 第65讲 MPU6050 六轴传感器实验_第8张图片

同样也只看 bit3-4, 这里它的量程我们设为2g,那么 1g的变化可以细分为  16384个等分,它的精度是最高的。

 

 

正点原子 第65讲 MPU6050 六轴传感器实验_第9张图片

如果不使用传感器的DMP功能的时候,可以禁用FIFO.

陀螺仪的FIFO使能由3个位单独控制,加速度传感器由 bit3 一个位控制。

正点原子 第65讲 MPU6050 六轴传感器实验_第10张图片

当 DLPF_CFG设置为 0或者7 的时候,输出频率( Fs(Khz) )为  8Khz,其他情况是输出频率是1khz,

带宽DLPF_CFG[2:0] 决定  输出频率Fs(Khz)(8或1)   和 采样频率

正点原子 第65讲 MPU6050 六轴传感器实验_第11张图片

这里设置的时候,  带宽要等于1/2 的采样率。  

正点原子 第65讲 MPU6050 六轴传感器实验_第12张图片

这个在使用6050 的低功耗  设置的时候是需要用到的

正点原子 第65讲 MPU6050 六轴传感器实验_第13张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第14张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第15张图片

下面看6050的DMP 的使用介绍

正点原子 第65讲 MPU6050 六轴传感器实验_第16张图片

这里是  正点原子移植好的mpu6050 的 DMP驱动库

正点原子 第65讲 MPU6050 六轴传感器实验_第17张图片

经过 DMP 处理后输出的 四元数存放在· quat 这个数组当中。这里的换算公式可以去百度学习。

正点原子 第65讲 MPU6050 六轴传感器实验_第18张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第19张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第20张图片

 其中 IIC 的 两个引脚  SDA SCL带了上拉电阻, VCC  GND  接进去以后经过  RT9193 稳压,支持 5V和3.3V 系统。

SCL SDA  INT  AD0脚还串有 120欧的电阻作电平 匹配。AD0 内部带了 一个10K的下拉电阻,如果  MPU_AD0 这个脚什么·都不接的话,那么地址就是0x68(0xD0),如果接VCC那就是0x69(0xD1)

正点原子 第65讲 MPU6050 六轴传感器实验_第21张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第22张图片

下图红框是6050驱动代码

正点原子 第65讲 MPU6050 六轴传感器实验_第23张图片

这里主要看看  mpuiic.h 里面对 12c接口方向的设置

正点原子 第65讲 MPU6050 六轴传感器实验_第24张图片

这里说一下  ,关于IO口方向的问题,

正点原子 第65讲 MPU6050 六轴传感器实验_第25张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第26张图片

根据寄存器表中 MODER 寄存器的描述,每两个位表示一个 IO口,每组 IO口有15个IO。 例如 GPIOB0-GPIOB15

这行代码就表示  GPIOB9 写  11 再取反,表示 清除 GPIOB9  MODER 寄存器。然后 给 GPIOB9  MODER 寄存器写00 表示为输入

正点原子 第65讲 MPU6050 六轴传感器实验_第27张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第28张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第29张图片

上图为读取陀螺仪的原始数据,读取出来的数据放在 buf里面,高字节在前,低字节在后。

正点原子 第65讲 MPU6050 六轴传感器实验_第30张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第31张图片

上图为读取温度值

正点原子 第65讲 MPU6050 六轴传感器实验_第32张图片

接下来先看看DMP的驱动代码。相关代码在 下图所示的位置。

正点原子 第65讲 MPU6050 六轴传感器实验_第33张图片

接下来看 DMP 代码的初始化,这里 包含了很多函数,完整的需要下载 原子的例程 来看。

正点原子 第65讲 MPU6050 六轴传感器实验_第34张图片

正点原子 第65讲 MPU6050 六轴传感器实验_第35张图片

上面代码为 通过DMP获取四元数以后的 欧拉角(pitch\roll\yaw)计算。

这里用到了  匿名四轴上位机软件 ,所以波特率设置要为500k,

注意:杜邦线接MPU的时候 DMP初始化有可能会出错,因为干扰较多。  方法是将杜邦线 接短一点,将模块放平,一般初始化就能通过了。

你可能感兴趣的:(物联网)