STM32复习笔记(十六)MPU6050六轴传感器

发布者:bln898最新更新时间:2019-06-27 来源: eefocus关键字:STM32  MPU6050  六轴传感器 手机看文章 扫描二维码
随时随地手机看文章

一、什么是MPU6050?:

       MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件,内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP: Digital Motion Processor)硬件加速引擎,通过主IIC接口,可以向应用端输出完整的9轴姿态融合演算数据。


       有了DMP,我们可以使用InvenSense公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度 。


二、MPU6050的特点:

①自带数字运动处理( DMP: Digital Motion Processing ),可以输出6轴或9轴(需外接磁传感器)姿态解算数据。


②集成可程序控制,测量范围为±250、±500、±1000与±2000°/sec 的3轴角速度感测器(陀螺仪)


③集成可程序控制,范围为±2g、±4g、±8g和±16g的3轴加速度传感器  


④自带数字温度传感器


⑤可输出中断(interrupt),支持姿势识别、摇摄、画面放大缩小、滚动、快速下降中断、high-G中断、零动作感应、触击感应、摇动感应功能 


⑥自带1024字节FIFO,有助于降低系统功耗


⑦高达400Khz的IIC通信接口


⑧超小封装尺寸:4x4x0.9mm(QFN)


三、MPU6050框图:

四、MPU6050初始化:

①初始化IIC接口。


②复位MPU6050。由电源管理寄存器1(0X6B)控制。


③设置角速度传感器和加速度传感器的满量程范围。由陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置 。


④设置其他参数。配置中断,由中断使能寄存器(0X38)控制;设置AUX IIC接口,由户控制寄存器(0X6A)控制;设置FIFO,由FIFO使能寄存器(0X23)控制;陀螺仪采样率 ,由采样率分频寄存器(0X19)控制;设置数字低通滤波器,由配置寄存器(0X1A)控制。


⑤设置系统时钟。由电源管理寄存器1(0X6B)控制。一般选择x轴陀螺PLL作为时钟源,以获得更高精度的时钟。


⑥使能角速度传感器(陀螺仪)和加速度传感器。由电源管理寄存器2(0X6C)控制


初始化完成,即可读取陀螺仪、加速度传感器和温度传感器的数据了!!


五、寄存器介绍:

(1)电源管理寄存器1(0X6B):


(2)陀螺仪配置寄存器(0X1B):


该寄存器我们只关心FS_SEL[1:0]这两个位,用于设置陀螺仪的满量程范围:0,±250°/S;1,±500°/S;2,±1000°/S;3,±2000°/S;我们一般设置为3,即±2000°/S,因为陀螺仪的ADC为16位分辨率,所以得到灵敏度为:65536/4000=16.4LSB/(°/S)。


(3)加速度传感器配置寄存器(0X1C):


    该寄存器我们只关心AFS_SEL[1:0]这两个位,用于设置加速度传感器的满量程范围:0,±2g;1,±4g;2,±8g;3,±16g;我们一般设置为0,即±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):


(7)电源管理寄存器2(0X6C):


    该寄存器的LP_WAKE_CTRL用于控制低功耗时的唤醒频率,本例程用不到。剩下的6位,分别控制加速度和陀螺仪的x/y/z轴是否进入待机模式,这里我们全部都不进入待机模式,所以全部设置为:0 ,即可。


(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读到的温度传感器值。


六、DMP的使用:

    通过前面的学习,我们可以正常读取MPU6050的加速度传感器、陀螺仪和温度传感器的数据,但是实际使用的时候(比如做四轴),我们更希望得到姿态数据,即欧拉角:航向角(yaw)、横滚角(roll)和俯仰角(pitch)。


要得到欧拉角数据,就得利用我们的原始数据,进行姿态融合解算,这个比较复杂,知识点比较多,初学者不易掌握。而MPU6050自带了数字运动处理器,即DMP,并且,InvenSense提供了一个MPU6050的嵌入式运动驱动库,结合MPU6050的DMP,可以将我们的原始数据,直接转换成四元数输出,而得到四元数之后,就可以很方便的计算出欧拉角,从而得到yaw、roll和pitch。


    使用内置的DMP,可以大大简化代码设计,MCU不用进行姿态解算过程,大大降低了MCU的负担,从而有更多的时间去处理其他事件,提高系统实时性。


    InvenSense提供的MPU6050运动驱动库是基于MSP430的,我们需要将其移植一下,才可以用到STM32上面。官方原版驱动在光盘à增值资料àALIENTEK 产品资料àATK-MPU6050六轴传感器模块àMPU6050参考资料àDMP资料:


        Embedded_MotionDriver_5.1.rar


        Embedded Motion Driver V5.1.1 API 说明.pdf


        Embedded Motion Driver V5.1.1 教程.pdf



    MPU6050 DMP输出的是姿态解算后的四元数,采用q30格式,也就是放大了2的30次方,我们要得到欧拉角,就得做一个转换,代码如下:


      q0=quat[0] / q30; //q30格式转换为浮点数

      q1=quat[1] / q30;

      q2=quat[2] / q30;

      q3=quat[3] / q30; 

      //计算得到俯仰角/横滚角/航向角

      pitch=asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; //俯仰角

      roll=atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3;//横滚角

      yaw=atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;    //航向角

quat[0]~quat[3]:是MPU6050的DMP解算后的四元数,q30格式。


q30:是一个常量:1073741824,即2的30次方。


57.3:是弧度转换为角度,即180/π,这样结果就是以度(°)为单位的。


七、重要函数:

1,MPU6050 IIC接口驱动代码


2,MPU_Init函数


3,MPU_Get_Gyroscope函数


4,MPU_Get_Accelerometer函数


5,MPU_Get_Temperature函数


 


1,DMP移植相关代码


        i2c_write、i2c_read、delay_ms和get_ms.


2, mpu_dmp_init函数


3, mpu_dmp_get_data函数


关键字:STM32  MPU6050  六轴传感器 引用地址:STM32复习笔记(十六)MPU6050六轴传感器

上一篇:STM32串口——5个串口的使用方法
下一篇:STM32复习笔记(十五)红外遥控

推荐阅读最新更新时间:2024-11-03 21:28

STM32 IAP/BOOT,三步速成
Stm32的IAP现在已经是非常简单了,下面就教大家三步学成: 前提条件:已经有Flash读写函数,这个函数好弄,很多stm32例程里面都有 第一步(对于Boot程序):跳转到指定Flash位置函数,如下: void Jump_To_Application(const u32 startAddr) { Jump_To_App = (pFunction)(*(vu32*) (startAddr + 4)); MSR_MSP(*(vu32*) startAddr); Jump_To_App(); } 第二步(对于APP):在keil工程配置里设置程序起始地址和APP程序大小,如图: 第三步(对于APP):如果APP中涉及
[单片机]
STM32学习笔记之DMA使用
实验:控制串口一以DMA方式发送(TX)数据 一、初始化DMA 对STM32任何模块使用前都要对其初始化、首先就是初始化外设时钟,查看时钟 数可知DMA时钟由AHB得来。 初始化时钟:RCC- AHBENR|=1 0; 在读数据手册可知:直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。 两个DMA控制器有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。我们实
[单片机]
<font color='red'>STM32</font>学习笔记之DMA使用
STM32基础11--模数转换(ADC)
前言 在做51单片机项目时,如果需要对外围电路进行电压测量时,往往会在51单片机上面外挂一个ADC转换芯片(例如ADC0809)。但在STM32F407中,不再需要这么干了,因为在STM32的内部就已经集成了ADC电路。 STM32中有3个最高分辨率为12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部 源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续 采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。 注:虽然有3个ADC,它们的引脚复用的。也就是它们有的IN脚有些是两个ADC或
[单片机]
<font color='red'>STM32</font>基础11--模数转换(ADC)
STM32几种操作的寄存器版本和库函数版本对比
1、USART1接收完成标志检测 USART1- SR&0X40 == 0 USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET 2、USART1发送数据 USART1- DR = (u8) ch; USART_SendData(USART1,(u8)ch);
[单片机]
STM32学习笔记-Flash作为存储器储存数据
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据。 自己收集了一些资料,现将这些资料总结了一下,不想看的可以直接调到后面看怎么操作就可以了。 FLASH分类 根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程序,我们写的程序一般存储在这里。 信息块又分成两部分:系统存储器、选项字节。 系统存储器存储用于存放在系统存储器自举模式下的启动程序(BootLoader),当使用ISP方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入Boot
[单片机]
意法半导体(ST)新推出手持开发工具
      2009年2月5日微控制器供应商意法半导体为更进一步帮助产品设计工程师快速而独立地验证产品设计概念,在中国推出升级换代的独立运作的手持嵌入系统设计平台系列产品,在原产品的基础上增加了丰富的功能,如触摸屏显示器、内置音频功能和一个扩展连接器。       最新的STM32 开发工具 Primer2的尺寸相当于一个手机,配置128x160像素的彩色触摸屏显示器、方向控制按键、扩展连接器,预装多个应用程序示例,还内置一个USB接口和一个MicroSD存储卡插槽,以及让用户给应用增加更多功能的外设,例如加速传感器和红外线收发器。通过内置的开源CircleOS软件框架,用户可以轻松地管理所有组件。       意法半导体
[嵌入式]
HASH算法加密芯片的工作原理及其在STM32 MCU上的应用
摘要: 本文主要研究了HASH算法加密芯片的工作原理及其在STM32 MCU上的应用,实现了外部加密芯片对STM32 MCU的程序保护,目前的技术手段无法对其进行破解,其安全性优于其它加密方式。本文首先介绍了SHA256算法的特点。分析了外部加密芯片加密MCU的基本原理和加密安全性的理论分析。并以LCS4110R为例介绍了在STM32F103上的应用,包括软件和硬件。通过本文的论述,开发者可以对外部加密芯片加密MCU有一个理论的认识,并且对于加密芯片的应用提供参考和借鉴,对于MCU安全保护具有一定的参考价值和实用价值。同时,凝睿电子科技开发和支持了行业中比较有代表性的Maxim DS28E15, LCS4110R, RJGT102
[单片机]
HASH算法加密芯片的工作原理及其在<font color='red'>STM32</font> MCU上的应用
STM32单片机-加密烧录Hex
一、专用烧录器加密烧录Hex 1、使用ST官方的下载器 ----------------------------------------------------------- 2、其他公司烧录器 ----------------------------------------------------------------------------------------------------------------- 二、J-Link加密烧录Hex 1、简述 本处以烧写STM32F103VET6说明,软件:Flasher_Windows_V722a(百度网盘搜索文件名或移步download.csdn.net
[单片机]
<font color='red'>STM32</font>单片机-加密烧录Hex
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved