0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样将Arduino与MPU6050连接

454398 来源:工程师吴畏 2019-07-29 08:56 次阅读

在进入项目之前,您需要了解MPU6050传感器的一些基础知识。 MPU-6050是一种IMU传感器,在单个芯片上包含MEMS微机电系统)加速度计和MEMS陀螺仪

这里是IMU传感器,其中IMU代表惯性测量单元,是一种利用加速度计测量比力的装置,使用陀螺仪测量角速率和使用磁强计测量磁场。

IMU传感器用于自平衡机器人,飞机,手机,平板电脑,航天器,卫星,无人机,无人机(无人驾驶飞行器)等用于引导,位置检测,方向检测,运动跟踪和飞行控制。

两种常见的IMU是ADXL 335加速度计和MPU-6050。 ADXL 335包含一个3轴加速度计。

对于MPU-6050,它是一个六轴运动跟踪设备,结合了3轴加速度计和3 -axis陀螺仪在一个芯片上。我们将在下一节中看到有关MPU6050的更多详细信息

简介到MPU6050传感器

MPU-6050是由InvenSense开发的六轴运动跟踪设备。 MPU6050器件的主要特性如下所述。

三轴加速度计

三轴陀螺仪

数字输出温度传感器

六个16位ADC(三个用于加速度计,三个用于陀螺仪)

集成数字运动处理器(DMP)

1024B FIFO缓冲区

六轴MPU-6050被称为6 DoF(六自由度)设备,因为它提供六个输出值(三个来自Accelerometer,三个来自Gyro)。 MPU-6050可以使用I2C协议进行通信

数字运动处理器或DMP是一种嵌入式处理器,可以减少来自主处理器的计算负载,如Arduino,从加速度计,陀螺仪和外部磁力计获取和处理数据。

将MPU6050与Arduino接口

如前所述,MPU6050仅支持I2C通信,因此必须仅连接到Arduino的I2C引脚。 Arduino的I2C引脚与模拟输入引脚A4和A5复用,即A4为SDA,A5为SCL。

来到MPU6050,我们使用了一个提供8个引脚的普通分线板。上图显示了MPU6050分线板的原理图。

在此,我们将使用SCL,SDA和INT引脚连接Arduino。

所需组件

硬件

Arduino UNO [在此处购买]

MPU6050分组板[在此处购买]

连接线[在此处购买]

软件

Arduino IDE

处理(用于3D可视化)

电路图

下图显示了MPU6050与Arduino UNO接口的电路图。如前所述,MPU6050和Arduino之间的接口必须使用I2C协议实现。

因此,Arduino(A5)的SCL引脚连接到MPU6050的SCL引脚。同样,Arduino(A4)的SDA引脚连接到MPU6050板的SDA引脚。

此外,我们将使用MPU6050的中断功能来指示当1024字节FIFO缓冲区已满时(或中断)Arduino。因此,将MPU6050的INT引脚连接到Arduino UNO的外部中断0(INT0)引脚,即引脚2.

注意:在I2C中通信时,MPU-6050始终充当从属设备。

阅读来自MPU6050的RAW值

在上传实际程序之前,我们将首先看到一个简单的程序来读取加速度计,陀螺仪和温度传感器的原始值。只需将MPU6050的SCL和SDA线连接到Arduino(A4和A5)的相应I2C引脚,然后上传以下代码即可。

如果打开串行终端,您将获得加速度计和陀螺仪的原始值以及温度传感器校准的温度。数据看起来像这样。

如您所见,阅读原始数据来自MPU6050传感器的数据很简单但是这些数据我们需要对这些数据进行额外的计算才能得到偏航,俯仰和俯仰。

我已经提到了MPU6050传感器,有一个特殊的处理器,称为DMP或数字运动处理器,与加速度计和陀螺仪嵌入在同一芯片上。此DMP的使用是可以使用固件对其进行编程,以便对来自传感器的数据执行复杂的计算。

但是没有关于InvenSense的DMP的明确文档因此我们错过了直接在芯片上快速计算传感器数据的方法。

Jeff Rowberg等人在DMP的逆向工程方面做得非常出色来自I2C信号分析的相关信息。

将代码上传到Arduino并测试MPU6050

在上传代码之前,我们需要为Arduino下载两个库。它们是I2Cdev和MPU6050。下载链接和官方GitHub链接如下所示。

I2Cdev:下载I2CDEV LIBRARY 或访问GitHub LINK

MPU6050:下载MPU6050 LIBRARY 或访问GitHub LINK

下载MPU6050库并通过解压缩下载的文件来提取内容。您将获得一个名为“MPU6050”的文件夹。复制此文件夹并将其粘贴到Arduino的libraries文件夹中。

在我的情况下,它位于“C: Program Files(x86) Arduino libraries”。对I2Cdev库做同样的事情。

如果一切顺利,请打开Arduino IDE并浏览以下路径:文件 - 》示例 - 》 MPU6050 - 》示例 - 》 MPU6050_DMP6并打开示例代码MPU6050_DMP6。

将此代码上传到Arduino(假设您已根据电路图建立了连接)并且代码为上传,打开串口终端。

将串口终端的波特率设置为115200,您将得到以下文字。

“初始化DMP 。..

初始化I2C设备。..。..

测试设备连接。..

MPU6050连接成功

发送任何字符以开始DMP编程和演示:“

如果您没有获得任何数据或仍然获取垃圾数据,只需重置Arduino。如果您查看最后一句,它会说“发送任何字符以开始DMP编程和演示”。因此,在串行监视器中键入任何字符,如1或a,然后发送它。只要您按Enter键,就可以开始在串行监视器上看到Yaw,Pitch and Roll(ypr)值。

注意:在此期间,请将MPU6050放在稳定的水平表面上。此外,等待MPU6050的值稳定10秒钟。

根据接口Arduino和MPU6050的值进行处理中的3D建模

在项目的下一步中,我们将使用Processing IDE查看MPU6050传感器的3D建模,您可以在其中查看传感器数据的3D表示。 Processing是一种为电子艺术和视觉设计开发的编程语言和IDE。实际上,Arduino IDE也基于Processing编程语言。

要下载Processing IDE,请访问 LINK 。使用给定链接下载并安装Processing IDE。

下载处理IDE并安装后(只需从下载的zip文件中解压缩内容),您需要下载一个库for Processing称为“Toxi”。您可以从 LINK 下载Toxi库。

我选择了“toxiclibs-complete-0020”文件。下载此文件后,将内容解压缩到名为“toxiclibs-complete-0020”的文件夹。

复制此文件夹并将其粘贴到Processing的libraries文件夹中。就我而言,它是“C: Users Ravi Documents Processing libraries”。

复制文件夹后,您就可以进行3D建模了。首先,您需要上传先前的Arduino代码(MPU6050_DMP6),只需稍加修改。

在Arduino IDE中打开MPU6050_DMP6(我们之前上传的示例程序)。向下滚动到显示以下内容的行。

#define OUTPUT_READABLE_YAWPITCHROLL

通过在其前面添加双正斜杠来注释此行。

//#define OUTPUT_READABLE_YAWPITCHROLL

此外,找到//#define OUTPUT_TEAPOT 的行,并通过删除双正斜杠取消注释。现在,您可以上传代码。我们在代码中修改的不是将数据发送到串行终端,而是将其转发到处理IDE。

现在,打开Processing IDE并单击File - 》打开。现在,导航到为Arduino安装MPU6050库的文件夹。打开名为“MPUTeapot”的Processing示例。

在我的示例中,此示例的位置为C: Program Files(x86) Arduino libraries MPU6050 Examples MPU6050_DMP6 Processing MPUTeapot。

此程序可自动选择Arduino所连接的PORT编号。与此相关的代码中的行是

字符串portName = Serial.list()[0];

指定Arduino的PORT编号的另一种方法是手动输入COM端口号。为此,请注释以上行并取消注释以下行,并将COM端口号替换为Arduino所连接的相应COM端口号。

//String portName =“COM4”;

在点击Processing中的运行按钮之前,请确保Arduino IDE的串行监视器是关闭。现在,单击处理IDE中的运行按钮。您将获得一个具有类似结构的平面的窗口。在对MPU6050进行3D建模之前等待10秒。

通过屏幕上的3D对象可以看到MPU6050的移动。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186566
  • MPU6050
    +关注

    关注

    39

    文章

    307

    浏览量

    71127
收藏 人收藏

    评论

    相关推荐

    如何通过I2C加速度计MPU6050连接到ESP8266?

    有没有人通过 I2C 加速度计MPU6050连接到ESP8266? 我想读取寄存器who_am_i,但我无法从从机获取 ACK 信号
    发表于 07-22 06:18

    硬件i2c读写MPU6050

    本资料为MPU6050
    发表于 07-15 11:45 2次下载

    M16连接器14芯怎样才算合格的

      德索工程师说道M16连接器14芯作为一种高性能的电气连接器件,其合格性不仅关乎产品的基本性能,还涉及到其在实际应用中的稳定性和可靠性。以下从多个方面详细阐述M16连接器14芯的合格标准:
    的头像 发表于 06-07 17:47 848次阅读
    M16<b class='flag-5'>连接</b>器14芯<b class='flag-5'>怎样</b>才算合格的

    求助求助,MPU6050模块用DMP时的自检问题

    我在mpu6050的DMP自检始终不通过,我通过debug发现里面的两个值st_shift_cust,st_shift_var不对,读出来数值很大。st_shift_var读出来5.几
    发表于 05-18 17:27

    RJ45连接器的优势知多少?解读LP系列RJ45连接器不止快更可靠

    ,还要适应恶劣环境的挑战,以确保其可靠性和耐受性。RJ45连接器有何特点?应用情况怎样?01RJ45连接器有哪些特点?RJ45连接器的特点与优势标准化接口RJ45
    的头像 发表于 05-10 08:13 606次阅读
    RJ45<b class='flag-5'>连接</b>器的优势知多少?解读LP系列RJ45<b class='flag-5'>连接</b>器不止快更可靠

    请问MPU6050可以做振动探测器使用吗?

    MPU6050可以做振动探测器使用吗?
    发表于 05-08 07:54

    mpu6050芯片的INT中断信号引脚和单片机之间需要接电阻吗?

    mpu6050芯片的INT中断信号引脚和单片机之间需要接电阻吗? 我见有的电路图里面没有,有的却说需要,到底是怎样的?
    发表于 05-07 07:21

    MPU6050休眠后如何配置重力加速度唤醒MPU6050

    MPU6050休眠后如何配置重力加速度唤醒MPU6050自己?
    发表于 05-07 06:19

    M8连接器3芯是什么

      M8连接器3芯是一种高性能的电气连接器,其名称中的“M8”指的是连接器的螺纹直径为8毫米,而“3芯”则表示该连接器具有三个接触芯。这些接触芯可以配置为不同的信号和电源组合,以满足特
    的头像 发表于 04-30 17:26 615次阅读
    M8<b class='flag-5'>连接</b>器3芯是什么

    MPU6050 dmp库定时查询读取偶尔获取失败的原因?

    在玩mpu6050 dmp库的时候遇到了一些问题,dmp设置fifo频率20Hz,每50ms程序中读取一次,但是偶尔会有都不到数据的情况,mpu_read_fifo_stream读取失败。主程序
    发表于 04-30 06:37

    MPU6050匀速转动一段时间后,偏航角不变怎么解决?

    使用MPU6050 检测机器人的偏航角度。当机器人原地连续旋转时(朝一个方向),DMP 输出的偏航角开始正常,之后会出现输出的偏航角不变,此时机器人速度只要发生一下变化,DMP输出的偏航角就会开始
    发表于 04-09 08:24

    什么是姿态传感器MPU6050

     MPU6050是6轴运动处理传感器,它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP。使用它就是为了得到待测物体(如四轴飞行器、平衡小车)x、y、z轴的倾角(俯仰角Pitch、翻滚角Roll、偏航角Yaw)。
    发表于 02-15 10:53 3067次阅读
    什么是姿态传感器<b class='flag-5'>MPU6050</b>

    ADXL345和MPU6050的区别

    ADXL345和MPU6050是两种常见的加速度计和陀螺仪传感器,用于测量物体的加速度和旋转速度。它们在设计、性能和应用方面有一些区别。在本文中,我们将对ADXL345和MPU6050的区别进行详细
    的头像 发表于 01-04 11:30 6942次阅读

    mpu6050mpu6500哪个性能好

    地说出一个“更好”的性能。下面详细介绍它们的特点和性能。 首先,我们来看一下MPU6050MPU6050是早期InvenSense公司推出的一款六轴传感器,它包含了三轴陀螺仪和三轴加速度计。陀螺仪用于测量角速度,加速度计用于
    的头像 发表于 12-21 16:54 8092次阅读

    MPU-6000和MPU-6050产品说明书

    mpu6050模块介绍 
    发表于 11-30 09:17 0次下载