好文档 - 专业文书写作范文服务资料分享网站

MPU6050教程

天下 分享 时间: 加入收藏 我要投稿 点赞

MPU6050教程

1.1MPU6050简介

如果你想玩四轴,想搞什么空中鼠标,平衡车等待,那么MPU6050真的是太强大了,能做很多东西。

玩MPU6050的步骤:

1.学习I2C,I2C就是MPU6050传送数据到单片机的一种协议,类似于USB,当然USB还是比较有难度的。

2.了解MPU6050相关寄存器,有中文版本的,一边学一边看例程就可以获取数据了。

3.把获取的数据进行各种处理。1.2IIC简介

IIC可以去看下我们野火相关的教程,在这里只是简单地介绍下,先看下我们的书或者教程,从EEPROM里面写入和读取数据,因为EEPROM写入和读取数据也是根据I2C协议来的。I2C有分软件和硬件,软件就你通过对I2C的时钟线和数据线,可能你不知道时钟线和数据线,那还是先去学I2C的基础教程。

软件模拟I2C就是根据下面的图然后再适当的时候给时钟线和数据线高低,具体可以看I2C的协议见图1-1。

图1-1IIC起始字节时序图第错误!未定义书签。页共10页这部分学习的诀窍就是:先写下I2C通讯的一个环节就好了,比如起始字节,其他的也是大同小异,直接上网找例程就好了,想要用软件模拟出全部的时序当然也可以。

还有一个方式可以用I2C读写数据,就是硬件I2C,硬件I2C就是单片机内部的电路,可以将I2C的时序用硬件电路搞出来,这样子你读写数据就方便很多了。STM32硬件I2C可以去看我们野火的教程。1.3读取MPU6050原始数据

我们先来认识下MPU6050的硬件,这是MPU6050模块的图片,注意是模块,中间那个才是MPU6050,只有MPU6050是不够的,还要有一些外围电路才行,这就跟51芯片跟最小系统的区别一样。

图1-2MPU6050模块正面第错误!未定义书签。

页共10页图1-3MPU6050模块背面管脚名称VCCGNDSCLSDAXCLXDAAD0INT说明

3.3-5V(内部有稳压芯片)地线

MPU6050作为从机时IIC时钟线MPU6050作为从机时IIC数据线MPU6050作为主机时IIC时钟线MPU6050作为主机时IIC数据线

地址管脚,该管脚决定了IIC地址的最低一位中断引脚这里重点讲解AD0的作用,I2C通讯中从机是要有地址的,以区别多个从机。当AD0管脚接低电平的时候,从机地址是0xD0。从MPU6050的寄存器中我们可以得到答案,MPU6050作为一个IIC从机设备的时候,有8位地址,高7位的地址是固定的,就是WHOAMI寄存器的默认——0x68,最低的一位是由AD0的连线决定的。

第错误!未定义书签。

页共10页图1-40x68和0xD0的二进制图1-5WHOAMI寄存器读取原始数据这个过程中一个很重要的思路就是一步一步,确保每步都对之后就很容易读出正确的数据。我们对MPU6050进行读写传感器数据就是对MPU6050的寄存器用I2C进行读写。我们还要了解下MPU6050的寄存器,这个过程跟学习52单片机没有什么区别,就是配置寄存器,读取数据。

先来看下软件IIC读取MPU6050例程里面的初始化MPU6050的函数,

1voidMPU6050_Init(void)2{3inti=0,j=0;4//在初始化之前要延时一段时间,若没有延时,则断电后再上电数据可能会出错6for(i=0;i<1000;i++){7for(j=0;j<1000;j++){8;9}10}11PMU6050_WriteReg(MPU6050_RA_PWR_MGMT_1,0x00);12//解除休眠状态13PMU6050_WriteReg(MPU6050_RA_SMPLRT_DIV,0x07);14//陀螺仪采样率,1KHz15PMU6050_WriteReg(MPU6050_RA_CONFIG,0x06);16//低通滤波器的设置,截止频率是1K,带宽是5K1718PMU6050_WriteReg(MPU6050_RA_ACCEL_CONFIG,0x00);19//配置加速度传感器工作在2G模式,不自检2021PMU6050_WriteReg(MPU6050_RA_GYRO_CONFIG,0x18);22//陀螺仪自检及测量范围,典型值:0x1238(不自检,2000deg/s)24}下面这句为什么可以解除休眠状态呢?至于为什么要接触休眠状态就要看MPU6050的datasheet。

1PMU6050_WriteReg(MPU6050_RA_PWR_MGMT_1,0x00);第错误!未定义书签。

页共10页2//解除休眠状态首先Single_WriteI2C();是给MPU6050寄存器写入数据的一个函数,需要有寄存器的地址,关于寄存器的描述,教程的文件夹有两个文档。一个是中文版,一个是英文版,中文版看得不是很明白,可能翻译得不好,英语可以的可以看下英文版本的。

首先找到PWR_MGMT_1是某个寄存器的地址,其值如下

1#defineMPU6050_RA_PWR_MGMT_10x6B我们在文档中找到地址为0x6B的寄存器,看下说明,可以知道为什么发送0x00给这个寄存器。慢慢地这样子去读,配合MPU6050的寄存器文档。获取数据也是差不多的。这个过程自己慢慢去看MPU6050的datasheet就好了,方法已经介绍。

如果整个过程顺利的话,你可以用串口获得类似下面的数据。怎么检验这些数据是不是对的,我直接将手放在MPU6050上面,可以看到温度稍微会升高,而且我移动MPU6050的时候,数据会变化。初步证明数据是对的。

图1-6串口数据读取原始数据第错误!未定义书签。

页共10页

MPU6050教程

MPU6050教程1.1MPU6050简介如果你想玩四轴,想搞什么空中鼠标,平衡车等待,那么MPU6050真的是太强大了,能做很多东西。玩MPU6050的步骤:1.学习I2C,I2C就是MPU6050传送数据到单片机的一种协议,类似于USB,当然USB还是比较有难度的。2.了解MPU6050相关寄存器,有中文版本的,一边学
推荐度:
点击下载文档文档为doc格式
0nfl49i19123x6i11q50
领取福利

微信扫码领取福利

微信扫码分享