关闭

陀螺仪加速度计MPU6050

8818人阅读 评论(0) 收藏 举报
分类:

转载自:http://www.crazepony.com/wiki/mpu6050.html

陀螺仪

陀螺仪,测量角速度,具有高动态特性,它是一个间接测量角度的器件。它测量的是角度的导数,即角速度,要将角速度对时间积分才能得到角度。

陀螺仪就是内部有一个陀螺,它的轴由于陀螺效应始终与初始方向平行,这样就可以通过与初始方向的偏差计算出旋转方向和角度。传感器MPU6050实际上是一个结构非常精密的芯片,内部包含超微小的陀螺。

如果这个世界是理想的,美好的,那我们的问题到此就解决了,从理论上讲只用陀螺仪是可以完成姿态导航的任务的。只需要对3个轴的陀螺仪角速度进行积分,得到3个方向上的旋转角度,也就是姿态数据。这也就是说的快速融合

不过很遗憾,现实是残酷的,由于误差噪声等的存在,对陀螺仪积分并不能够得到完全准确的姿态,尤其是运转一段时间以后,积分误差的累加会让得到的姿态和实际的相差甚远。

那么哪些原因会使陀螺仪得到的姿态结果不准确呢?下面列举除常见的几种:

零点漂移

假设陀螺仪固定不动,理想角速度值是0dps(degree per second),但是存在零点漂移,例如有一个偏置0.1dps加在上面,于是测量出来是0.1dps,积分一秒之后,得到的角度是0.1度,1分钟之后是6度,还能忍受,一小时之后是360度,转了一圈,也就是说,陀螺仪在短时间内有很大的参考价值。

白噪声

电信号的测量中,一定会带有白噪声,陀螺仪数据的测量也不例外。所以获得的陀螺仪数据中也会带有白噪声,而且这种白噪声会随着积分而累加。

温度/加速度影响

陀螺仪是一个温度和加速度敏感的元器件。例如对于加速度,多轴飞行器中的马达一般会带来较强烈的振动,一旦减震控制不好,就会在飞行过程中产生很大的加速度,必会带来陀螺输出的变化,引入误差。这就是在陀螺仪数据手册上常见的deg/sec/g指标。

积分误差

对陀螺仪角速度的积分是离散的,长时间的积分会出现漂移的情况。所以要考虑积分误差的问题。

这是由于陀螺仪测量姿态存在这么多的误差,所以我们必须要使用其它传感器辅助校正,其中最重要的就是下面的加速度传感器。

加速度计

加速度计的低频特性好,可以测量低速的静态加速度。在我们的飞行器上,就是对重力加速度g(也就是前面说的静态加速度)的测量和分析,其它瞬间加速度可以忽略。记住这一点对姿态解算融合理解非常重要。

当我们把加速度计拿在手上随意转动时,我们看的是重力加速度在三个轴上的分量值。加速度计在自由落体时,其输出为0。为什么会这样呢?这里涉及到加速度计的设计原理:加速度计测量加速度是通过比力来测量,而不是通过加速度。

加速度计仅仅测量的是重力加速度,3轴加速度计输出重力加速度在加速度计所在机体坐标系3个轴上的分量大小。重力加速度的方向和大小是固定的。通过这种关系,可以得到加速度计所在平面与地面的角度关系.

加速度计若是绕着重力加速度的轴转动,则测量值不会改变,也就是说加速度计无法感知这种水平旋转。

有关陀螺仪和加速度计和关系,姿态解算融合的原理,再把下面这个比喻放到这里一遍。

机体好似一条船,姿态就是航向(船头的方位),重力是灯塔,陀螺(角速度积分)是舵手,加速度计是瞭望手。舵手负责估计和把稳航向,他相信自己,本来船向北开的,就一定会一直往北开,觉得转了90度弯,那就会往东开。当然如果舵手很牛逼,也许能估计很准确,维持很长时间。不过只信任舵手,肯定会迷路,所以一般都有瞭望手来观察误差。

瞭望手根据地图灯塔方位和船的当前航向,算出灯塔理论上应该在船的X方位。然而看到实际灯塔在船的Y方位,那肯定船的当前航向有偏差了,偏差就是ERR=X-Y。舵手收到瞭望手给的ERR报告,觉得可靠,那就听个90%ERR,觉得天气不好、地图误差大,那就听个10%ERR,根据这个来纠正估算航向。

MPU6050

MPU-60x0是全球首例9轴运动处理传感器。它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C或SPI接口输出一个9轴的信号(SPI接口仅在MPU-6000可用)。MPU-60x0也可以通过其I2C接口连接非惯性的数字传感器,比如压力传感器。

MPU-60x0对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。一个片上1024字节的FIFO,有助于降低系统功耗。和所有设备寄存器之间的通信采用400kHz的I2C接口或1MHz 的SPI接口(SPI仅MPU-6000可用)。对于需要高速传输的应用,对寄存器的读取和中断可用20MHz的SPI。另外,片上还内嵌了一个温度传感器和在工作环境下仅有±1%变动的振荡器。

在crazepony上,MPU6050/HMC5883/MS5611传感器之间的连接如下图所示。

DMP硬件解算

在Crazepony上,测试了软件解算四元素,然后通过四元素解算姿态角这种实现方式,其实总的来说,并没感觉36MHz的主控压力有多大,没有出现机身不稳,卡死的情况。

同时,本着务实他的态度,我们也测试了MPU6050的硬解四元素,即从IIC总线上读到的数据不再是MPU60x0的AD值,而是通过初始化对DMP引擎的配置,从IIC总线上读到的直接就是四元素的值,从而跳过了程序通过AD值计算四元素这个看起来繁琐的步骤。测试结果是,机身反应的确要比之前反应灵活,最关键的一点是,这样得出的偏航角(Yaw)很稳很稳,基本不会漂移或者说漂移小到了可以容忍的地步。

最后,MPU60x0的强大之处不仅于此,它支持一个从IIC接口,可以外部接上一个磁力计,如HMC5883,这样一来,DMP引擎可以直接输出一个绝对的方向姿态,即能够输出一个带东西南北的姿态数据包,很厉害的样子。

在Crazepony的5.2版本及以后,我们都会使用软件解算的办法,自己做姿态融合,不会再使用MPU6050自带的DMP进行硬件解算。

5
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

陀螺仪mpu6050的调试与dmp库的移植经历

通过三天的痛苦挣扎终于调通了mpu以及移植好了dmp库 一开始动手使用mpu6050的时候移植了一个例程想试下效果 不曾想调用dmp的时候就出错了,然后尝试了各种方法试图定位 错误,一开始怀疑模拟II...
  • CALL_LKC
  • CALL_LKC
  • 2017-07-15 20:12
  • 2306

陀螺仪的理解(MPU6050)

起始,陀螺仪的参数理解和应用 自从看到四轴飞行器就一直想自己做一个,于是参考和查看各种资料,其中姿态解算应该是其中很重要一部分,其中涉及到四元数和各种算法(如数据融合:梯度下降,卡尔曼滤波,互补...
  • hujiafutc
  • hujiafutc
  • 2014-11-12 10:35
  • 3237

MPU6050工作原理及STM32控制MPU6050

要想知道MPU6050工作原理,得先了解下面俩个传感器: ①陀螺仪传感器: 陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向。然后用多种...
  • he__yuan
  • he__yuan
  • 2017-08-01 21:49
  • 7919

MPU6050调试实录

最近需要做一个测试角度的东西,被介绍使用MPU6050,网上查了一下数据手册,只需要使用IIC配置一下,然后就可以IIC读取结果了(PS:之前调试过一些小摄像头,使用IIC熟手了)。 废话不多说,我使...
  • u010971216
  • u010971216
  • 2015-07-23 01:07
  • 2904

陀螺仪与加速传感器数据的融合算法解析

1、加速度计数据处理 为了实现代步车平平衡和运动控制,首先应该得到足够精确机器人车身倾角信息。根据两轮处自平衡车的应用环境,一般使用加速度器和陀螺仪两种传感器来采集代步车的姿态信息。 加速度计...
  • OnafioO
  • OnafioO
  • 2016-04-14 14:56
  • 7434

mpu6050姿态解算与卡尔曼滤波(3)加速度计标定

考虑单轴加速度计的测量模型为: am=k⋅atrue+a0+wa_{m}=k\cdot a_{true}+a_{0}+w ama_{m}为加速度计测量值,atruea_{true}为真实加速度值,...
  • qiguizhe
  • qiguizhe
  • 2017-05-06 21:25
  • 1512

重力加速度陀螺仪传感器MPU-6050(一)

MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC,将其测量的模拟量转化 为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±...
  • TXF1984
  • TXF1984
  • 2015-10-27 10:49
  • 2924

关于MPU6050陀螺仪模块的测量误差分析

本项目中使用的是MPU6050模块,如图 1所示。该模块集成了一片MPU6050芯片和一片STM8S003F3P6单片机,具有串口和I2C接口。STM8单片机对MPU6050输出的加速度和角度信息进行...
  • a752109494
  • a752109494
  • 2016-08-31 18:52
  • 6069

Mpu6050角速度的研究

  • 2013-06-13 13:33
  • 1.45MB
  • 下载

Python脚本实现树莓派对MPU6050的数据读取

树莓派连接MPU6050六轴传感器接法(mpu6050连接树莓派)#!/usr/bin/python import smbus import math# Power management regist...
  • lyj19960106
  • lyj19960106
  • 2017-08-30 17:31
  • 832
    个人资料
    • 访问:88420次
    • 积分:1212
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:75篇
    • 译文:0篇
    • 评论:5条
    最新评论