一、MPU6050简介

MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件,内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP: Digital Motion Processor)硬件加速引擎,通过主IIC接口,可以向应用端输出完整的9轴姿态融合演算数据。有了DMP,我们可以使用InvenSense公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度 。

二、寄存器介绍

1、电源管理寄存器1(0x6B)

  • DEVICE_RESE=1,复位MPU6050,复位完成后,自动清零。

  • SLEEP=1,进入睡眠模式;SLEEP=0,正常工作模式。

  • TEMP_DIS,用于设置是否使能温度传感器,设置为0,则使能。

  • CLKSEL[2:0],用于选择系统时钟源,如下图所示:

    2、陀螺仪配置寄存器(0x1B)

  • FS_SEL[1:0]:用于设置陀螺仪的满量程范围:00,±250°/S;01,±500°/S;10,±1000°/S;11,±2000°/S;一般设置为3,即±2000°/S,因为陀螺仪的ADC为16位分辨率,所以得到灵敏度为:65536/4000=16.4LSB/(°/S)。
    3、加速度传感器配置寄存器(0x1C)

  • AFS_SEL[1:0]:用于设置加速度传感器的满量程范围。00,±2g;01,±4g;10,±8g;11,±16g;我们一般设置为00,即±2g,因为加速度传感器的ADC也是16位,所以得到灵敏度为:65536/4=16384LSB/g。
    4、FIFO使能寄存器(0x23)

  • 该寄存器用于控制FIFO使能,在简单读取传感器数据的时候,可以不用FIFO,设置对应位为:0,即可禁止FIFO,设置为1,则使能FIFO。
    注意:加速度传感器的3个轴,全由1个位(ACCEL_FIFO_EN)控制,只要该位置1,则加速度传感器的三个通道都开启FIFO了
    5、陀螺仪采样率分频寄存器(0x19)

  • 该寄存器用于设置MPU6050的陀螺仪采样频率。

  • 计算公式为: 采样频率 = 陀螺仪输出频率 / (1+SMPLRT_DIV)
    这里陀螺仪的输出频率,是1Khz或者8Khz,与数字低通滤波器(DLPF)的设置有关,当DLPF_CFG=0/7的时候,频率为8Khz,其他情况是1Khz。而且DLPF滤波频率一般设置为采样率的一半。采样率,我们假定设置为50Hz,那么:SMPLRT_DIV=1000/50-1=19。
    6、配置寄存器(0x1A)

  • 重点看数字低通滤波器(DLPF)的设置位,即:DLPF_CFG[2:0],加速度计和陀螺仪,都是根据这三个位的配置进行过滤的,如下表:

    7、电源管理寄存器2(0x6C)

  • 该寄存器的LP_WAKE_CTRL用于控制低功耗时的唤醒频率。剩下的6位,分别控制加速度和陀螺仪的x/y/z轴是否进入待机模式。
    8、加速度传感器数据输出寄存器(0x3B~0x40)

  • 加速度传感器数据输出寄存器总共由6个寄存器组成,输出X/Y/Z三个轴的加速度传感器值,高字节在前,低字节在后。
    9、陀螺仪数据输出寄存器(0x43~0x48)

  • 陀螺仪数据输出寄存器总共由6个寄存器组成,输出X/Y/Z三个轴的陀螺仪传感器数据,高字节在前,低字节在后。
    10、温度传感器数据输出寄存器(0x41~0x42)

  • 通过读取0X41(高8位)和0X42(低8位)寄存器得到。

  • 温度换算公式为: Temperature = 36.53 +regval/340
    其中,Temperature为计算得到的温度值,单位为℃,regval为从0X41和0X42读到的温度传感器值。

三、MPU6050初始化流程

  • ①初始化IIC接口。
  • ②复位MPU6050。由电源管理寄存器1(0X6B)控制。
  • ③设置角速度传感器和加速度传感器的满量程范围。由陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置 。
  • ④设置其他参数。配置中断,由中断使能寄存器(0X38)控制;设置AUX
    IIC接口,由户控制寄存器(0X6A)控制;设置FIFO,由FIFO使能寄存器(0X23)控制;陀螺仪采样率
    ,由采样率分频寄存器(0X19)控制;设置数字低通滤波器,由配置寄存器(0X1A)控制。
  • ⑤设置系统时钟。由电源管理寄存器1(0X6B)控制。一般选择x轴陀螺PLL作为时钟源,以获得更高精度的时钟。
  • ⑥使能角速度传感器(陀螺仪)和加速度传感器。由电源管理寄存器2(0X6C)控制
    代码:
//初始化MPU6050
//返回值:0,成功
//    其他,错误代码
u8 MPU_Init(void)
{ u8 res;IIC_Init();//初始化IIC总线MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);   //复位MPU6050delay_ms(100);MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);    //唤醒MPU6050 MPU_Set_Gyro_Fsr(3);                    //陀螺仪传感器,±2000dpsMPU_Set_Accel_Fsr(0);                  //加速度传感器,±2gMPU_Set_Rate(50);                       //设置采样率50HzMPU_Write_Byte(MPU_INT_EN_REG,0X00); //关闭所有中断MPU_Write_Byte(MPU_USER_CTRL_REG,0X00); //I2C主模式关闭MPU_Write_Byte(MPU_FIFO_EN_REG,0X00); //关闭FIFOMPU_Write_Byte(MPU_INTBP_CFG_REG,0X80); //INT引脚低电平有效res=MPU_Read_Byte(MPU_DEVICE_ID_REG);if(res==MPU_ADDR)//器件ID正确{MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);   //设置CLKSEL,PLL X轴为参考MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00); //加速度与陀螺仪都工作MPU_Set_Rate(50);                       //设置采样率为50Hz}else return 1;return 0;
}

感谢收看!!!

MPU6050六轴传感器相关推荐

  1. Micro Python———MPU6050六轴传感器

    目录 1.什么是MPU6050? MPU6050介绍: MPU6050寄存器介绍: 2.例程 1.平台 2.目的 3.讲解 1.查阅原理图 2.流程分析 3.代码讲解 3.结果 1.什么是MPU605 ...

  2. mpu6050六轴传感器msp430驱动程序

    玩智能车的可以参考 #include <msp430g2553.h> #include"mpu6050.h" #include "USCI_A0.h" ...

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

    1.MPU6050 简介 2 硬件 连接 3 源码讲解& 例程测试 上图中2   单位表示的是  度/每秒 INT  为中断输出脚 CS 为片选脚 AD0/SD0   用于设置地址    AD ...

  4. 《手把手教你学STM32》—MPU6050六轴传感器实验

    预备知识(基于STM32开发板(正点原子)) 1.MPU6050简介 1.1.MPU6050简介-什么是MPU6050? MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件, ...

  5. i.MX6ULL终结者MPU6050 六轴传感器例程原理分析

    MPU6050的原理部分,如图 1所示: 图 1 从原理我们可以看到MPU6050的电源使用3.3V,和i.MX6ULL通过I2C2接口,地址选择引脚AD0接到了GND上.

  6. 如何利用小熊派获取MPU6050六轴原始数据

    摘要:使用小熊派开发板,通过硬件IIC与MPU6050六轴传感器模块通信,完成相应寄存器配置,成功获取陀螺仪.加速度计数据. 本问主要讲述使用小熊派开发板+MPU6050六轴传感器,获取加速度计以及陀 ...

  7. 六轴传感器基础知识学习:MPU6050特性,四元数,姿态解算,卡尔曼滤波

    实际上,只要说到多少轴的传感器一般是就是指加速度传感器(即加速计).角速度传感器(即陀螺仪).磁感应传感器(即电子罗盘).这三类传感器测量的数据在空间坐标系中都可以被分解为X,Y,Z三个方向轴的力,因 ...

  8. STM32学习值传感器篇——MPU6050六轴加速度传感器

    这个传感器整体来说不难只要将模拟iic的时序写对基本问题不大 剩下的驱动文件 按照我介绍的加进去就可以实现了,还是有官方算法的好啊,直接用就完事了,很方便,节省了不少代码开发时间, 注意mpu6050 ...

  9. 基于战舰V3的MPU6050六轴陀螺仪实验

    基于战舰V3的MPU6050六轴陀螺仪实验 陀螺仪的分类 3轴传感器指的是3轴的加速度,根据这个加速度我们解算出XY两轴的角度. 6轴传感器指的是3轴的加速度和3轴角速度,根据这两个数据我们解算出XY ...

  10. 【STM32Cube】学习笔记(三):六轴传感器

    文章目录 摘要 一.简介 1.I2C原理 2.MPU6050介绍 3.MPU6050寄存器介绍 4.DMP使用 二.硬件电路设计 三.软件设计 1.CubeMX配置 2.CubeIDE代码 3.结果显 ...

最新文章

  1. 吴甘沙:天外飞“厕”、红绿灯消失,未来无人驾驶将被重新定义
  2. TTCN-3 编码解码相关模块引入2
  3. Objdump查看汇编和源码
  4. KingDZ 变菜鸟,每日一个C#小实例之---C#MessageBox小技巧
  5. 现代计算机第一代电子元件,计算机基础备课讲稿.ppt
  6. 智能小区计算机网络系统,智能住宅小区综合布线系统方案
  7. 宝塔linux 屏蔽ip,宝塔屏蔽国外IP保护网站安全
  8. AlphaGo Zero算法讲解
  9. RFC 2544 标准—以太网测试仪
  10. 心电信号去噪python
  11. php 爬虫 执行js,php爬虫执行js,php执行js
  12. cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library
  13. 基于JavaEE的人力资源管理系统的设计与实现任务书与开题报告
  14. 格林第一季/全集Grimm迅雷下载
  15. 华为新机预装鸿蒙,华为后续新机直接预装鸿蒙OS:Mate 40 Pro 4G版或首发
  16. background图片叠加_css在图片上叠加层(其他图标)
  17. 京东优惠券获取、分析
  18. c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)
  19. Cortex-M3概览
  20. stata统计分析及行业应用案例分析_描述性统计分析的应用——基于描述性统计分析识别优质股票...

热门文章

  1. wenz ces123
  2. 三款较好的代码比较工具Beyond compare、DiffMerge、WinMerge
  3. javascript 倒计时插件
  4. php实现银联扫码支付
  5. 美颜滤镜API算法代码解析
  6. 旧版创维电视怎么投屏?不用数据线就能投屏的方法
  7. android怎么备份镜像文件,如何备份手机系统镜像? - Android系统区 - 无忧启动论坛 - Powered by Discuz!...
  8. 鸟哥的linux私房菜——蔡德明
  9. 3d打印英语文献_3D打印模型在腹腔镜肝胆微创手术术前培训中的应用
  10. VS2017自带打包软件