当前位置:   article > 正文

解MPU6050,用STM32读取原始数据,并相互融合算出俯仰角、翻滚角、偏航角_mpu6050不用dmp计算偏航角

mpu6050不用dmp计算偏航角

详解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度/秒    (DPS, 角速度单位,Degree Per Second的缩写°/S ,体现了转动的快慢)

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    ---- +32768 就代表了 -250 ---- +250 。此时它的LSB(拉傻B,最低有效位) 是 131 LSB/(度/s)

STM32自带I2C,但一般有两个I2C1(PB6,PB7)和I2C2(PB10,PB11),而且,I2C分为硬件、和模拟。
软件i2c是程序员使用程序控制SCL,SDA线输出高低电平,模拟i2c协议的时序.
硬件i2c程序员只要调用i2c的控制函数即可,不用直接的去控制SCL,SDA高低电平的输出

本模块采用的是IIC通信方式,所以我们只需要连接四跟线就可以完成电路的连接,简单方便!
原始数据有:AX、AY、AZ      GX、GY、GZ
简单的算法之后可以得到 Roll,pitch,yaw

参考MPU-6050数据手册

引脚说明:

三轴加速度传感器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)

三轴加速度传感器MPU-6050
1)SMPLRT_DIV 8位无符号值,通过该值将陀螺仪输出分频,得到采样频率 

 

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

  
采样率的计算公式

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

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

2)Register 26 – Configuration   

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/404254?site
推荐阅读
相关标签
  

闽ICP备14008679号