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

1.MPU6050 简介

2 硬件 连接

3 源码讲解& 例程测试

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

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

上图中2   正点原子 第65讲 MPU6050 六轴传感器实验 QQ860099671单位表示的是  度/每秒

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

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 六轴传感器实验 QQ860099671

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

 

 

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

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

 

 

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

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

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

 

 

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

下面看6050的DMP 的使用介绍

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

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

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

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

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

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

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

 其中 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 六轴传感器实验 QQ860099671

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

下图红框是6050驱动代码

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

上图为读取温度值

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

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

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

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

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

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

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

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

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

相关文章:

  • 2021-10-14
  • 2021-07-02
  • 2021-04-24
  • 2021-07-09
  • 2021-10-04
  • 2021-04-13
  • 2021-04-30
  • 2022-12-23
猜你喜欢
  • 2021-05-26
  • 2021-12-12
  • 2021-08-19
  • 2021-07-29
  • 2021-12-01
  • 2021-09-10
  • 2021-11-28
相关资源
相似解决方案