mpu6050寄存器详解文档.docx

上传人:牧羊曲112 文档编号:4886658 上传时间:2023-05-21 格式:DOCX 页数:10 大小:142.05KB
返回 下载 相关 举报
mpu6050寄存器详解文档.docx_第1页
第1页 / 共10页
mpu6050寄存器详解文档.docx_第2页
第2页 / 共10页
mpu6050寄存器详解文档.docx_第3页
第3页 / 共10页
mpu6050寄存器详解文档.docx_第4页
第4页 / 共10页
mpu6050寄存器详解文档.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《mpu6050寄存器详解文档.docx》由会员分享,可在线阅读,更多相关《mpu6050寄存器详解文档.docx(10页珍藏版)》请在三一办公上搜索。

1、详解MPU6050,用STM32读取原始数据,并相互融合算出俯仰角、 翻滚角、偏航角转载1. MPU6050 是什么?MPU6050是一个6轴运动处理组件,包含了 3轴加速度和3轴陀螺仪。MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了 组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000 整合了 3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加 速器、磁力传感器、或其他传感器的数位运动处理(DMP: Digital Motion Processor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出 完整的9轴融合

2、演算技术InvenSense的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理 运算对操作系统的负荷,并为应用开发提供架构化的API。MPU-6000的角速度全格感测范围为250、500、1000与2000/sec (dps),可 准确追快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为2g、 4g8g与16g。产品传输可透过最高至400kHz的I2C或最高达20MHz的SPI。 MPU-6000可在不同电压下工作,VDD供电电压介为2.5V5%、3.0V5%或 3.3V5%,逻辑接口 VVDIO供电为1.8V 5%。MPU-6000的包装尺寸 4x4x0.9mm(QFN),在

3、业界是革命性的尺寸。其他的特征包含内建的温度感测器、 包含在运作环境中仅有1%变动的振荡器。2. 加速度传感器是干嘛用的?总而言这,加速度传感器,其实是力传感器。用来检查上下左右前后哪几个面都受了多少 力(包括重力),然后计算角度。3. 陀螺仪是干嘛用的?简而言之,陀螺仪就是角速度检测仪。比如,一块板,以X轴为轴心,在一秒钟的时间转 到了 90度,那么它在X轴上的角速度就是90度/秒(DPS,角速度单位,Degree Per Second的缩写/S,体现了转动的快慢)4. MPU6050分辨率是多少?3轴加速度和3轴陀螺仪分别用了 3个16位的ADC,也就是说,加速度有3个16位ADC, 其中

4、每个轴使用了一个。也是说,每个轴输出的数据,是2人16也就是-32768 -+32768。 陀螺仪也是一样。5. 单位换算上面说的-32768 - +32768,那么这个数字到底代表了什么呢?比如陀螺仪32768到底是 指角速度达到多少度/秒?这个其实是根据MPU6050设置的量程来决定的,量程不一样,32768代表的值就不一样。MPU6050的量程设置,在MPU6050:initialize() (MPU6050.cpp库)初始化函数中进行了 设置:setFullScaleGyroRange(MPU6050_GYRO_FS_250);setFullScaleAccelRange(MPU605

5、0_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高低电平

6、的输 出本模块采用的是IIC通信方式,所以我们只需要连接四跟线就可以完成电路的连接,简单 方便!原始数据有:AX、AY、AZ GX、GY、GZ简单的算法之后可以得到Roll,pitch,yaw参考MPU-6050数据手册引脚说明:引脚编号MPU-4000MPU 别 60引脚名称描述1YYCLKIN可选的外部时钟输入,如果不用则 连到GND6YYAUX_DAI2C主串行数据,用于外接传履器TYYAUX_CLI2C主串行时钟,用于外接传感器8Y/CSSPI 片选(0二SPI mode)8YVLOGIC数字ire供电电压9YADO/SDOI2C Slave 地址 LSB L 3, 4, 5. 14,

7、 153 16, 17YYNC不接VDD 供电电压为 2.5V5%、3.0V5%、3.3V5%; VDDIO 为 1.8V 5%内建振荡器在工作温度范围内仅有1%频率变化。可选外部时钟输入32.768kHz或19.2MHz找出几个重要的寄存器:1)Register 25 书ample Rate Divider ( SMPRT_DIV)Type: ReadJWriteftegisier (H叫Register(DefJnial)BiteBitsBit。0h3Bit?KUBitO1925SMPLRT_DIV7 0J1)SMPLRT_DIV 8位无符号值,通过该值将陀螺仪输出分频,得到采样频率该寄存

8、器指定陀螺仪输出率的分频,用来产生MPU-60X0的采样率。传感器寄存器的输出、FIFO输出、DMP采样和运动检测的都是基于该采样率。 采样率的计算公式采样率=陀螺仪的输出率/ (1 + SMPLRT_DIV)当数字低通滤波器没有使能的时候,陀螺仪的输出平路等于8KH Z,反之等于1KHZ。2)Register 26 -Configuration(CONFIG)Type: Read/wnteRegister 明心)Bir4Bh3Bit?BrilBhOEXr_YNC_SET网DLPF_CFGp:O1)EXT_SYNC_SET 3位无符号值,配置帧同步引脚的采样2)DLPF_CFG 3位无符号值,

9、配置数字低通滤波器该寄存器为陀螺仪和加速度计配置外部帧同步(FSYNC)引脚采样和数字低通滤波器 (DLPF)。通过配置EXT_SYNC_SET,可以对连接到FSYNC引脚的一个外部信号进行采样。FSYNC引脚上的信号变化会被锁存,这样就能捕获到很短的频闪信号。采样结束后,锁存器将复位到当前的FSYNC信号状态。根据下面的表格定义的值,采集到的数据会替换掉数据寄存器中上次接收到的有效数据EXTSYNCSETFSYNC Bit Location0Input disabledTEMP_OUT_L02GYRO_XOUT_LDGYRO_YOUT_L04GYRO_ZOUT_L0SACCEL_XOUT_L

10、D6ACCEL_YOUT_LD7ACCEL_ZOUT_L0数字低通滤波器是由DLPF_CFG来配置,根据下表中DLPF_CFG的值对加速度传感器和 陀螺仪滤波DLPF_CFGAccelerometer (Fs = 1kHz)Bandwidth (Hz)Delay g)Bandwidth(HzDelay g)Fs(kHz)C2600256 98a1IE-二1&81.912982.83,444 9424.814216 52:6.315r13.31:13.416519.051&.617RESERVEDRESERVED83) Register 27 - Gyroscope Configuration

11、(GYRO_CONFIG)Type: Read/Whte(D&c imal)B瘁B瞄B剧B心Bit!ts27XG_STVG_ST2G_STFS. SELiq1) XG_ST设置此位,X轴陀螺仪进行自我测试。2) YG_ST设置此位,Y轴陀螺仪进行自我测试。3) ZG_ST设置此位,Z轴陀螺仪进行自我测试。4) FS_SEL 2位无符号值。选择陀螺仪的量程。这个寄存器是用来触发陀螺仪自检和配置陀螺仪的满量程范围。陀螺仪自检允许用户测试陀螺仪的机械和电气部分,通过设置该寄存器的XG_ST、 YG_ST和ZG_ST bits可以激活陀螺仪对应轴的自检。每个轴的检测可以独立进行或同时进 行。自检的响应

12、=打开自检功能时的传感器输出-未启用自检功能时传感器的输出在MPU-6000/MPU-6050数据手册的电气特性表中已经给出了每个轴的限制范围。当自 检的响应值在规定的范围内,就能够通过自检;反之,就不能通过自检。根据下表,FS_SEL选择陀螺仪输出的量程:FSSELFull Scale-Range0 2&0 a/S11士 500 宠F 2土1。 3土 2000 %4) Register 28 - Accelerometer Configuration (ACCEL_CONFIG)Type; Rad/WriteRsyis-terR电9&宜1) XA_ST 设置为1时,X轴加速度感应器进行自检。

13、2) YA_ST 设置为1时,Y轴加速度感应器进行自检。3) ZA_ST设置为1时,Z轴加速度感应器进行自检。4) AFS_SEL 2位无符号值。选择加速度计的量程。具体细节和上面陀螺仪的相似。根据下表,AFS_SEL选择加速度传感器输出的量程。AFSSELFull Seale Range01452土 Bg3土 1匈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)Re

14、gisterACCEL X0UT1s:B|ACCEL_OUT|7.0JA% 璀5WiType: Read OnlyRe(|istsr (DecimalBiM1) ACCEL_XOUT 16位 2s 补码值。存储最近的X轴加速度感应器的测量值。2) ACCEL_YOUT 16位 2s 补码值。存储最近的Y轴加速度感应器的测量值。3) ACCEL_ZOUT 16位 2s 补码值。存储最近的Z轴加速度感应器的测量值。这些寄存器存储加速感应器最近的测量值。加速度传感器寄存器,连同温度传感器寄存器、陀螺仪传感器寄存器和外部感应数据寄 存器,都由两部分寄存器组成(类似于STM32F10X系列中的影子寄存器

15、):一个内部寄 存器,用户不可见。另一个用户可读的寄存器。内部寄存器中数据在采样的时候及时的到 更新,仅在串行通信接口不忙碌时,才将内部寄存器中的值复制到用户可读的寄存器中去, 避免了直接对感应测量值的突发访问。在寄存器28中定义了每个16位的加速度测量值的最大范围,对于设置的每个最大范围, 都对应一个加速度的灵敏度ACCEL_xOUT,如下面的表中所示:AFSSELFull Scale RangeLSB Sensitivity02。16384 LSBAfif13192LSB/028g4096 LSB/g31削2043 LSB/g6) Registers 65 and 66- Temperat

16、ure Measurement (TEMP_OUT_H and TEMP_OUT_L)Type: Read Only(Hex)Register (Deci mal|5117B沛SI15BildBii3BftiBitlEitO41k 6ETFMP.oinpF42瞒TEMP_O(JT71)TEMP_OUT 16位有符号值。存储的最近温度传感器的测量值。7) Registers 67 to 72 - Gyroscope Measurements ( GYRO_XOUT_H, GYRO_XOUT_L, GYRO_YOUT_H, GYRO_YOUT_L, GYRO_ZOUT_H, and GYRO_ZO

17、UT_L)Type; Re丽 OnlyRe-gisre-r (Hek)施日物&FttBite I白涉Bit!Srffl4367GYRO_XOUTl5:fl44GYRO_XOUip 0牯胸GRO._rOUT|l5:a70GYRO_raurp-o4771GRo_zaiirji 前72GYRO_ZOirTp:0)这个和加速度感应器的寄存器相似 对应的灵敏度:FS_SELFull Scale RangeLSB Sensitivity0土 250 7s131 LS驴信1土 500 o/S65.5LSB/D/S2土 WOO /s32.8LSB/d/532000 Ms16.4LSB/D/s8)Registe

18、r 107- Power Management 1(PWR_MGMT_1)Type: Read/Write限勺i瞄 (Has)RegisterBit?Bit5BiU3trl如1OTPEYiCE -RESEJSLEEPCVCLEfLEL2.D该寄存器允许用户配置电源模式和时钟源。它还提供了一个复位整个器件的位,和一个关 闭温度传感器的位1) DEVICE_RESET置1后所有的寄存器复位,随后DEVICE_RESET自动置0.2) SLEEP置1后进入睡眠模式3) CYCLE当CYCLE被设置为1,且SLEEP没有设置,MPU-60X0进入循环模式, 为了从速度传感器中获得采样值,在睡眠模式和正

19、常数据采集模式之间切换,每次获得一 个采样数据。在LP_WAKE_CTRL(108)寄存器中,可以设置唤醒后的采样率和被唤醒的 频率。4) TEMP_DIS 置1后关闭温度传感器5) CLKSEL指定设备的时钟源时钟源的选择:CLKSELClock Source0Internal 8MHz oscillator1PLL with X axis gyroscope reference2PLL with Y axis gyroscope reference3PLL with Z axis gyroscope reference4PLL with external 32.768kHzi refere

20、nce5PLL with external 9.2MHz reference6Reserved1Stops the clock and keeps the timing generator in reset9)Register 117 -Who Am I(WHO_AM_I)WHO_AM_I中的内容是MPU-60X0的6位I2C地址上电复位的第6位到第1位值为:110100为了让两个MPU-6050能够连接在一个I2C总线上,当AD0引脚逻辑低电平时,设备的地址是b1101000,当AD0引脚逻辑高电平时,设备的地址是b1101001(2013.01.24)淘宝买的货终于到了,学习用所以没买好的

21、,这个模块只要18块钱。MPU-6000可以使用SPI和I2C接口,而MPU-6050只能使用I2C,其中I2C的地址由AD0 引脚决定;寄存器共117个,挺多的,下面的是精简常用的,根据具体的要求,适当的添加。#define SMPLRT_DIV 0x19 /采样率分频,典型值:0x07(125Hz) */#define CONFIG 0x1A/ 低通滤波频率,典型值:0x06(5Hz) */#define GYRO_CONFIG 0x1B /陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s) */#define ACCEL_CONFIG 0x1C /加速计自检、测量范围及

22、高通滤波频率,典型值:0x01(不自检,2G,5Hz) */#define ACCEL_XOUT_H 0x3B /存储最近的X轴、Y轴、Z轴加速度感应器的测量值*/#define ACCEL_XOUT_L 0x3C#define ACCEL_YOUT_H 0x3D#define ACCEL_YOUT_L 0x3E#define ACCEL_ZOUT_H 0x3F#define ACCEL_ZOUT_L 0x40#define TEMP_OUT_H 0x41 /存储的最近温度传感器的测量值*/#define TEMP_OUT_L 0x42#define GYRO_XOUT_H 0x43 /存储最

23、近的X轴、Y轴、Z轴陀螺仪感应器的测量值*/#define GYRO_XOUT_L 0x44#define GYRO_YOUT_H 0x45#define GYRO_YOUT_L 0x46#define GYRO_ZOUT_H 0x47#define GYRO_ZOUT_L 0x48#define PWR_MGMT_1 0x6B /电源管理,典型值:0x00(正常启用)*/#define WHO_AM_I 0x75 /IIC地址寄存器(默认数值0x68,只读)*/编程时用到的关于I2C协议规范:信号描述S开始标志:SCL为鬲时SDA的卜降沿AD从设备地址(Slave地址)W写数据位CO)R读数据位5 )ACK应整檎争在第9个时钟周期SCL为商时.SDA为低NACK拒绝应誉:在第9个时钟周期,SDA 为fiijRAMPU-6QX。内部帘存器地址DATA发送或接受的教据P停止标志】SCL为博时SDA的上升沿

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号