0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32入门学习笔记之MPU6050传感器解析实验1

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 14:53 次阅读

19.1 MPU6050简介

19.1.1 芯片概述

MPU6050是InvenSense公司推出的一款6轴运动处理芯片,内置3轴陀螺仪及3轴速度传感器,内置两组I2C接口,其中一组用于通信,另一组则用于连接外部磁力传感器,采用自带的数字运动处理器DMP(Digital Motion Processor),通过主I2C接口,直接读取完整的9轴融合演算数据。MPU6050检测轴及其检测方向如下图所示。

图片

19.1.2 引脚介绍

图片

MPU6050采用QFN-24封装,端口描述如下表所示。

引脚编号 引脚名称 功能
1 CLKIN 外部参考时钟输入,如果不使用直接接地
2 NC 空引脚
3 NC 空引脚
4 NC 空引脚
5 NC 空引脚
6 AUX_DA 从I2C接口数据口,用于连接磁传感器的SDA组成九轴传感器
7 AUX_CL 从I2C接口时钟口,用于连接磁传感器的SCL组成九轴传感器
8 VLOGIC IO口逻辑电平,最低可以设置1.8V,默认连接VDD
9 AD0 I2C接口地址控制端,端口为高电平默认地址0x69,端口为低电平默认地址0x68
10 REGOUT 外接稳压器的滤波电容
11 FSYNC 帧同步数字输入,如果不使用直接接GND
12 INT 中断信号输出(可以配置为开漏输出)
13 VDD 电源正极,供电范围0.5V~6VDC
14 NC 空引脚
15 NC 空引脚
16 NC 空引脚
17 NC 空引脚
18 GND 电源地
19 RESV 保留
20 CPOUT 外部电荷泵电容
21 RESV 保留
22 RESV 保留
23 SCL 主I2C接口时钟
24 SDA 主I2C接口数据

19.1.3 硬件威廉希尔官方网站

图片

由于MPU6050内部是可以自动计算X,Y和Z轴的方向及加速度的,使用者可以不考虑实际的数据转换问题,但是为了详细的了解MPU6050的计算过程,使用者最好还是应该具备了解原始数据如何转换为我们需要的角度与加速度值。

19.2 姿态解算与融合算法基础概念

19.2.1 方向矩阵

设有一个三位直角坐标系Oxyz,如下图所示。

图片

19.2.2 方向余弦矩阵

图片

19.2.3 欧拉角

欧拉角是用于确定定点转动缸体位置的3个1组的独立角参量,由章动角θ,旋转角(进动角)ψ和自转角φ组成,欧拉角有多种取法,下面是比较常见的一种。

图片

如上图所示,由定点O做出固定坐标系Oxyz以及固定连在刚体的坐标系Ox’y’z’,以轴Oz和Oz’为基本轴。其垂直面Oxy和Ox’y’为基本平面,由轴Oz量到Oz’的角度θ称为章动角,平面zOz’的垂线ON称为节线,同时ON又是基本平面Ox’y’和Oxy的交线,在右手坐标系中,由ON的正端看,角θ应按照逆时针方向计算,由固定轴Ox到节线ON的角度ψ称为进动角,也叫作旋转角,由节线ON到动轴Ox’的角度φ称为自转角,有Oz和Oz’正端看,进动角ψ与自转角φ也应该按照逆时针方向计算。

从上面的描述过程可以发现,欧拉角实际是可以分解成三步来计算的:

第1步:绕z轴旋转α,使得x轴与N轴重合

第2步:绕x轴旋转β,使z轴与旋转后的z轴重合

第3步:绕z轴旋转y,是坐标系与旋转后的完全重合

根据上面的三个步骤,我们来通过以下实例来说明欧拉角与方向余弦矩阵的转换过程。

图片

19.2.4 四元数与欧拉角的转换

四元数是一个简单的超复数,是由实数加上三个虚数单位i,j,k组成,每个四元数都是1,i,j,k的线性组合,四元数是爱尔兰数学家哈密顿在1843年发明的数学概念,四元数的乘法不符合交换律。

四元数姿态表达式是一个四参数的表达式,它的基本思路是一个坐标系转换到另一个坐标系可以通过绕一个定义在参考系中的矢量μ的单次转动来实现,四元数用符号q表示,是一个具有4个元素的矢量,这些元素是该矢量方向和转动大小的函数。定义四元数如下所示。

图片

这里直接给出结论,不作证明。会用即可。四元数与欧拉角的转换公式为:

图片

用方向余弦表示欧拉角,这里欧拉角不允许等于90度。

图片

用四元数表示欧拉角

图片

在姿态解算中常用的算法由欧拉角法,方向余弦法和四元数法,欧拉角在求解姿态时存在奇点,无法用于全姿态结算,方向余弦没有奇点,但是计算量大,无法满足实时性要求,四元数法,计算量小,无奇点可以满足飞行器运动过程中姿态的实时解算,姿态解算的原理是对于一个确定的向量,用不同的坐标系表示时,他们所表示的大小和方向一定是相同的。但是由于这两个坐标系的旋转矩阵存在误差,那么当一个向量经过一个有误差存在的旋转矩阵后,在另一个坐标系中肯定和理论值是有偏差的,我们通过这个偏差来修正这个旋转矩阵。这个旋转矩阵的元素是四元数,我们修正的就是四元数,以此来修正姿态。

19.3 实验例程

实验内容:利用MPU6050采集到数据获取欧拉角显示在TFTLCD上。

19.3.1 MPU6050内部相关寄存器

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

7 6 5 4 3 2 1 0
DEVICE_RST SLEEP CYCLE - TEMP_DIS CLKSEL[2:0]

Bit 7:软件复位

0:不复位MPU6050

1:复位MPU6050

Bit 6:休眠模式

0:正常工作模式

1:睡眠模式

Bit 5:循环模式

0:默认状态

1:睡眠模式与唤醒模式交替运行

Bit 3:温度传感器使能

0:使能温度传感器

1:禁用温度传感器

Bit 2~Bit 0:选择系统时钟源

000:内部8M RC时钟源

001:PLL,使用X轴陀螺作为参考

010:PLL,使用Y轴陀螺作为参考

011:PLL,使用Z轴陀螺作为参考

100:PLL,使用外部32.768kHz作为参考

101:PLL,使用外部19.2MHz作为参考

110:保留

111:关闭时钟,保持时序产生威廉希尔官方网站 复位状态

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2550

    文章

    51071

    浏览量

    753341
  • 处理器
    +关注

    关注

    68

    文章

    19275

    浏览量

    229754
  • MPU6050
    +关注

    关注

    39

    文章

    307

    浏览量

    71383
收藏 人收藏

    评论

    相关推荐

    STM32控制MPU6050使用说明

    STM32 控制MPU6050使用说明 mpu6050是陀螺仪、加速计和一个可扩展的传根RM-MPU
    发表于 07-02 08:05

    STM32解析MPU6050上位机与下位机源码

    STM32解析MPU6050 MPU6050使用说明书V4.pdf 上位机.rar STM32解析
    发表于 07-02 08:04

    STM32控制MPU6050使用说明

    STM32 控制MPU6050使用说明 mpu6050是陀螺仪、加速计和一个可扩展的传根RM-MPU
    发表于 07-06 02:25

    基于stm32mpu6050传感器实验 精选资料推荐

    @TOCMPU6050+STM32学习笔记学习了差不多两天的mpu6050,参考了很多篇博客还有看一些资料,今晚终于把这个东西在我的串口显示
    发表于 08-17 09:23

    如何对基于stm32mpu6050传感器进行测试呢

    如何对基于stm32mpu6050传感器进行测试呢?有哪些测试步骤呢?
    发表于 11-18 06:59

    基于STM32单片机+MPU6050传感器做的载人平衡车

    基于STM32单片机+MPU6050传感器做的载人平衡车
    发表于 01-20 15:54 236次下载

    mpu6050六轴传感器模块驱动程序源代码分享

    本文为大家分享了mpu6050六轴传感器模块驱动程序源代码,STM32F1读取MPU6050的加速度和角度传感器数据的初始化步骤,以及
    发表于 12-11 14:26 3.7w次阅读
    <b class='flag-5'>mpu6050</b>六轴<b class='flag-5'>传感器</b>模块驱动程序源代码分享

    使用STM32单片机读取MPU6050传感器数据的程序免费下载

    本文档的主要内容详细介绍的是使用STM32单片机读取MPU6050传感器数据的程序免费下载。
    发表于 07-26 17:35 61次下载
    使用<b class='flag-5'>STM32</b>单片机读取<b class='flag-5'>MPU6050</b><b class='flag-5'>传感器</b>数据的程序免费下载

    MPU6050六轴传感器实验的程序和工程文件免费下载

    本文档的主要内容详细介绍的是MPU6050六轴传感器实验的程序和工程文件免费下载。
    发表于 09-20 08:00 16次下载
    <b class='flag-5'>MPU6050</b>六轴<b class='flag-5'>传感器</b><b class='flag-5'>实验</b>的程序和工程文件免费下载

    MPU6050传感器的威廉希尔官方网站 原理图

    本文档的主要内容详细介绍的是MPU6050传感器的威廉希尔官方网站 原理图免费下载。
    发表于 05-29 08:00 39次下载
    <b class='flag-5'>MPU6050</b><b class='flag-5'>传感器</b>的威廉希尔官方网站
原理图

    MPU6050六轴陀螺仪传感器实验的资料合集免费下载

    本文档的主要内容详细介绍的是MPU6050六轴陀螺仪传感器实验的资料合集免费下载。
    发表于 06-02 08:00 28次下载
    <b class='flag-5'>MPU6050</b>六轴陀螺仪<b class='flag-5'>传感器</b><b class='flag-5'>实验</b>的资料合集免费下载

    基于stm32mpu6050传感器实验

    @TOCMPU6050+STM32学习笔记学习了差不多两天的mpu6050,参考了很多篇博客还有看一些资料,今晚终于把这个东西在我的串口显示
    发表于 12-06 11:36 9次下载
    基于<b class='flag-5'>stm32</b>的<b class='flag-5'>mpu6050</b><b class='flag-5'>传感器</b><b class='flag-5'>实验</b>

    STM32入门学习笔记MPU6050传感器解析实验2

    MPU6050是InvenSense公司推出的一款6轴运动处理芯片,内置3轴陀螺仪及3轴速度传感器,内置两组I2C接口,其中一组用于通信,另一组则用于连接外部磁力传感器,采用自带的数字运动处理
    的头像 发表于 02-16 14:54 1247次阅读

    STM32入门学习笔记MPU6050传感器解析实验3

    MPU6050是InvenSense公司推出的一款6轴运动处理芯片,内置3轴陀螺仪及3轴速度传感器,内置两组I2C接口,其中一组用于通信,另一组则用于连接外部磁力传感器,采用自带的数字运动处理
    的头像 发表于 02-16 14:54 1218次阅读

    STM32入门学习笔记MPU6050传感器解析实验4

    MPU6050是InvenSense公司推出的一款6轴运动处理芯片,内置3轴陀螺仪及3轴速度传感器,内置两组I2C接口,其中一组用于通信,另一组则用于连接外部磁力传感器,采用自带的数字运动处理
    的头像 发表于 02-16 14:54 1604次阅读