基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx

上传人:b****4 文档编号:7162334 上传时间:2023-05-08 格式:DOCX 页数:61 大小:851.78KB
下载 相关 举报
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第1页
第1页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第2页
第2页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第3页
第3页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第4页
第4页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第5页
第5页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第6页
第6页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第7页
第7页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第8页
第8页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第9页
第9页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第10页
第10页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第11页
第11页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第12页
第12页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第13页
第13页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第14页
第14页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第15页
第15页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第16页
第16页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第17页
第17页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第18页
第18页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第19页
第19页 / 共61页
基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx_第20页
第20页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx

《基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx(61页珍藏版)》请在冰点文库上搜索。

基于MPU6050的INS惯性导航和实时姿态检测系统Word文件下载.docx

3.扩展蓝牙模块,能通过蓝牙模块与手机连接并进行数据通信。

4.根据函数提供的帧格式定义数据帧,并通过USART接口将数据帧传给PC端。

5.在手机端能根据蓝牙获取的MPU6050六轴传感器的陀螺仪数据绘出立方体,立方体能在可接受的时间延迟内实时展现MPU6050的姿态变化(转动方向和角度)。

6.在PC端能通过对从USART接口获取的数据帧进行解析获取MPU6050加速度传感器和陀螺仪的数据,并根据数据帧中设置的校验位进行数据校验。

7.在PC端能根据解析出的加速度传感器和陀螺仪数据,在可接受的误差范围内还原MPU6050的姿态变化(包括位移、转动方向和角度),实现一个简单的惯性导航系统。

5.系统设计

5.1IIC总线工作原理

1

2

3

4

5

5.1

5.1.1总线的构成及信号类型

I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。

在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。

各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。

CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;

控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。

这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

I2C总线在传送数据过程中共有三种类型信号,它们分别是:

开始信号、结束信号和应答信号。

开始信号:

SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:

SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。

应答信号:

接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。

CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况做出是否继续传递信号的判断。

若未收到应答信号,由判断为受控单元出现故障。

这些信号中,开始信号是必须的,结束信号和应答信号都可以不要,IIC总线时序图如图5.1.1-1所示。

图5.11IIC总线时序图

探索者STM32F4开发板板载的EEPROM芯片型号为24C02。

该芯片的总容量为256字节,通过IIC总线与外部连接。

STM32F4开发板有硬件IIC,但是设计的比较复杂,而且稳定性不好,所以我组使用GPIO软件模拟IIC来对24C02进行读写。

同时使用软件更具有移植性,只要有IO口,将软件移植过去就能使用模拟的IIC,而硬件必须MCU的支持。

5.1.2硬件设计

实现模拟IIC需要用到的硬件资源有:

串口(USMART)、GPIO、24C02。

图5.12STM32F4与24C02连接图

我组通过GPIO来模拟IIC,24C2的SCL和SDA分别连在GPIO_PB8和GPIO_PB9上,连接关系如图5.1.2-1。

5.2MPU6050工作原理

5.2

5.2.1MPU6050引脚

图5.21MPU6050结构图

模块外观如图5.2.1-2所示:

图5.22MPU6050实物图

图5.23MPU6050内部逻辑框图

如图5.2.1-1为MPU6050六轴传感器的结构图,总共有24个引脚,而图5.2.1-2为MPU6050的内部逻辑框图,描述了MPU6050内部的模块结构,以及各引脚的连接情况。

表5.2.11MPU6050引脚输出和信号描述

PinNumber

MPU-6050

PinName

PinDescription

1

Y

CLKIN

Optionalexternalreferenceclockinput.ConnecttoGNDifunused.

6

AUX_DA

I2Cmasterserialdata,forconnectingtoexternalsensors

7

AUX_CL

I2CMasterserialclock,forconnectingtoexternalsensors

8

/CS

SPIchipselect(0=SPImode)

VLOGIC

DigitalI/Osupplyvoltage

9

AD0/SDO

I2CSlaveAddressLSB(AD0);

SPIserialdataoutput(SDO)

AD0

I2CSlaveAddressLSB(AD0)

10

REGOUT

Regulatorfiltercapacitorconnection

11

FSYNC

Framesynchronizationdigitalinput.ConnecttoGNDifunused.

12

INT

Interruptdigitaloutput(totempoleoropen-drain)

13

VDD

PowersupplyvoltageandDigitalI/Osupplyvoltage

18

GND

Powersupplyground

19,21

RESV

Reserved.Donotconnect.

20

CPOUT

Chargepumpcapacitorconnection

22

23

SCL/SCLK

I2Cserialclock(SCL);

SPIserialclock(SCLK)

SCL

I2Cserialclock(SCL)

24

SDA/SDI

I2Cserialdata(SDA);

SPIserialdatainput(SDI)

SDA

I2Cserialdata(SDA)

2,3,4,5,14,

15,16,17

NC

Notinternallyconnected.MaybeusedforPCBtracerouting.

表5.2.1-1对每一个引脚的名称和作用进行了说明。

在上述引脚中,SCL和SDA是连接MCU的IIC接口,MCU通过这个IIC接口来控制MPU6050。

另外还有一个IIC接口,连接的引脚为AUX_CL和AUX_DA,这个接口可用来连接外部从设备,比如磁传感器,这样就可以与MPU6050组成一个九轴传感器。

VLOGIC是IO口电压,该引脚最低可以到1.8V,我们一般直接VDD即可。

AD0是从IIC接口(接MCU)的地址控制引脚,该引脚控制IIC地址的最低位,如果接GND,则MPU6050的IIC地址是0X68;

如果接VDD,则是0X69。

注意:

这里的地址是不包含数据传输的最低位的(最低位用来表示读写)。

在探索者STM32F4开发板上,AD0是接GND的,即MPU6050的IIC地址是0X68(不含最低位)。

5.2.2硬件设计

图5.24MPU6050与STM32F4的连接电路图

从图5.2.2-1可以看出,MPU6050通过三根线与STM32F4开发板连接,其中IIC总线时和24C02以及WM8978共用,接在PB8和PB9上面。

MPU6050的中断输出,连接在STM32F4的PC0脚,不过本例程我们并没有用到中断。

另外,AD0接的GND,所以MPU6050的器件地址是:

0X68。

5.2.3初始化操作

在使用STM32F4读取MPU6050的加速度和角度传感器数据之前,需要做以下初始化操作:

(1)初始化IIC接口

MPU6050采用IIC与STM32F4通信,所以我们需要先初始化与MPU6050连接的SDA和SCL数据线。

(2)复位MPU6050

这一步让MPU6050内部所有寄存器恢复默认值,通过对电源管理寄存器1(0X6B)的bit7写1实现。

复位后,电源管理寄存器1恢复默认值(0X40),然后必须设置该寄存器为0X00,以唤醒MPU6050,进入正常工作状态。

(3)设置角速度传感器(陀螺仪)和加速度传感器的满量程范围

这一步,我们设置两个传感器的满量程范围(FSR),分别通过陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置。

我们一般设置陀螺仪的满量程范围为±

2000dps,加速度传感器的满量程范围为±

2g。

(4)设置其他参数

这里,我们还需要配置的参数有:

关闭中断、关闭AUXIIC接口、禁止FIFO、设置陀螺仪采样率和设置数字低通滤波器(DLPF)等。

本章我们不用中断方式读取数据,所以关闭中断,然后也没用到AUXIIC接口外接其他传感器,所以也关闭这个接口。

分别通过中断使能寄存器(0X38)和用户控制寄存器(0X6A)控制。

MPU6050可以使用FIFO存储传感器数据,不过本章我们没有用到,所以关闭所有FIFO通道,这个通过FIFO使能寄存器(0X23)控制,默认都是0(即禁止FIFO),所以用默认值就可以了。

陀螺仪采样率通过采样率分频寄存器(0X19)控制,这个采样率我们一般设置为50即可。

数字低通滤波器(DLPF)则通过配置寄存器(0X1A)设置,一般设置DLPF为带宽的1/2即可。

(5)配置系统时钟源并使能角速度传感器和加速度传感器

系统时钟源同样是通过电源管理寄存器1(0X1B)来设置,该寄存器的最低三位用于设置系统时钟源选择,默认值是0(内部8MRC震荡),不过我们一般设置为1,选择x轴陀螺PLL作为时钟源,以获得更高精度的时钟。

同时,使能角速度传感器和加速度传感器,这两个操作通过电源管理寄存器2(0X6C)来设置,设置对应位为0即可开启。

5.2.4相关寄存器

在读取MPU6050数据中主要用到了以下寄存器:

(1)PowerManagement1(电源管理寄存器1)

表5.2.41电源管理寄存器1各位描述

Register(Hex)

Register(Decimal)

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

6B

107

DEVICE_RESET

SLEEP

CYCLE

-

TEMP_DIS

CLKSEL[2:

0]

如表5.2.4-1,寄存器地址为0x6B。

DEVICE_RESET位用来控制复位,设置为1,复位MPU6050,复位结束后,MPU硬件自动清零该位;

SLEEEP位用于控制MPU6050的工作模式,复位后,该位为1,即进入了睡眠模式(低功耗),所以我们要清零该位,以进入正常工作模式;

TEMP_DIS用于设置是否使能温度传感器,设置为0,则使能;

0]用于选择系统时钟源,选择关系如表5.2.4-2所示,默认是使用内部8MRC晶振的,精度不高,所以我们一般选择X/Y/Z轴陀螺作为参考的PLL作为时钟源,一般设置CLKSEL=001即可。

表5.2.42CLKSEL选择列表

时钟源

000

内部8MRC晶振

001

PLL,使用X轴陀螺作为参考

010

PLL,使用Y轴陀螺作为参考

011

PLL,使用Z轴陀螺作为参考

100

PLL,使用外部32.768Khz作为参考

101

PLL,使用外部19.2Mhz作为参考

110

保留

111

关闭时钟,保持时序产生电路复位状态

(2)GyroscopeConfiguration(陀螺仪配置寄存器)

表5.2.43表陀螺仪配置寄存器各位描述

Register

(Hex)

Register(Decimal)

1B

27

XG_ST

YG_ST

ZG_ST

FS_SEL[1:

如表5.2.4-3,寄存器地址为0x1B。

0]两个位用于设置陀螺仪的满量程范围:

0为±

250°

/s;

1为±

500°

2为±

1000°

3为±

2000°

/s。

我们一般设置为3,即±

/s,而因为陀螺仪的ADC为16位分辨率,所以得到灵敏度为:

65536/4000=16.4LSB/(°

/s)。

(3)AccelerometerConfiguration(加速度传感器配置寄存器)

表5.2.44加速度传感器配置寄存器各位描述

(Decimal)

1C

28

XA_ST

YA_ST

ZA_ST

AFS_SEL[1:

如表5.2.4-4,寄存器地址为0x1C。

0]两个位用于设置加速度传感器的满量程范围:

2g;

4g;

8g;

16g。

我们一般设置为0,即±

2g,而因为加速度传感器的ADC也是16位分辨率,所以得到灵敏度为:

65536/4=16384LSB/g。

(4)FIFOEnable(FIFO使能寄存器)

表5.2.45FIFO使能寄存器各位描述

35

TEMP_FIFO_EN

XG_FIFO_EN

YG_FIFO_EN

ZG_FIFO_EN

ACCEL

_FIFO_EN

SLV2

SLV1

SLV0

如表5.2.4-5,寄存器地址为0x23。

该寄存器用于控制FIFO使能,在简单读取传感器数据的时候,可以不用FIFO,设置对应位为0即可禁止FIFO,设置为1,则使能FIFO。

注意加速度传感器的3个轴,全由1个位(ACCEL_FIFO_EN)控制,只要该位置1,则加速度传感器的三个通道都开启FIFO了。

(5)SampleRateDivider(采样率分频寄存器)

表5.2.46陀螺仪采样率分频寄存器各位描述

19

25

SMPLRT_DIV[7:

如表5.2.4-6,寄存器地址为0x19。

该寄存器用于设置MPU6050的陀螺仪采样频率,计算公式为:

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

这里陀螺仪的输出频率,是1Khz或者8Khz,与数字低通滤波器(DLPF)的设置有关,当DLPF_CFG=0/7的时候,频率为8Khz,其他情况是1Khz。

而且DLPF滤波频率一般设置为采样率的一半。

我们假定设置采样率为50Hz,那么SMPLRT_DIV=1000/50-1=19。

(6)Configuration(配置寄存器)

表5.2.47配置寄存器各位描述

Register

1A

26

EXT_SYNC_SET[2:

DLPF_CFG[2:

如表5.2.4-7,寄存器地址为0x1A。

加速度计和陀螺仪是根据数字低通滤波器(DLPF)的三个设置位进行过滤的,即DLPF_CFG[2:

0]。

DLPF_CFG不同配置对应的过滤情况如表5.2.4-8所示:

表5.2.48DLPF_CFG配置表

加速度传感器

Fs=1Khz

角速度传感器

(陀螺仪)

带宽(Hz)

延迟(ms)

Fs(Khz)

260

256

0.98

184

2.0

188

1.9

94

3.0

98

2.8

44

4.9

42

4.8

21

8.5

8.3

13.8

13.4

5

19.0

18.6

加速度传感器输出速率(Fs)固定是1Khz,而角速度传感器的输出速率(Fs),则根据DLPF_CFG的配置有所不同。

一般我们设置角速度传感器的带宽为其采样率的一半,如前面所说的,如果设置采样率为50Hz,那么带宽就应该设置为25Hz,取近似值20Hz,就应该设置DLPF_CFG为100。

(7)PowerManagement2(电源管理寄存器2)

表5.2.49电源管理寄存器2各位描述

Bit5

Bit4

Bit3

Bit1

Bit0

6C

108

LP_WAKE_CTRL[1:

STBY

_XA

_YA

_ZA

STBY

_XG

_YG

_ZG

如表5.2.4-9,寄存器地址为0x6C。

该寄存器的LP_WAKE_CTRL用于控制低功耗时的唤醒频率,项目中没有用到。

剩下的6位,分别控制加速度和陀螺仪的x/y/z轴是否进入待机模式,由于不需要进入待机模式,所以全部设置为0。

(8)GyroscopeMeasurements(陀螺仪数据输出寄存器)

表5.2.410陀螺仪数据输出寄存器各位描述

Register(Hex)

43

67

GYRO_XOUT[15:

8]

68

GYRO_XOUT[7:

45

69

GYRO_YOUT[15:

46

70

GYRO_YOUT[7:

47

71

GYRO_ZOUT[15:

48

72

GYRO_ZOUT[7:

如表5.2.4-10,总共有6个寄存器,地址为0x43~0x48,通过读取这6个寄存器,就可以读到陀螺仪x/y/z轴的值,比如x轴的数据,可以通过读取0x43(高8位)和0x44(低8位)寄存器得到,其他轴以此类推。

(9)AccelerometerMeasurements(加速度传感器数据输出寄存器)

表5.2.411加速度传感器数据输出寄存器各位描述

3B

59

ACCEL_XOUT[15:

3C

60

ACCEL_XOUT[7:

3D

61

ACCEL_YOUT[15:

3E

62

ACCEL_YOUT[7:

3F

63

ACCEL_ZOUT[15:

40

64

ACCEL_ZOUT[7:

如表5.2.4-11,总共有

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2