重力加速度陀螺仪传感器MPU-6050(一)
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(一)的更多相关文章
- 【.NET 与树莓派】六轴飞控传感器(MPU 6050)
所谓"飞控",其实是重力加速度计和陀螺仪的组合,因为多用于控制飞行器的平衡(无人机.遥控飞机).有同学会问,这货为什么会有六轴呢?咱们常见的不是X.Y.Z三轴吗?重力加速度有三轴, ...
- iOS平台使用陀螺仪传感器
在移动端开发过程中,有时候会用到陀螺仪传感器获取当前手机的姿态,下面给出iOS端如何获取陀螺仪姿态数据的代码: //根据陀螺仪的四元数转换为矩阵 + (GLKMatrix4)calculateMatr ...
- 与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API
原文:与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API [索引页][源码下载] 与众不同 windows phone (19) - Dev ...
- 使用Arduino开发板实现与MPU6050陀螺仪传感器连接的方法
MPU6050陀螺仪传感器具有许多强大的功能,采用单芯片封装.它是由一个MEMS加速度计.一个MEMS陀螺仪和温度传感器组成.该模块在将模拟量转换为数字量时非常准确,因为每个通道都有一个16位的模数转 ...
- 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载加速度 ...
- 博世传感器调试笔记(二)加速度及陀螺仪传感器BMI160
一.功能参数简介bosch Sensortec公司推出的最新BMI160惯性测量单元将最顶尖的16位3轴超低重力加速度计和超低功耗3轴陀螺仪集成于单一封装.MI160采用14管脚LGA封装,尺寸为2. ...
- 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
第44章 MPU6050传感器—姿态检测 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- MTK6589下传感器框架结构和代码分析以及传感器的参数指标
MTK6589下传感器框架结构和代码分析以及传感器的参数指标 作者:韩炜彬 中国当代著名嵌入式研究专家 一. 模块框架 1)配置 路径:Alps/mediatek/config/$(pro ...
- Android的重力传感器(3轴加速度传感器)简单实例
重力感应主要是依靠手机的加速度传感器(accelerometer)来实现 在Android的开发中一共有八种传感器但是不一定每一款真机都支持这些传感器.因为很多功能用户根本不care的所以可能开发商会 ...
随机推荐
- 【39】明智而审慎第使用private继承
1.private继承意味着,根据某物实现出,继承父类的实现,关闭父类的接口,并不是Is-A的关系,不满足里氏代换,继承的内容访问权限都修改为private. 2.那么问题来了,复合也表达根据某物实现 ...
- WM_VSCROLL
关键点 控制滚动条在最下面 实现过程 SendMessage(form1.Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0); 图 备注 相关链接 来自为知笔记(Wiz)
- 并行编程之多线程共享非volatile变量,会不会可能导致线程while死循环
背景 大家都知道线程之间共享变量要用volatilekeyword.可是,假设不用volatile来标识,会不会导致线程死循环?比方以下的伪代码: static int flag = -1; void ...
- hdu 4044 GeoDefense (树形dp | 多叉树转二叉树)
题目链接:hdu-4044 题意 这是一个塔防游戏,地图是一个n个编号为1-n的节点的树, 节点1是敌人的基地,其他叶子节点都是你的基地. 敌人的基地会源源不断地出来怪兽,为了防止敌人攻进你的基 ...
- [React Fundamentals] Using Refs to Access Components
When you are using React components you need to be able to access specific references to individual ...
- -----------------------------SpringMVC理解-----------------------------
1.用户发送请求到前端控制器(DispatcherServlet); 2.前端控制器转发请求到处理器映射器(HandlerMapping): 3.处理器映射器将拦截的Action返回到前端控制器: 4 ...
- 通过代码创建label 计算最佳尺寸 让其自适应文本高度或宽度
通过xib创建label 让label随着文本内容的变化而动态改变尺寸比较简单 只要不固定死尺寸就可以了 但是通过代码创建的话我们需要给label设置一个frame 否则label默认是没有尺 ...
- 自动化分析工具PSSDIAG
微软有个内部工具--PSSDIAG,它能收集非常多的信息,仅需要简单的配置和操作步骤. 下载地址: http://diagmanager.codeplex.com 默认安装路径: C:\Program ...
- 关于Eclipse开发插件(三)
视图之间实现事件监听 两个视图中的组件之间的互动,在开发插件的时候是经常碰到的问题.点击视图1列表的某项时,视图2的文本框显示相应的字符. 第一种主动式: 主动式就是在视图1的代码块中获取对视图2的对 ...
- Maven初学之经验浅谈
关于Maven这个东西,我不做任何评价. 直接上资料,适合初学者 推荐资料 http://www.imooc.com/learn/443 www.imooc.com/article/15037 还有个 ...