Arduino如何使用MPU6050

  • 内容
  • ....
  • 相关

在这篇文章中,将介绍与Arduino兼容的IMU(惯性测量单元)传感器。文中将提供一个简短的教程,让我们可以更好地通过Arduino使用IMU传感器。MPU 6050属于IMU传感器系列,通常被用于自平衡机器人、无人机、智能手机等领域。IMU传感器可以帮助我们在三维空间中获取物体当前三维位置的值,这些值可以用来帮助我们确定物体的精确位置,通过MPU6050可以检测智能手机的水平或倾斜状态或是使用IMU传感器来追踪运动状态等。因此,IMU传感器具有很广泛的应用,甚至可用于检测四轴飞行器(无人机)的空中姿态。能找到的IMU传感器包括:

  • ADXL 345 加速度计
  • ITG 3200 陀螺仪
  • MPU 6050

当我们单独把加速度计和陀螺仪组合使用时,要将两种功能模块组合在一起并做到精确控制并不容易。这是采用MPU 6050则可以很可靠和精确的来完成开发。相对来MPU6050除了比其他传感器便宜,在功能上也表现得更好。

mpu-6050针脚定义图

在下面的文章中,我们将介绍MPU 6050的基本使用,演示如何将其与Arduino进行交互,并展示如何使用Arduino 和 MPU 6050的数据来制作3D模型。

IMU是包含哪些功能?

IMU传感器通常包含两个或多个功能,按优先级分别是加速计、陀螺仪、磁力计和测高仪。MPU 6050是6自由度或6轴的IMU传感器,这意味着它提供了6个值作为输出:包含加速度计的3个值和陀螺仪的3个值。MPU 6050是一种基于MEMS(微机电系统)技术的传感器,它将加速度计和陀螺仪嵌入到一块芯片中,芯片使用的I2C通信协议。

加速度计是如何工作的?

加速度计的工作原理

加速度计采用压电效应的工作原理,就像上面的图片一样,在一个立方体的盒子里面有一个小球,盒子的四壁是用压电晶体材料,当盒子倾斜时,由于重力的作用,球就会向倾斜的方向移动,当小球碰到墙壁就会产生压电电流。盒子中有上下、左右、前后三对相对的墙壁,每一对墙对应于三维空间中的一个轴:X轴、Y轴、Z轴。根据压电壁产生的电流,我们就可以确定倾角的方向和大小。

陀螺仪是如何工作的?

陀螺仪的工作原理

陀螺仪采用的是科里奥利加速度原理。如上图一样,有一个类似于上图的结构,中间的介质在腔体中恒定的来回运动。腔体也是压电晶体制成的,当我们倾斜这个腔体时,介质会往倾斜的方向上受力。这样,介质就产生了压电效应,然后微控制器微对压电电流进行提取,从而完成陀螺仪的状态值得读取。

连接Arduino与MPU 6050

详见 MPU6050的I2C接口测试

上传代码并测试Arduino MPU 6050

为了测试Arduino MPU 6050,首先需要下载由Jeff Rowberg开发的MPU 6050的Arduino库。下载地址:MPU6050.zip。接下来,解压得到名为“MPU6050”的文件夹,将其粘贴到Arduino的“library”文件夹中。如果你还没有安装I2Cdev库,你也需要按照上面的步骤安装I2Cdev库。下载地址:I2Cdev.zip

如果安装正确,当打开Arduino IDE时,可以在“File –> Examples”中看到“MPU6050”。接下来,打开示例程序“File –> Examples –> MPU6050 –> Examples –> MPU6050_DMP6.”

MPU6050测试

上传测试代码后,打开串行监视器,并将串口监视器的波特率设置为115200。接下来,是否看到了“Initializing I2C devices …”之类的东西。如果未看到任何输出,按一下Arduino上的“REST”键,当看到”Send any character to begin DMP programming and demo.” 的时候,在串口监视器的命令栏填入任意字符,然后“SEND”,这是可以看到从MPU 6050读取的yaw, pitch,  roll 的值。

mpu6050串口监视器输出

上图中DMP代表数字运动处理。MPU 6050有一个内置的运动处理器,它用来处理来自加速计和陀螺仪的值,从而为我们提供精确的三维数据。

后续将介绍:如何用Processing对MPU 6050的值进行建模