解MPU6050,用STM32读取原始数据,并相互融合算出俯仰角、翻滚角、偏航角
来源:互联网 发布:hbuilder下载 mac 编辑:程序博客网 时间:2024/04/30 14:29
详解MPU6050,用STM32读取原始数据,并相互融合算出俯仰角、翻滚角、偏航角
1.MPU6050是什么?
MPU6050是一个6轴运动处理组件,包含了3轴加速度 和3轴陀螺仪。
MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP: Digital Motion Processor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术
InvenSense的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理运算对操作系统的负荷,并为应用开发提供架构化的API。
MPU-6000的角速度全格感测范围为±250、±500、±1000与±2000°/sec (dps),可准确追緃快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±2g、±4g±8g与±16g。产品传输可透过最高至400kHz的I2C或最高达20MHz的SPI。
MPU-6000可在不同电压下工作,VDD供电电压介为2.5V±5%、3.0V±5%或3.3V±5%,逻辑接口VVDIO供电为1.8V± 5%。MPU-6000的包装尺寸4x4x0.9mm(QFN),在业界是革命性的尺寸。其他的特征包含内建的温度感测器、包含在运作环境中仅有±1%变动的振荡器。
2.加速度传感器是干嘛用的?
总而言这,加速度传感器,其实是力传感器。用来检查上下左右前后哪几个面都受了多少力(包括重力),然后计算角度。
3.陀螺仪是干嘛用的?
简而言之,陀螺仪就是角速度检测仪。比如,一块板,以X轴为轴心,在一秒钟的时间转到了90度,那么它在X轴上的角速度就是 90度/秒
4.MPU6050分辨率是多少?
3轴加速度 和3轴陀螺仪分别用了3个16位的ADC, 也就是说,加速度有3个16位ADC,其中每个轴使用了一个。也是说,每个轴输出的数据,是2^16 也就是 -32768 ---- +32768。陀螺仪也是一样。
5. 单位换算
上面说的-32768 --- +32768 ,那么这个数字到底代表了什么呢?比如陀螺仪 32768 到底是指角速度达到多少度/秒 ?
这个其实是根据MPU6050设置的量程来决定的,量程不一样,32768代表的值就不一样。
MPU6050的量程设置,在 MPU6050::initialize() (MPU6050.cpp库)初始化函数中进行了设置:
setFullScaleGyroRange(MPU6050_GYRO_FS_250);
setFullScaleAccelRange(MPU6050_ACCEL_FS_2);
分别设置为,250度/秒 , 2g
按陀螺仪来说,MPU6050 有四个量程可选:
±250,±500,±1000,±2000 度/s
比方说,设置了是 ±250 , 那么-32768
引脚说明:
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
1)SMPLRT_DIV
2)Register 26 – Configuration
数字低通滤波器是由DLPF_CFG来配置,根据下表中DLPF_CFG的值对加速度传感器和陀螺仪滤波
3)Register 27 – Gyroscope Configuration
1)XG_ST 设置此位,X轴陀螺仪进行自我测试。
2)YG_ST 设置此位,Y轴陀螺仪进行自我测试。
3)ZG_ST 设置此位,Z轴陀螺仪进行自我测试。
4)FS_SEL 2位无符号值。选择陀螺仪的量程。
4)Register 28 – Accelerometer Configuration
1)XA_ST
2)YA_ST
3)ZA_ST
4)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
2)ACCEL_YOUT
3)ACCEL_ZOUT
6)Registers 65 and 66 – Temperature Measurement
1)TEMP_OUT 16位有符号值。
7)Registers 67 to 72 – Gyroscope Measurements
这个和加速度感应器的寄存器相似
对应的灵敏度:
8)Register 107 – Power Management 1
该寄存器允许用户配置电源模式和时钟源。它还提供了一个复位整个器件的位,和一个关闭温度传感器的位
1)DEVICE_RESET
2)SLEEP
3)CYCLE
4)TEMP_DIS
5)CLKSEL
时钟源的选择:
9)Register 117 – Who Am I
上电复位的第6位到第1位值为:110100
为了让两个MPU-6050能够连接在一个I2C总线上,当AD0引脚逻辑低电平时,设备的地址是
(2013.01.24)
MPU-6000可以使用SPI和I2C接口,而MPU-6050只能使用I2C,其中I2C的地址由AD0引脚决定;寄存器共117个,挺多的,下面的是精简常用的,根据具体的要求,适当的添加。
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
编程时用到的关于I2C协议规范:
- 解MPU6050,用STM32读取原始数据,并相互融合算出俯仰角、翻滚角、偏航角
- 详解MPU6050,用STM32读取原始数据,并相互融合算出俯仰角、翻滚角、偏航角
- 俯仰角 横滚角 偏航角
- mpu6050俯仰角和横滚角解算
- 欧拉中的俯仰、横滚、偏航角
- 方位角、俯仰角与翻滚角概念图解
- 俯仰角,偏航角,侧偏角,侧偏距,航向角的定义
- OSG 欧拉角 转四元数 导航角(俯仰,偏航,横滚)转四元数 互转
- CC2540读取MPU6050原始数据
- 横滚角,俯仰角,航向角
- STM32 MPU6050姿态融合(转)
- 陀螺仪偏航角的夹角计算方法
- NRF51822自学笔记(四)mpu6050读取原始数据
- 微型四轴设计之通过arduino读取MPU6050原始数据
- 【库函数版本】基于STM32F103的MPU6050的原始数据读取程序详解
- 谈一谈 MPU6050 姿态融合
- MPU6050姿态融合
- MPU6050姿态融合
- jquery的.fn.extend使用方法
- python番外(1)——matplotlib中文显示问题
- bzoj2768(最小割,二者取其一式问题)
- HDU 5781 ATM Mechine(概率DP求期望)
- ReactiveCocoa信号使用方法
- 解MPU6050,用STM32读取原始数据,并相互融合算出俯仰角、翻滚角、偏航角
- POJ1815
- MySql 5.7.13解压版安装和出现的一些问题
- Android应用横竖屏切换的两种方式,从表现上看最大的区别
- php 内存
- HDU 5788 Level Up
- 缓存技术之Ehcache(5)对象缓存
- HDU-1534 Schedule Problem
- 2基本概念--python深度机器学习