-
详解
MPU6050
,用
STM32
读取原始数据,并相互融合算出俯仰角、翻滚角、偏航角
< br>
6050
是什么?
< br>MPU6050
是一个
6
轴运动
处理组件,包含了
3
轴加速度
和
3
轴陀螺仪。
<
/p>
MPU-6000
为全球首例整合性
6<
/p>
轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与
加速器
时之轴间差的问题,
减少了大量的包装空间。
MPU-6000
整合了
3
轴陀螺仪、
< br>3
轴加速
器,
并含可藉由第二个
I2C
端口连接其他厂牌之加速器、
磁
力传感器、
或其他传感器的数位
运动处理
(DMP: Digital Motion Processor)
硬件加速引擎,
由主要
I2C
端口以单一数据流
的形式
,向应用端输出完整的
9
轴融合演算技术
InvenSense
的运动处理资料库,可处理运动感测
的复杂数据,降低了运动处理运算对操作
系统的负荷,并为应用开发提供架构化的
API
。
MPU-
6000
的角速度全格感测范围为±
250
、±
500
、±
1000
与±
2000
°
/se
c (dps)
,可准确
追緃快速与慢速动作,并且,用户可程
式控制的加速器全格感测范围为±
2g
、±
4g
±
8g
与
±
16g
。产品传输可透过最高至
400kHz
的
I2C
或最高达
20MHz
的
SPI
。
MPU-6000
可在不同电压下
工作,
VDD
供电电压介为
2.5V<
/p>
±
5%
、
3.0
V
±
5%
或
3
.3V
±
5%
,逻辑
< br>接口
VVDIO
供电为
1.8V
±
5%
。
M
PU-6000
的包装尺寸
4x4x0.9mm(QFN)
p>
,在业界是革命性的
尺寸。其他的特征包含内建的温度感测器、包含
在运作环境中仅有±
1%
变动的振荡器。
2.
加速度传感器是干嘛用的?
总而言这,
加速度传感器,
其实是力传感器。
用来检查上下左右前后哪几个面都受了多少力
(包括重力),然后计算角度。
3.
陀螺仪是干嘛用的?
简而言之,陀螺仪就是角速度检测仪。比如,一块板,以
X
轴为轴心,在一秒钟的时间转到
了
90
度,
那么它在
X
轴上的角速度
就是
90
度
/
秒
(
DPS,
角速度单位,
Degree
Per
Second
的缩写°
/S
,体现了转动的快慢)
6050
分辨率是多少?
3
轴加速度
和
3
轴陀螺仪分别用了
3
个
16
位的
ADC,
也就是说,加速度有
3
个
16
位
ADC
< br>,
其中每个轴使用了一个。
也是说,
每个轴输出的数据,
是
2^16
也就是
-32768
---- <
/p>
+32768
。
陀螺仪也是一样。
5.
单位换算
上面说的
-32768 --- +32768
,那么这个数字到底代表了什么呢?比如陀螺仪
32768
到底
是指角速度达到多少度
/
秒
?
这个其实是根据
MPU6050
设置的量程来决定的
,量程不一样,
32768
代表的值就不一样。
MPU6050
的量程设
置,
在
MPU6050::initialize()
p>
(
库)
初始化函数
中进行了
设置:
setFullSc
aleGyroRange(MPU6050_GYRO_FS_250);
setF
ullScaleAccelRange(MPU6050_ACCEL_FS_2);
分别设置为,
250
度
/
秒
, 2g
按陀螺仪来说,
MPU6050
有四个量程可选:
±
250
,±
500
,±
1000
,±
2000
度
/s
比方说,设置了是
±
250 ,
那么
-32768
---- +32768
就代表了
-250 ---- +250
。此
时它的
< br>LSB(
拉傻
B
,最低有效位<
/p>
)
是
131
LSB/(
度
/s)
STM32
自带
I2C
,但
一般有两个
I2C1
(
PB6,PB7
)和
I2C2
(
PB10,PB11
),而且,
I2C
分为硬
件、和模拟。
软件
i2c
是程序员使用程序控制
SCL,SDA<
/p>
线输出高低电平,模拟
i2c
协议的时序
.
硬件
i2c
程序员只要调用
i2c
的控制函数即可,
不用直接的去控制
SCL,SDA
高低电平的输出
本模块采用的是
I
IC
通信方式,
所以我们只需要连接四跟线就可以完成电路的连
接,
简单方
便!
原始数据有:
AX
、
AY
、
AZ
GX
、
GY
、
GZ
简单的算法之后可以得到
Roll<
/p>
,
pitch
,
yaw
参考
MPU-6050
p>
数据手册
引脚说明:
VDD
供电电压为
2.5V
±
5%
、
3.0V
p>
±
5%
、
3.3V
±
5%
;
VD
DIO
为
1.8V
±
5%
内建振荡器在工作温度范围内仅有±
1%
频率变化。
可选外部时钟输入
32.768kHz
或
19.2MHz
找出几个重要的寄存器:
1
)
Register 25
–
Sample Rate Divider
(
SMPRT_DIV
)
1
)
SMPLRT_DIV
8
位无符号值,通过该值将陀螺仪输出分频,得到采样频率
该寄存器指定陀螺仪输出率的分频
,用来产生
MPU-60X0
的采样率。
传感器寄存器的输出、
FIFO
输出、
DMP
采样和运动检测的都是基于该采样率。
采样率的计算公式
采
样
率
=
陀
螺
仪<
/p>
的
输
出
率
/
(1
+
SMPLRT_DIV)
当数字低通滤波器没有使能的时候,陀螺仪的输出平路等于
8KHZ<
/p>
,反之等于
1KHZ
。
< br>
2
)
Register 26
–
Configuration
(
CON
FIG
)
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
(
GYR
O_CONFIG
)
1
)
XG_ST
设置此位,
X
轴陀螺仪进行自我测试。
2
)
YG_ST
设置此位,
Y
轴陀螺仪进行自我测试。
3
)
ZG_ST
设置此位,
Z
轴陀螺仪进行自我测试。
4
)
FS_SEL
2
位无符号值。选择陀螺仪的量程。
这个寄存器是用来触发陀螺仪自检和配置陀螺仪的满量程范围。
陀螺仪
自检允许用户测试陀螺仪的机械和电气部分,通过设置该寄存器的
XG_ST
、
YG_ST
和
ZG_ST bits
可以激活陀螺仪对应轴的自检。每个轴的检测可以独立进行或同时
进
行。
自检的响应
=
打开自检功能时的传感器输出
-
未启用自检功能时传感器的输
出
p>
在
MPU-6000/MPU-6050
数
据手册的电气特性表中已经给出了每个轴的限制范围。
当
自检的
响应值在规定的范围内,就能够通过自检;反之,就不能通过自检。
p>
根据下表,
FS_SEL
选择陀螺仪输出的
量程:
-
-
-
-
-
-
-
-
-
上一篇:AE期末考试笔试复习题
下一篇:常用文件格式一览表(DOC)