赞
踩
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%变动的振荡器。
从MPU6050的参数中可以得到,加速度计和陀螺仪的采样频率分别是1000Hz和8000Hz,它们是指加速度及角速度数据的采样频率,我们可以使用STM32控制器把这些数据读取出来然后进行姿态融合解算,以求出传感器当前的姿态(包括偏航角、横滚角、俯仰角)。而如果我们使用传感器内部的DMP数字运动处理器单元进行解算,他可以直接对采样得到的加速度及角速度进行姿态解算,解算得到的结果再输出给STM32控制器,即STM32无需自己计算,可直接获取偏航角、横滚角及俯仰角,该DMP每秒可输出200次姿态解算。
引脚编号 | MPU-6000 | MPU-6050 | 引脚名称 | 描述 |
1 | Y | Y | CLINK | 可选的外部时钟输入,如果不用则连到GND |
6 | Y | Y | AUX_DA | I2C主串行数据,用于外接传感器 |
7 | Y | Y | AUX_CL | I2C主串行时钟,用于外接传感器 |
8 | Y | /CS | SPI片选(0=SPI model) | |
8 | Y | VLOGIC | 数字I/O供电电压 | |
9 | Y | Y | AD0/SD0 | I2C Slave地址LSB(AD0) SPI串行数据输出(SD0) |
9 | Y | Y | AD0 | I2C Slave 地址LSB(AD0) |
10 | Y | Y | REGOUT | 校准滤波电容连线 |
11 | Y | Y | FSYNC | 帧同步数字输入 |
12 | Y | Y | INT | 中断数字输出(推挽或开漏) |
13 | Y | Y | VDD | 电源电压及数字I/O供电电压 |
18 | Y | Y | GND | 电源地 |
19,21,22 | Y | Y | RESV | 预留,不接 |
20 | Y | Y | CPOUT | 电荷泵电容连线 |
23 | Y | SCL/SCLIK | I2C 串行时钟(SCL) SPI串行时钟(SCLK) | |
23 | Y | SCL | I2C串行时钟(SCL) | |
24 | Y | SDA/SDI | I2C串行数据(SDA) SPI串行数据输入(SDI) | |
24 | Y | SDA | I2C串行数据(SDA) | |
2,3,4,5,14,15,16,17 | Y | Y | NC | 不接 |
让MPU6050内部所有寄存器恢复默认值,通过对电源管理寄存器1(0X6B)
的位7写1实现。复位后,电源管理寄存器1恢复默认值(0X40
),然后必须设置该寄存器为0X00
,以唤醒MPU6050,进入正常工作状态。
其中,DEVICE_RESET 位用来控制复位,设置为 1,复位 MPU6050,复位结束后,MPU硬件自动清零该位。SLEEEP 位用于控制 MPU6050 的工作模式,复位后,该位为 1,即进入了 睡眠模式(低功耗),所以我们要清零该位,以进入正常工作模式。TEMP_DIS 用于设置是否使能温度传感器,设置为 0,则使能;CLKSEL[2:0]用于选择系统时钟源,默认是使用内部 8M RC 晶振的,精度不高,所以我们一般选择 X/Y/Z 轴陀螺作为参考的PLL 作为时钟源,一般设置 CLKSEL=001 即可。
设置两个传感器的满量程范围(FSR),分别通过陀螺仪配置寄存器(0X1B)
和加速度传感器配置寄存器(0X1C)
设置。我们一般设置陀螺仪的满量程范围为±2000dps,加速度传感器的满量程范围为±2g。
该寄存器我们只关心 AFS_SEL[1:0]这两个位,用于设置加速度传感器的满量程范围:0, ±2g;1,±4g;2,±8g;3,±16g;我们一般设置为 0,即±2g,因为加速度传感器的 ADC也是 16 位,所以得到灵敏度为:65536/4=16384LSB/g。
该寄存器用于MPU60X0的陀螺仪采样频率输出设置
该寄存器用于设置 MPU6050 的陀螺仪采样频率,计算公式为:
采样频率 = 陀螺仪输出频率 / ( 1 + S M P L R T _ D I V ) 采样频率 = 陀螺仪输出频率 / (1+SMPLRT\_DIV) 采样频率=陀螺仪输出频率/(1+SMPLRT_DIV)
这里陀螺仪的输出频率,是 1Khz 或者 8Khz,与数字低通滤波器(DLPF)的设置有关, 当 DLPF_CFG=0/7 的时候,频率为 8Khz,其他情况是 1Khz。而且 DLPF 滤波频率一般设置为 采样率的一半。采样率,我们假定设置为 50Hz,那么 SMPLRT_DIV=1000/50-1=19。
该寄存器配置外部Frame Synchronization(FSYNC)引脚采样,陀螺仪和加速度计的数字低通滤波器
这里的加速度传感器,输出速率(Fs)固定是 1Khz,而角速度传感器的输出速率(Fs), 则根据 DLPF_CFG 的配置有所不同。
此寄存器用于验证设备的标识。WHO_AM_ I的内容是MPU-60X0的7位I2C地址的高6位。MPU-60X0的I2C地址的最低有效位由AD0引脚的值确定。AD0引脚的值没有反映在此寄存器中。寄存器的默认值为0x68。比特0和7被保留。(硬编码为0)
通过读这六个寄存器,就可以读到加速度计x/y/z轴的值。比方说X轴的数据,可以通过读取0X3B(高8位)和0X3C(低8位)寄存器得到。这六个寄存器都是8位寄存器,而读取加速度计x/y/z的寄存器都是十六位寄存器,所以每两个寄存器配置一个轴。
通过读取0X41(高8位)和0X42(低8位)寄存器得到
通过读这六个寄存器,就可以读到陀螺仪x/y/z轴的值。比方说X轴的数据,可以通过读取0X43(高8位)和0X44(低8位)寄存器得到。这六个寄存器都是8位寄存器,而读取陀螺仪x/y/z的寄存器都是十六位寄存器,所以每两个寄存器配置一个轴。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。