MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化
为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。

在网上找了一会,好像MPU-6050没有中文的数据手册,由于本人也处于学习阶段,翻译的可能不太准确,只能表达一下简单的意思,以官方数据手册为准。

引脚说明:


VDD 供电电压为2.5V±5%、3.0V±5%、3.3V±5%;VDDIO 为1.8V± 5%

内建振荡器在工作温度范围内仅有±1%频率变化。可选外部时钟输入32.768kHz 或19.2MHz

找出几个重要的寄存器:

1)Register 25 – Sample Rate Divider  (SMPRT_DIV)


1)SMPLRT_DIV 8位无符号值,通过该值将陀螺仪输出分频,得到采样频率

该寄存器指定陀螺仪输出率的分频,用来产生MPU-60X0的采样率。
  传感器寄存器的输出、FIFO输出、DMP采样和运动检测的都是基于该采样率。
  采样率的计算公式

采样率 = 陀螺仪的输出率 / (1 + SMPLRT_DIV)

当数字低通滤波器没有使能的时候,陀螺仪的输出平路等于8KHZ,反之等于1KHZ。

2)Register 26 – Configuration        (CONFIG)

1)EXT_SYNC_SET 3位无符号值,配置帧同步引脚的采样

2)DLPF_CFG 3位无符号值,配置数字低通滤波器

该寄存器为陀螺仪和加速度计配置外部帧同步(FSYNC)引脚采样和数字低通滤波器(DLPF)。
 通过配置EXT_SYNC_SET,可以对连接到FSYNC引脚的一个外部信号进行采样。

FSYNC引脚上的信号变化会被锁存,这样就能捕获到很短的频闪信号。
 采样结束后,锁存器将复位到当前的FSYNC信号状态。
 根据下面的表格定义的值,采集到的数据会替换掉数据寄存器中上次接收到的有效数据


数字低通滤波器是由DLPF_CFG来配置,根据下表中DLPF_CFG的值对加速度传感器和陀螺仪滤波

3)Register 27 – Gyroscope Configuration   (GYRO_CONFIG)


1)XG_ST 设置此位,X轴陀螺仪进行自我测试。
2)YG_ST 设置此位,Y轴陀螺仪进行自我测试。
3)ZG_ST 设置此位,Z轴陀螺仪进行自我测试。
4)FS_SEL 2位无符号值。选择陀螺仪的量程。

这个寄存器是用来触发陀螺仪自检和配置陀螺仪的满量程范围。

陀螺仪自检允许用户测试陀螺仪的机械和电气部分,通过设置该寄存器的 XG_ST、YG_ST和 ZG_ST bits可以激活陀螺仪对应轴的自检。每个轴的检测可以独立进行或同时进行。

自检的响应 = 打开自检功能时的传感器输出 - 未启用自检功能时传感器的输出

在MPU-6000/MPU-6050数据手册的电气特性表中已经给出了每个轴的限制范围。当自检的响应值在规定的范围内,就能够通过自检;反之,就不能通过自检。

根据下表,FS_SEL选择陀螺仪输出的量程:

4)Register 28 – Accelerometer Configuration  (ACCEL_CONFIG)


1)XA_ST    设置为1时,X轴加速度感应器进行自检。
2)YA_ST    设置为1时,Y轴加速度感应器进行自检。
3)ZA_ST    设置为1时,Z轴加速度感应器进行自检。
4)AFS_SEL  2位无符号值。选择加速度计的量程。

具体细节和上面陀螺仪的相似。

根据下表,AFS_SEL选择加速度传感器输出的量程。

5)Registers 59 to 64 – Accelerometer Measurements (ACCEL_XOUT_H, ACCEL_XOUT_L, ACCEL_YOUT_H, ACCEL_YOUT_L, ACCEL_ZOUT_H, and ACCEL_ZOUT_L)

1)ACCEL_XOUT  16位2’s补码值。
   存储最近的X轴加速度感应器的测量值。
2)ACCEL_YOUT  16位2’s补码值。
   存储最近的Y轴加速度感应器的测量值。
3)ACCEL_ZOUT  16位2’s补码值。
   存储最近的Z轴加速度感应器的测量值。

这些寄存器存储加速感应器最近的测量值。

加速度传感器寄存器,连同温度传感器寄存器、陀螺仪传感器寄存器和外部感应数据寄存器,都由两部分寄存器组成(类似于STM32F10X系列中的影子寄存器):一个内部寄存器,用户不可见。另一个用户可读的寄存器。内部寄存器中数据在采样的时候及时的到更新,仅在串行通信接口不忙碌时,才将内部寄存器中的值复制到用户可读的寄存器中去,避免了直接对感应测量值的突发访问。

在寄存器28中定义了每个16位的加速度测量值的最大范围,对于设置的每个最大范围,都对应一个加速度的灵敏度ACCEL_xOUT,如下面的表中所示:

6)Registers 65 and 66 – Temperature Measurement   (TEMP_OUT_H and TEMP_OUT_L)

1)TEMP_OUT 16位有符号值。
   存储的最近温度传感器的测量值。

7)Registers 67 to 72 – Gyroscope Measurements    (GYRO_XOUT_H, GYRO_XOUT_L, GYRO_YOUT_H, GYRO_YOUT_L, GYRO_ZOUT_H, and GYRO_ZOUT_L)


这个和加速度感应器的寄存器相似

对应的灵敏度:

8)Register 107 – Power Management 1   (PWR_MGMT_1)

该寄存器允许用户配置电源模式和时钟源。它还提供了一个复位整个器件的位,和一个关闭温度传感器的位

1)DEVICE_RESET  置1后所有的寄存器复位,随后DEVICE_RESET自动置0.

2)SLEEP         置1后进入睡眠模式

3)CYCLE         当CYCLE被设置为1,且SLEEP没有设置,MPU-60X0进入循环模式,为了从速度传感器中获得采样值,在睡眠模式和正常数据采集模式之间切换,每次获得一个采样数据。在LP_WAKE_CTRL(108)寄存器中,可以设置唤醒后的采样率和被唤醒的频率。

4)TEMP_DIS      置1后关闭温度传感器

5)CLKSEL        指定设备的时钟源

时钟源的选择:

9)Register 117 – Who Am I         (WHO_AM_I)

WHO_AM_I中的内容是MPU-60X0的6位I2C地址

上电复位的第6位到第1位值为:110100

为了让两个MPU-6050能够连接在一个I2C总线上,当AD0引脚逻辑低电平时,设备的地址是 b1101000 ,当AD0引脚逻辑高电平时,设备的地址是 b1101001

(2013.01.24)

淘宝买的货终于到了,学习用所以没买好的,这个模块只要18块钱。

MPU-6000可以使用SPI和I2C接口,而MPU-6050只能使用I2C,其中I2C的地址由AD0引脚决定;寄存器共117个,挺多的,下面的是精简常用的,根据具体的要求,适当的添加。

#define SMPLRT_DIV  0x19    //采样率分频,典型值:0x07(125Hz) */
#define CONFIG   0x1A       // 低通滤波频率,典型值:0x06(5Hz) */
#define GYRO_CONFIG  0x1B   // 陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s) */
#define ACCEL_CONFIG 0x1C  // 加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz) */

#define ACCEL_XOUT_H 0x3B  // 存储最近的X轴、Y轴、Z轴加速度感应器的测量值 */
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40

#define TEMP_OUT_H  0x41   // 存储的最近温度传感器的测量值 */
#define TEMP_OUT_L  0x42

#define GYRO_XOUT_H  0x43 // 存储最近的X轴、Y轴、Z轴陀螺仪感应器的测量值 */
#define GYRO_XOUT_L  0x44 
#define GYRO_YOUT_H  0x45
#define GYRO_YOUT_L  0x46
#define GYRO_ZOUT_H  0x47
#define GYRO_ZOUT_L  0x48

#define PWR_MGMT_1  0x6B // 电源管理,典型值:0x00(正常启用) */
#define WHO_AM_I  0x75 //IIC地址寄存器(默认数值0x68,只读) */

编程时用到的关于I2C协议规范:

PS:很多人在MPU6050的I2C地址上面弄不清楚,有人说地址是0x68,也有人说是0xD0,其实这两个都是可以的,取决于你的I2C驱动怎么写,这两个地址我都试过,没问题……

重力加速度陀螺仪传感器MPU-6050相关推荐

  1. 重力加速度陀螺仪传感器MPU-…

    原文地址:重力加速度陀螺仪传感器MPU-6050(一)作者:liuzhangchao MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化 为可输出的数字量.为了精确 ...

  2. VR中的9轴传感器(重力加速度/陀螺仪/磁力计)

    ref:https://blog.csdn.net/dabenxiong666/article/details/53836503 前言 传感器的调试过程,一般根据原厂提供demo代码,调试数据接口,将 ...

  3. 一种基于陀螺仪传感器的准确计步器算法

    一种基于陀螺仪传感器的准确计步器算法 A Gyroscope Based Accurate Pedometer Algorithm 作者:Sampath Jayalath.Nimsiri Abhaya ...

  4. 手机中陀螺仪传感器的四大作用

    核心提示:陀螺仪传感器可以全方位的感受空间上位移的变化维较少,最早应用于航空.航天和航海等领域.随着陀螺仪传感器成本的下降,现在很多智能手机都集成有陀螺 陀螺仪传感器可以全方位的感受空间上位移的变化维 ...

  5. Android传感器之陀螺仪传感器

    代码片段,双击复制 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...

  6. I2C通信之Arduino 陀螺仪传感器ITG3205

    topic I2C通信之Arduino与陀螺仪传感器ITG3205 I2C通信之Arduino与陀螺仪传感器ITG3205 转载自:https://www.geek-workshop.com/thre ...

  7. iOS平台使用陀螺仪传感器

    iOS平台使用陀螺仪传感器 在移动端开发过程中,有时候会用到陀螺仪传感器获取当前手机的姿态,下面给出iOS端如何获取陀螺仪姿态数据的代码: 1 //根据陀螺仪的四元数转换为矩阵 2 + (GLKMat ...

  8. 维特智能蓝牙5.0加速度计陀螺仪传感器倾角电子罗盘磁力计仰卧起坐

    1.项目介绍 仰卧起坐检测项目是应用于中小学生或部队训练时,对仰卧起坐这个项目的监测.实现的功能包括以下方面: 引导用户规范动作,也就是动作必须达标才能算完成一个动作,平躺要躺平,坐起要到达90°. ...

  9. [Sensor]--BMI160-加速度计、陀螺仪传感器

    最近在搞一个和加速度计相关的项目,所以接触到的传感器比较多,现在写一个总结吧,防止后来者和我一样走这么多的弯路. 首先看到的是引脚图,如果驱动不了应该首先排除硬件的问题: SPI接法 IIC接法 接着 ...

最新文章

  1. Quasar Akka Vertx Norbert 比较
  2. 谷歌向公众开放Fuchsia OS:支持手机电脑IoT,华为鸿蒙与之对标
  3. [jvm]对象访问机制
  4. 38.C++修饰构造函数的explicit关键字
  5. java基础(三) 加强型for循环与Iterator
  6. c++中的异常--1(基本概念, c语言中处理异常,c++中处理异常,异常的基本使用,栈解旋)
  7. Linux服务部署之NTP时间服务器
  8. 程序员的进阶课-架构师之路(17)-堆
  9. Docker入门之五数据管理
  10. 活久见!巴菲特被诈骗50亿,股神真的糊涂了?
  11. Leetcode每日一题:49.group-anagrams(字母异位词分组)
  12. 洛谷——P1427 小鱼的数字游戏
  13. MySQL的主从复制与读写分离技术实例(一)主从复制
  14. 好用的多桌面间共享鼠标键盘的软件
  15. android网络诊断服务(ping网络的实现,判断网络是否可用)
  16. 计算机网络原理系列学习笔记(七)——网络安全
  17. 海康摄像头http抓图
  18. word字号 html,word排版一般字号用的字号是多少
  19. 计算机英语冯敏课后题答案,英语人教版五年级下册Unit 6 Work quietly人教版五年级冯敏.docx...
  20. 使用PageOffice实现文档(word,excel,pdf)在线预览编辑

热门文章

  1. 一维搜索算法介绍及其实现
  2. 破解校园网锐捷4.44多网卡拨号限制
  3. 政府应急指挥调度管理系统软件解决方案
  4. 最好的程序员大多是自学成才的
  5. Android程序员必备!海量算法高频面试题精编解析,真香
  6. 高性能计算机储存部件硬盘,为啥电脑换了固态硬盘会变快 它比机械盘强在哪?...
  7. 安道麦完成名称统一,挂牌深交所交易
  8. 对3721上网助手的一些疑问建议
  9. VC++对Access数据库的操作(查询、插入、更新、删除等)
  10. 计算机视觉怎么知道你在发小黄图...