赞
踩
MPU6050是一个6轴姿态传感器(3轴加速度计和3轴陀螺仪传感器),可以测量芯片自身X、Y、Z轴的加速度、角度参数,通过数据融合,可以得到姿态角。
简单地描述以飞机为例,飞机机身对应三个轴的夹角,机头下倾或者上仰,这个轴的夹角叫俯仰(pitch)。飞机机身左翻滚或者右翻滚,这个轴的夹角叫做滚转(roll),飞机机身向左转向或者向右转向,这个轴的夹角叫做偏航(raw)。
所以欧拉角就是表述姿态的一个参数。为了保持飞机的姿态平稳,必须要得到一个精确且稳定的欧拉角。一种传感器不能获得精确且稳定的欧拉角,要获得精确稳定的欧拉角,需要多个传感器进行数据融合。常见的数据融合算法有互补滤波、卡尔曼滤波等。
横向的是x轴,纵向的是Y轴,垂直与芯片的是Z轴。
以下图为例,中间是一个具有一定质量,左右有弹簧的小滑块,小滑块移动时,滑块上的电位器也跟着移动,通过电位器的电压,就能够知道滑块的加速度值。
这个加速度计实际上是一个弹簧测力计,根据牛顿第二定律F=ma,想要测量加速度a,只需要找一个单位质量的物体,测量它所受的力F就行了。
在MPU6050中,X、Y、Z轴都具有一个加速度计,以下面的图为例,假设芯片里有6个测力的秤组成一个正方体,正方体内部放一个大小正好的单位质量小球,小球压在一个面上,就会产生对应轴的数据输出。如果压在上面为正值,压在下面为负值,6个面测的力就是3个轴的加速度值。
加速度计具有静态稳定性,不具有动态稳定性。假设芯片向左倾斜放置,底面和左面都受力,求一个三角函数,就能得到向左的倾角。但是这个倾角只有在静态时生效。因为加速度分重力加速度和运动加速度,如果此时芯片运动起来,这个三角函数的倾角就会受运动加速度的影响。(向前加速运动时,芯片的底面和左面也受力,无法判断芯片的状态是向左倾斜放置还是向前加速。)
陀螺仪:一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。
如图所示,中间是一个有一定质量的旋转轮,外面是3个轴的平衡环,当中间的旋转轮高速旋转时,根据角动量守恒原理,这个旋转轮具有保持它原有角动量的趋势。这个趋势可以保持旋转轴方向不变,当外部物体转动时,内部的旋转轴方向不会转动。这会在平衡环连接处产生角度偏差,如果在连接处放一个电位器,测量电位器的电压,就能得到角度了。
但是MPU6050陀螺仪,并不能直接测量角度。芯片内部的陀螺仪测量的时角速度,分别表示了此时芯片绕X、Y、Z轴旋转的角速度。对角速度进行积分,就可以得到角度。通过角速度积分得到的角度也有局限性,当物体静止时,角速度会因为噪声无法完全归零,经过积分的累积,噪声会导致计算出来的角速度产生缓慢的偏移。但是这个角度不会受物体运动的影响。
加速度计具有静态稳定性,陀螺仪具有动态稳定性,这两种传感器的特性正好互补。所以取长补短,进行互补滤波,就能获得稳定的姿态角了。
硬件电路包含3个部分,MPU-6050芯片,8针的排针,LDO低压差线性稳压器。
这个寄存器可以配置采样频率的分频系数,分频越小,内部的AD转换就越快。数据寄存器刷新就越快。陀螺仪输出率就是陀螺仪时钟。陀螺仪时钟/这个寄存器指定的分频系数=采样频率。
配置寄存器主要分为两个部分:外部同步设置和低通滤波设置:
外部同步设置主要是配置外部帧同步(FSYNC)引脚采样和数字,这里不做配置。
低通滤波器可以让输出数据更加平滑,配置滤波器参数越大,输出的抖动越小。
高3位是XYZ轴的自测使能位,中间2位是满量程选择位,后面3位没用到。
自测响应=自测使能时的数据-自测使能时的数据。
MPU6050的自测响应的范围如下图所示,在此范围内表示通过自测。
满量程选择:量程越大范围越广,量程越小分辨率越高。在上面的参数介绍中已经有所说明。
加速度寄存器的配置与陀螺仪寄存器配置基本上是一个逻辑。
只读,可以通过这些数据寄存器读取最新的加速度计测量值。
想读取哪个参数,只需要读取对应的数据寄存器即可。XYZ轴的加速度值都是16位的有符号数,以二进制补码的方式存储。读出高8位和低8位,使用int16类型,高位左移8位,或上低位数据,就可以得到数据了。
温度传感器的使用与加速度计寄存器基本相同,可以通过读取寄存器值来获取温度。
陀螺仪数据寄存器和加速度计测量寄存器也是同样的用法,只需要读取相应的寄存器就可以获得相应的测量数值。数据的存储方式还是16位的有符号数,以二进制补码的方式存储。
Bit7设备复位,这一位写1,所有寄存器都恢复到默认值。
Bit6睡眠模式,这一位写1,芯片睡眠,进入低功耗。
Bit5循环模式,这一位写1,芯片进入低功耗,过一段时间,启动一次,唤醒的频率由下面电源管理寄存器的Bit7和Bit6决定。
Bit3温度传感器失能,写1之后,禁用内部的温度传感器。
Bit2-0,选择系统的时钟来源。可选择:内部晶振、X/Y/Z轴陀螺仪晶振,外部引脚的两个方波,一般选择内部晶振或者陀螺仪晶振。建议使用陀螺仪晶振,更加精确。
Bit5-Bit0,可以分别控制6个轴进入待机模式,如果只需要部分轴的数据,可以让其他轴待机,这样比较省电。
Bit7-Bit6,是上面电源管理寄存器1的循环模式的唤醒频率。
注意:可以使用此寄存器将单个加速度计和陀螺仪轴置于待机模式。如果设备使用陀螺仪轴作为时钟源,并且该轴处于待机状态,时钟源将自动更改为内部8MHz振荡器。
ID号不可修改,中间6位固定为110100,最高位和最低为都是0,读出寄存器,值固定为0x68。
实际上ID号就是I2C的地址,但是有区别的是,I2C地址可以通过AD0引脚进行配置,这里的AD号最低位是不随AD0引脚的变化而变化的。
所有的寄存器上电默认值都是0x00,除了107号(电源管理寄存器1),上电默认0x40,117号寄存器(ID号),上电默认0x68。
电源管理寄存器1默认0x40,表示睡眠模式,所以在操作MPU6050之前,要先解除睡眠,否则操作其他寄存器是无效的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。