关于MPU6050学习的一些总结之一MPU6050手册整理

  • 前言
  • 一、MPU6050简介
  • 二、MPU6050相关寄存器
    • 1.采样分频寄存器 Sample Rate Divider
    • 2.配置寄存器 Configuration
    • 3.陀螺仪配置寄存器 Gyroscope Configuration
    • 4.加速度计配置寄存器 Accelerometer Configuration
    • 5.加速度计测量值寄存器 Accelerometer Measurements
    • 6.陀螺仪测量值寄存器 Gyroscope Measurements
    • 7.电源管理寄存器1 Power Management 1
    • 8.电源管理寄存器2 Power Management 2
  • 总结

前言

假期正在学习四轴飞控的相关知识,目前正在学习MPU6050模块,感觉涉及到的知识有些琐碎,于是想通过写博客的形式将知识点系统的整理一下以加深对四轴的理解。在学习的同时我在网上也参考了许多大神的文章,这些文章帮助我解决了很多疑问。在此,也想感谢聚优致成博主的博文,讲解的十分细致同时也鼓励我将自己的所学记录下来。**因此,本文章主要以记录自己的学习过程为主,写的内容均为自己理解,有错误的地方欢迎大家指正。**对于MPU6050学习的思路我打算从芯片手册入手,先了解工作原理以及寄存器功能,再到了解IIC总线以及代码实现,最后再结合程序处理MPU6050的数据。

一、MPU6050简介

MPU-60X0 是全球首例9 轴运动处理传感器。它集成了3 轴MEMS 陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C 或SPI 接口输出一个9 轴的信号(SPI 接口仅在MPU-6000 可用)。MPU-60X0 也可以通过其I2C 接口连接非惯性的数字传感器,比如压力传感器。
MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC(0~65535),将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。
芯片尺寸4×4×0.9mm,采用QFN 封装(无引线方形封装),可承受最大10000g 的冲击,并有可编程的低通滤波器。
MPU6050的内部框图如下图所示:

其中,需要了解的引脚有:SCL和 SDA是连接MCU的 IIC接口,MCU通过这个IIC 接口来控制MPU6050,另外还有一个 IIC 接口: AUX_CL和AUX_DA ,这个接口可用来连外部从设备比如磁力计,这样就可以组成一个九轴传感器。VLOGIC是IO口电压,该引脚最低可以到1.8V电压, 我们一般直接连VDD即可。AD0是从IIC 接口(接 MCU)的地址控制引脚,该引脚控制的是IIC 地址的最低位。如果接 GND ,则 MPU6050的IIC地址是:0X68,如果接VDD,则是0X69。需要注意的是:这里的地址0x68和0x69是不包含用于数据传输的最低位的,因此并不是八位数据,如0x68表示的是110 1000,0x69表示的则是110 1001,通常最低位用于表示IIC主机的读取数据/写数据模式。
self test为自检,自检的作用是可用来测试传感器的机械和电气结构。也就是说通过自检来测试芯片是否损坏。自检启动后,电路会使传感器工作并且产生输出信号。关于自检的具体说明,官方芯片手册里有详细描述。如下:

  1. Gyroscope Self-Test
    When self-test is activated, the on-board electronics will actuate the appropriate sensor. This actuation will move the sensor’s proof masses over a distance equivalent to a pre-defined Coriolis force. This proof mass displacement results in a change in the sensor output, which is reflected in the output signal. The output signal is used to observe the self-test response.
    The self-test response is defined as follows:
    Self-test response = Sensor output with self-test enabled – Sensor output without self-test enabled
    The self-test limits for each gyroscope axis is provided in the electrical characteristics tables of the MPU-6000/MPU-6050 Product Specification document. When the value of the self-test response is within the min/max limits of the product specification, the part has passed self test. When the self-test response exceeds the min/max values specified in the document, the part is deemed to have failed self-test.

  2. Accelerometer Self-Test
    When self-test is activated, the on-board electronics will actuate the appropriate sensor. This actuation simulates an external force. The actuated sensor, in turn, will produce a corresponding output signal. The output signal is used to observe the self-test response.
    The self-test response is defined as follows:
    Self-test response = Sensor output with self-test enabled – Sensor output without self-test enabled
    The self-test limits for each accelerometer axis is provided in the electrical characteristics tables of the MPU-6000/MPU-6050 Product Specification document. When the value of the self-test response is within the min/max limits of the product specification, the part has passed self test. When the self-test response exceeds the min/max values specified in the document, the part is deemed to have failed self-test.

二、MPU6050相关寄存器

MPU6050官方的寄存器手册上共介绍了40个寄存器的内容和功能,在此我只选取一些常用的和重要的寄存器作为了解。

1.采样分频寄存器 Sample Rate Divider


说明:该寄存器指定陀螺仪输出速率的分频器,用于为MPU-60X0生成采样速率
传感器寄存器输出,FIFO输出,DMP采样,运动检测,静止检测和自由落体检测都基于这个采样频率。
采样频率=陀螺仪输出频率/(1+SMPLRT_DIV)
当 DLPF(数字低通滤波器,见寄存器Configuration)禁用时(DLPF_CFG=0 or 7),陀螺输出频率=8kHz;当 DLPF 使能,陀螺仪输出频率=1KHz。注意:加速度计输出频率为 1KHz。这意味着,当采样频率大于1KHZ时,同个加速度计采样得到的数据,可能不止一次输出到FIFO、DMP、传感器寄存器。

2.配置寄存器 Configuration


说明:该寄存器为陀螺仪和加速度计配置外部帧同步(FSYNC) 管脚的采样和数字低通滤波(DLPF)设置。
其中,数字低通滤波器DLPF由DLPF_CFG配置。根据下表所示的DLPF_CFG值对加速度计和陀螺仪进行滤波。

其中,FS为陀螺仪输出频率。SMPLRT_DIV由预设定的采样频率根据上述的公式计算得出。一般情况下,DPLF滤波频率为采样频率的一半,如设定采样频率为50Hz,由表可知当FS为1kHz,SMPLRT_DIV的值为1000/50-1=19。

3.陀螺仪配置寄存器 Gyroscope Configuration


说明:该寄存器是用来触发陀螺仪自检和配置陀螺仪的满量程范围。
其中,XG_ST、YG_ST、ZG_ST分别用来设置陀螺仪X轴、Y轴、Z轴自检,置0则不触发自检。FS_SEL[1:0]用于设置陀螺仪的满量程,如下表:

我们一般设置为3,即满量程为±2000°/s,由于采用16位ADC即0-65536,则灵敏度G=65536/4000=16.4LSB/(°/s),LSB表示最低有效位,即1°/s对应的数字量为16.4。最终即可将陀螺仪输出的数字量数据转化为角速度。

4.加速度计配置寄存器 Accelerometer Configuration


说明:该寄存器是用来触发加速度计自检和配置加速度计的满量程范围。同时这个寄存器也可以用于配置数字高通滤波器(DHPF)。
其中,XA_ST、YA_ST、ZA_ST分别用来设置加速度计X轴、Y轴、Z轴自检,置0则不触发自检。AFS_SEL[1:0]用于选择加速度计的满量程范围,如下表:

我们一般设置为0,即满量程为±2g,由于采用16位ADC即0-65536,则灵敏度G=65536/4=16384LSB/(g),LSB表示最低有效位,即1g对应的数字量为16384。最终即可将加速度计输出的数字量数据转化为加速度。

5.加速度计测量值寄存器 Accelerometer Measurements


说明:该寄存器存储最近加速度计的测量值。加速度计根据采样频率(由采样分频寄存器寄存器设定 )写入到这些寄存器。即采样频率为50Hz,写入数据的时间间隔为0.02s。加速度计测量值寄存器和温度测量值寄存器,陀螺仪测量值寄存器,外部传感器数据寄存器都是由两组寄存器构成:一个内部寄存器集和一个用于用户读取的寄存器集。
加速度计传感器的内部寄存器集合里的数据根据采样频率更新。以此同时,每当串行接口处于闲置状态,面向用户的读取寄存器集合会复制内部寄存器集合的数据值。这保证了突发读取时传感器寄存器可以读到相同的采样时刻的测量值。需要注意的是,如果没有突发读取,则用户负责通过检查数据就绪中断(Data Ready interrupt)来确保瞬时的一组单字节读取对应于单字节的采样数据。
参数:
ACCEL_XOUT :
由 2部分组成的 16位数值存储最近X 轴加速度计的测量值。
ACCEL_YOUT :
由 2部分组成的 16位数值存储最近Y 轴加速度计的测量值。
ACCEL_ZOUT :
由 2部分组成的 16位数值存储最近Z 轴加速度计的测量值。

6.陀螺仪测量值寄存器 Gyroscope Measurements


说明:该寄存器存储最近加陀螺仪的测量值。大致构成与加速度计测量值寄存器相同,此处便不做叙述。参数分别为:GYRO_XOUT 、GYRO_YOUT 、GYRO_ZOUT

7.电源管理寄存器1 Power Management 1


说明:该寄存器允许用户配置电源模式和时钟源,还提供了复位整个设备和禁用温度传感器的位。当置SLEEP位为1时,MPU-60X0 可以进入低功耗睡眠模式。当SLEEP位禁用且 CYCLE位置 1时,MPU-60X0进入循环模式(CycleMode)。在循环模式下,设备在休眠模式和唤醒之间循环,以LP_WAKE_CTRL(由电源管理2寄存器配置)确定的速率从active sensors(此处不知如何翻译)获取单个数据样本。
该寄存器的最低三位用于设置系统的时钟源选择,默认值是0(内部8M RC振荡),不过一般设置为1,选择x轴陀螺PLL作为时钟源,以获得更高精度的时钟。同时,使能角速度传感器和加速度传感器,这两个操作通过电源管理寄存器2配置,设置对应位为0即可开启。
附英文手册原文片段:Upon power up, the MPU-60X0 clock source defaults to
the internal oscillator. However, it is highly recommended that the device be configured to use one of the gyroscopes (or an ext ernal clock source) as the clock reference for improved stability.

其他参数:
DEVICE_RESET
该位置 1,重启内部寄存器到默认值。复位完成后该位自动清0。
TEMP_DIS
该位置 1,禁用温度传感器。

8.电源管理寄存器2 Power Management 2


说明:该寄存器允许用户在加速度计低功耗模式下配置唤醒频率。也允许用户让加速度计和陀螺仪的个别轴进入待机模式。
只让MPU-60X0的加速度计进入低功耗模式的步骤如下:
1.置 CYCLE位为 1
2.置 SLEEP位为 1
3.置 TEMP_DIS位为 1
4.置 STBY_XG,STBY_YG,STBY_ZG位为 1
在这种模式下,设备会关闭除了主 I2C接口外其他所有设备,加速度计只在固定的间隔唤醒并测量一次。唤醒的频率可以通过配置 LP_WAKE_CTRL实现如下:

参数:
LP_WAKE_CTRL :
2位无符号数值。指定加速度计在低功耗模式下的唤醒频率。
STBY_XA :
该位置 1,加速度计的 X轴进入待机模式。
STBY_YA :
该位置 1,加速度计的 Y轴进入待机模式。
STBY_ZA :
该位置 1,加速度计的 Z轴进入待机模式。
STBY_XG :
该位置 1,陀螺仪的 X轴进入待机模式。
STBY_YG :
该位置 1,陀螺仪的 Y轴进入待机模式。
STBY_ZG :
该位置 1,陀螺仪的 Z轴进入待机模式。

总结

到此,关于MPU6050官方手册里与我用到的有关的内容已经整理完了。由于很多英文看不懂,所以参考了很多的中文资料综合起来,参考的资料有:
MPU6050开发 – 初识
MPU-60X0寄存器中文版V4.0
博主 聚优致成的:MPU6050开发 – 测试程序分析

关于MPU6050学习的一些总结之一MPU6050芯片手册的整理相关推荐

  1. 关于MPU6050学习的一些总结之三MPU6050程序解读

    关于MPU6050学习的一些总结之三MPU6050程序解读 前言 MPU6050.h 初始化函数 获取数据 数据处理(计算零偏) 结语 前言 经过两天的整理终于可以尝试解读MPU6050程序了,话不多 ...

  2. 基于I2C总线的MPU6050学习笔记

    MPU6050学习笔记 1. 简述 一直想自己做个四轴飞行器,却无从下手,终于狠下决心,拿出尘封已久的MPU6050模块,开始摸索着数据手册分析,一步一步地实现了MPU6050模块的功能,从MPU60 ...

  3. pwn学习总结(五) —— 堆溢出经典题型整理

    pwn学习总结(五) -- 堆溢出经典题型整理 fastbin + 栈溢出 fastbin + 函数构造 fastbin + 堆执行 fastbin + malloc_hook fastbin + 栈 ...

  4. 学习记录--陀螺仪模块(MPU6050:IIC通信,us延时函数)

    一,mpu6050模块基础(参考HAL库开发指南) 二,CUBEMX配置 用模拟IIC,只需要打开一个串口打印数据就行,IO口的配置直接写在板级支持包的init里了 三,keil中代码(参考正点原子与 ...

  5. 基于MiniSTM32的mpu6050学习笔记(一)

    文章目录 一.MPU6050简介 mpu6050的特点: 二.模块重要寄存器简介 三.模块引脚说明 四.串口打印原始数据 1.mpu6050初始化步骤 2.相关程序代码 一.MPU6050简介 mpu ...

  6. STM32CubeIDE、HAL、OLED、MPU6050学习笔记

    器件:1.STM32F103C8T6 (¥17.3) 2.中景园0.96寸OLED显示屏  (¥9) 3.MPU6050 (¥6.4)信泰微电子购买 4.ST-LINK V2(进口芯片版本,¥19.8 ...

  7. MPU6050使用/正点原子代码移植/MPU6050注意事项/关于几个频率的解释/STM32F103

    关于MPU6050 MPU6050简单介绍 对于各位接触到MPU6050的同学们来说,应该不缺MPU6050的参考资料, 其中有一篇<MPU-6000 / MPU-6050 产品说明书>- ...

  8. MPU6050工作原理及STM32控制MPU6050

    一·简介: 1.要想知道MPU6050工作原理,得先了解下面俩个传感器: ①陀螺仪传感器: 陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的.人们根据这个道理,用它来保持 ...

  9. mpu6050 z轴校准_关于MPU6050 校准问题请教

    我的MPU6050用了互补滤波法得到x, y,z轴的角度但是很不准,平放模块时不为x轴角度不为0,程序如下 //******************************************** ...

  10. AutoLeaders控制组——51单片机学习笔记(蜂鸣器、AT24C02芯片)

    本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 一些内容涉及 ...

最新文章

  1. sysbench压测Oracle
  2. 《Docker技术入门与实战》——2.4 本章小结
  3. Linux 模拟网络丢包和延迟命令
  4. 备份类型 事务日志_SQL SERVER备份策略
  5. C++--第15课 - 惊艳的继承
  6. MSN的头像存放路径
  7. 最新中国数据中心排行榜
  8. Chess Queen
  9. python字符串去掉特殊符号_python去特殊字符_python 去字符串中特殊符号 - CSDN
  10. 加密与解密(一) -- 壳、加壳
  11. 微信小程序开发之——音乐播放器-播放器(3.4)
  12. [go]根据背景色计算文本颜色
  13. 找出N个元素的数组中最大的K个数
  14. 为你的程序创建一个控制台
  15. 计算机网络第一章作业(第8版 谢希仁)
  16. 怎么能看出一个人开车水平高低?
  17. 背景图片和颜色混合叠加多种混合模式
  18. 大数据算法模型中的数据清洗
  19. Win8安装STEP7提示pniopcac.exe错误
  20. 谷歌手机pixel4 夜景_您应该购买Google Pixel 4a的5个理由

热门文章

  1. 计算机排版系统程序,《计算机排版系统.doc
  2. oracle ebs 采购入库,ORACLE EBS/ERP 采购库存模块分录
  3. 高清电子警察监控系统方案
  4. 六级病历对门诊电子病历系统功能要求的初步梳理
  5. NanoPC T4 移植 HPSocket
  6. matlab图像频谱分析代码_信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析)...
  7. 解决This application failed to start because no Qt platform plugin could be initialized的问题
  8. 【遥感专题系列】微波遥感(二、合成孔径雷达SAR基础)
  9. 关于信息安全产业的调研报告
  10. 手把手教你写一个微信小程序(前端+Java后端)