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驱动怎么写,这两个地址我都试过,没问题……

转载于:http://blog.sina.com.cn/s/blog_8240cbef01018i10.html

重力加速度陀螺仪传感器MPU-6050(一)的更多相关文章

  1. 【.NET 与树莓派】六轴飞控传感器(MPU 6050)

    所谓"飞控",其实是重力加速度计和陀螺仪的组合,因为多用于控制飞行器的平衡(无人机.遥控飞机).有同学会问,这货为什么会有六轴呢?咱们常见的不是X.Y.Z三轴吗?重力加速度有三轴, ...

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

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

  3. 与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API

    原文:与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API [索引页][源码下载] 与众不同 windows phone (19) - Dev ...

  4. 使用Arduino开发板实现与MPU6050陀螺仪传感器连接的方法

    MPU6050陀螺仪传感器具有许多强大的功能,采用单芯片封装.它是由一个MEMS加速度计.一个MEMS陀螺仪和温度传感器组成.该模块在将模拟量转换为数字量时非常准确,因为每个通道都有一个16位的模数转 ...

  5. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  6. 博世传感器调试笔记(二)加速度及陀螺仪传感器BMI160

    一.功能参数简介bosch Sensortec公司推出的最新BMI160惯性测量单元将最顶尖的16位3轴超低重力加速度计和超低功耗3轴陀螺仪集成于单一封装.MI160采用14管脚LGA封装,尺寸为2. ...

  7. 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列

    第44章     MPU6050传感器—姿态检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  8. MTK6589下传感器框架结构和代码分析以及传感器的参数指标

    MTK6589下传感器框架结构和代码分析以及传感器的参数指标 作者:韩炜彬  中国当代著名嵌入式研究专家 一.      模块框架 1)配置 路径:Alps/mediatek/config/$(pro ...

  9. Android的重力传感器(3轴加速度传感器)简单实例

    重力感应主要是依靠手机的加速度传感器(accelerometer)来实现 在Android的开发中一共有八种传感器但是不一定每一款真机都支持这些传感器.因为很多功能用户根本不care的所以可能开发商会 ...

随机推荐

  1. java复习1 java简单介绍

    在学校的时候.学JAVA学的模棱两可,半知半解.工作以后给我带来了非常大的困扰,所以我须要在学一遍.如今就開始吧... . java[1]是一种能够撰写跨平台应用软件的面向对象的程序设计语言,是由Su ...

  2. air 中的 LocalStore

    <ignore_js_op> 在AIR客户端程序中有时需要将用户的一些信息保存在本地,如果信息没有涉及到隐私那么一般用SharedObject类即可将数据存储在本地.由于SharedObj ...

  3. Linux lsof命令使用小结

        lsof(list open files)是一个列出当前系统打开文件的工具.在Linux环境下,任何事物都是以文件的形式存在,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件.所以,如传 ...

  4. React Editor 应用编辑器(1) - 拖拽功能剖析

    这是可视化编辑器 Gaea-Editor 的第一篇连载分析文章,希望我能在有限的篇幅讲清楚制作这个网页编辑器的动机,以及可能带来的美好使用前景(画大饼).它会具有如下几个特征: 运行在网页 文档流布局 ...

  5. 一款仿36氪iOS版APP源码

    Features 离线缓存 解决视频播放器的网速慢卡顿 视频播放器调用简单 cell自适应高度 cell中嵌套webView cell中嵌套webView 条件实时搜索 Known problems ...

  6. Flume简介与使用(三)——Kafka Sink消费数据之Kafka安装

    前面已经介绍了如何利用Thrift Source生产数据,今天介绍如何用Kafka Sink消费数据. 其实之前已经在Flume配置文件里设置了用Kafka Sink消费数据 agent1.sinks ...

  7. logstash multiline 把文件处理为单个 event

    需求 多个文本文件需要存到 ES 中去. 每一个文件存放为一个 doc. 每一个文件都是多行的,行数不定,且没有固定的内容格式. update time: Mon Jun :: CST package ...

  8. [转载][记录]javascript生成不重复的随机数

    参考链接:javascript生成不重复的随机数 项目播放视频,是无序的,有上下两个按钮,所以需要生成1,8不重复的随机数数组,如: ,,,,,,, 然后再split一次,就是数组了. 拿来主义了

  9. 【转】adb uninstall卸载apk文件说明

    昨天在使用adb卸载程序,结果死活卸载不了.我输入的命令和系统提示如下: [plain] view plaincopy   arthur@arthur-laptop:~$ adb uninstall  ...

  10. ZooKeeper - 状态信息 Stat 的属性说明

    运行%ZK_HOME%/bin目录下的zkCli.sh(zkCli.cmd),使用get命令可以获取指定ZNode的数据内容和属性信息.例如: [zk: localhost:2181(CONNECTE ...