最近看到加速度计和陀螺仪比较火,而且也有很多人都在研究。于是也在网上淘了一个 mpu6050模块,想用来做自平衡小车。可是使用起来就发愁了。网上关于 mpu6050 的资料的确不少,但是大家都是互相抄袭,然后贴出一段程序,看完之后还是不知道所以然。
经过翻阅各个方面的资料,以及自己的研究在处理 mpu6050数据方面有一些心得,在这里和大家分享一下。
在处理加速度计和陀螺仪用到的方法都是比较简单的,这里的简单并不是不需要任何基础知识,只是这些基本知识都是最基本的,比如简单的三角函数,数学计算,物理知识, c语言以及基本的 arduino 知识(如果不会 arduino 会其它单片机也是一样的,本文实践是使用 arduino ),如果还不具备这些知识那就快去补课吧。
1、 加速度和陀螺仪原理
当然,在开始之前至少要弄懂什么是加速度计,什么是陀螺仪吧,否则那后边讲的都是没有意义的。简单的说,加速度计主要是测量物体运动的加速度,陀螺仪主要测量物体转动的角速度。这些理论的知识我就不多说了,都可以在网上查到。这里推荐一篇讲的比较详细的文章《 A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Application s》,在网上可以直接搜索到。
2、 加速度测量
在开始之前,不知大家是否还记得加速度具有合成定理?如果不记得可以先大概了解一下,其实简单的举个例子来说就是重力加速度可以理解成是由 x,y,z三个方向的加速度共同作用的结果。反过来说就是重力加速度可以分解成 x,y,z 三个方向的加速度。
加速度计可以测量某一时刻 x,y,z三个方向的加速度值。而自平衡小车利用加速度计测出重力加速度在 x,y,z 轴的分量,然后利用各个方向的分量与重力加速度的比值来计算出小车大致的倾角。其实在自平衡小车上非静止的时候,加速度计测出的结果并不是非常精确。因为大家在高中物理的时候都学过,物体时刻都会受到地球的万有引力作用产生一个向下的重力加速度,而小车在动态时,受电机的作用肯定有一个前进或者后退方向的作用力,而加速度计测出的结果是,重力加速度与小车运动加速度合成得到一个总的加速度在三个方向上的分量。
不过我们暂时不考虑电机作用产生的运动加速度对测量结果的影响。因为我们要先把复杂的事情分解成一个个简单的事情来分析,这样才能看到成果,才会有信心继续。
下边我们就开始分析从加速度得到角度的方法。如下图,把加速度计平放,分别画出 xyz轴的方向。这三个轴就是我们后边分析所要用到的坐标系。
上传的附件: