mpu6050寄存器地址
扫描二维码
随时随地手机看文章
最近开始使用了6轴姿态传感器MPU6050,准备学习一下姿态融合,于是打算写下了这篇博客。使用MPU6050之前,建议先阅读一遍他的寄存器手册,这样初学者能够更进一步了解MPU6050的地址,能够更快速理解配置代码。废话不多说,先看MPU6050的寄存器。这个寄存器是指定陀螺仪输出速率的除法器,用于生成MPU-6050的采样速率。这个寄存器的地址是0x19
采样率公式:Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)
Sample Rate :采样频率 Gyroscope Output Rate:陀螺仪输出频率
SMPLRT_DIV:8位无符号值。 采样速率由陀螺仪输出速率除以该值确定。
对于陀螺仪输出频率需要主要一点:当DLPF低通滤波器禁用时(即DLPF_CF为0或7)陀螺仪输出频率为8KHz,当其使能使,陀螺仪输出频率为1KHz。
这个寄存器是用于配置陀螺仪和加速度计的外部帧同步(FSYNC)引脚采样和数字低通滤波器(DLPF)设置。0x1A是这个寄存器的地址,EXT_SYNC_SET是3位无符号值。 配置FSYNC引脚采样,一般情况下是给000(即禁止输入),DLPF_CF是设置低通滤波器的频率。这个频率一般情况下是带宽的 1/2 即可。(具体详细内容可以见寄存器手册)
MPU-60X0是全球首例9轴运动处理传感器。它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(DigitalMotionProcessor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C或SPI接口输出一个9轴的信号(SPI接口仅在MPU-6000可用)。MPU-60X0也可以通过其I2C接口连接非惯性的数字传感器,比如压力传感器。
MPU-60X0对陀螺仪和加速度计分别用了三个16位的ADC(0~65535),将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。
芯片尺寸4×4×0.9mm,采用QFN封装(无引线方形封装),可承受最大10000g的冲击,并有可编程的低通滤波器。
MPU6050的内部框图如下图所示:其中,需要了解的引脚有:SCL和SDA是连接MCU的IIC接口,MCU通过这个IIC接口来控制MPU6050,另外还有一个IIC接口:AUX_CL和AUX_DA,这个接口可用来连外部从设备比如磁力计,这样就可以组成一个九轴传感器。VLOGIC是IO口电压,该引脚最低可以到1.8V电压,我们一般直接连VDD即可。AD0是从IIC接口(接MCU)的地址控制引脚,该引脚控制的是IIC地址的最低位。如果接GND,则MPU6050的IIC地址是:0X68,如果接VDD,则是0X69。需要注意的是:这里的地址0x68和0x69是不包含用于数据传输的最低位的,因此并不是八位数据,如0x68表示的是1101000,0x69表示的则是1101001,通常最低位用于表示IIC主机的读取数据/写数据模式。selftest为自检,自检的作用是可用来测试传感器的机械和电气结构。也就是说通过自检来测试芯片是否损坏。自检启动后,电路会使传感器工作并且产生输出信号。关于自检的具体说明,官方芯片手册里有详细描述。
MPU6050官方的寄存器手册上共介绍了40个寄存器的内容和功能,在此我只选取一些常用的和重要的寄存器作为了解。
说明:该寄存器指定陀螺仪输出速率的分频器,用于为MPU-60X0生成采样速率。
传感器寄存器输出,FIFO输出,DMP采样,运动检测,静止检测和自由落体检测都基于这个采样频率。
采样频率=陀螺仪输出频率/(1+SMPLRT_DIV)
当DLPF(数字低通滤波器,见寄存器Configuration)禁用时(DLPF_CFG=0or7),陀螺输出频率=8kHz;当DLPF使能,陀螺仪输出频率=1KHz。注意:加速度计输出频率为1KHz。这意味着,当采样频率大于1KHZ时,同个加速度计采样得到的数据,可能不止一次输出到FIFO、DMP、传感器寄存器。
说明:该寄存器为陀螺仪和加速度计配置外部帧同步(FSYNC)管脚的采样和数字低通滤波(DLPF)设置。
其中,数字低通滤波器DLPF由DLPF_CFG配置。根据下表所示的DLPF_CFG值对加速度计和陀螺仪进行滤波。其中,FS为陀螺仪输出频率。SMPLRT_DIV由预设定的采样频率根据上述的公式计算得出。一般情况下,DPLF滤波频率为采样频率的一半,如设定采样频率为50Hz,由表可知当FS为1kHz,SMPLRT_DIV的值为1000/50-1=19。
说明:该寄存器是用来触发陀螺仪自检和配置陀螺仪的满量程范围。
其中,XG_ST、YG_ST、ZG_ST分别用来设置陀螺仪X轴、Y轴、Z轴自检,置0则不触发自检。FS_SEL[1:0]用于设置陀螺仪的满量程,如下表:我们一般设置为3,即满量程为±2000°/s,由于采用16位ADC即0-65536,则灵敏度G=65536/4000=16.4LSB/(°/s),LSB表示最低有效位,即1°/s对应的数字量为16.4。最终即可将陀螺仪输出的数字量数据转化为角速度。
说明:该寄存器是用来触发加速度计自检和配置加速度计的满量程范围。同时这个寄存器也可以用于配置数字高通滤波器(DHPF)。
其中,XA_ST、YA_ST、ZA_ST分别用来设置加速度计X轴、Y轴、Z轴自检,置0则不触发自检。AFS_SEL[1:0]用于选择加速度计的满量程范围,如下表:我们一般设置为0,即满量程为±2g,由于采用16位ADC即0-65536,则灵敏度G=65536/4=16384LSB/(g),LSB表示最低有效位,即1g对应的数字量为16384。最终即可将加速度计输出的数字量数据转化为加速度。
说明:该寄存器存储最近加速度计的测量值。加速度计根据采样频率(由采样分频寄存器寄存器设定)写入到这些寄存器。即采样频率为50Hz,写入数据的时间间隔为0.02s。加速度计测量值寄存器和温度测量值寄存器,陀螺仪测量值寄存器,外部传感器数据寄存器都是由两组寄存器构成:一个内部寄存器集和一个用于用户读取的寄存器集。
加速度计传感器的内部寄存器集合里的数据根据采样频率更新。以此同时,每当串行接口处于闲置状态,面向用户的读取寄存器集合会复制内部寄存器集合的数据值。这保证了突发读取时传感器寄存器可以读到相同的采样时刻的测量值。需要注意的是,如果没有突发读取,则用户负责通过检查数据就绪中断(DataReadyinterrupt)来确保瞬时的一组单字节读取对应于单字节的采样数据。MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景
3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度(加速度计具有静态稳定),不具有动态稳定性。)如一个车在斜坡上,椅子和靠背都受到了力的作用,但是车是水平向前的,因此当物体运动,使用加速度计来测量,测出来的角度就会不准确。
3 轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度 :具有动态稳定性,不具有静态稳定性。
举个例子:游乐园的旋转飞椅,中间的旋转轴转的越快,挂在上面的椅子就会飞的越远,直接测量两个对向椅子之间的距离就可以得到,旋转轴的角速度。
如果想得到角度,只需要对角速度积分即可。 当物体静止时,角速度值会因为噪声,无法完全归0,经过积分的不断累积,就会导致产生的角速度有缓慢的飘逸。
(因为加速度计和陀螺仪是互补的,因此采用互补滤波,就可进行姿态解算(简单))。
3轴磁场传感器 9轴 飞机机头的上仰和下倾 称为俯仰
气压传感器 10轴 飞机机身左翻滚和右翻滚称为ROLL
通过数据融合可以得到欧拉角(飞控算法) :互补滤波,卡尔曼滤波
欧拉角: 飞机机身保持水平,机头向左右转向,称为偏航