MPU6050 加速度计和陀螺仪传感器与 Arduino 连接

这篇具有很好参考价值的文章主要介绍了MPU6050 加速度计和陀螺仪传感器与 Arduino 连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

MPU6050是一款非常流行的加速度计陀螺仪芯片,具有六轴感应和 16 位测量分辨率。这种意义上的高精度和低廉的成本使其在 DIY 社区中非常受欢迎。甚至许多商业产品都配备了 MPU6050。陀螺仪和加速度计的组合通常被称为惯性测量单元或 IMU。

IMU 传感器用于各种应用,例如手机、平板电脑、卫星、航天器、无人机、无人机、机器人等。它们用于运动跟踪、方向和位置检测、飞行控制等。

MPU6050 模块引脚

MPU6050 模块共有 8 个引脚。其中至少需要 4 个引脚用于连接。MPU6050模块的管脚如下:
arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件VCC==》为模块提供电源,连接到Arduino的5V引脚。

GND==》连接到 Arduino 的接地引脚。

SCL==》串行时钟 用于为 I2C 通信提供时钟脉冲。

SDA==》串行数据 用于通过 I2C 通信传输数据。

XDA==》辅助串行数据 - 可用于将其他 I2C 模块与 MPU6050 连接。

XCL==》辅助串行时钟 - 可用于将其他 I2C 模块与 MPU6050 连接。

ADD==》如果使用多个 MPU6050 模块,地址选择引脚。

INT==》中断引脚指示数据可供 MCU 读取。

MPU6050 模块组成

arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件MPU6050 模块由 TDK InvenSense 的 MPU6050 IMU 芯片组成。它采用 24 引脚 QFN 封装,尺寸为 4mm x 4mm x 0.9mm。该模块的组件数量非常少,包括一个 AP2112K 3.3V 稳压器、I2C 上拉电阻和旁路电容。还有一个电源指示灯,指示模块的电源状态。

MPU6050陀螺仪传感器模块电路图

MPU6050模块原理图如下。如前所述,该板的组件数量非常少。功率部分围绕AP2112K-3.3稳压器设计。钽电容器和多层电容器提供了足够的滤波。带有限流电阻的 LED 用作电源指示灯。
arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件MPU6050 电路非常简单。它由 MPU6050 芯片本身以及旁路电容和上拉电阻组成。

MPU6050模块如何工作?

MPU6050 是一种微机电系统 (MEMS),内部包含一个 3 轴加速度计和 3 轴陀螺仪。这有助于我们测量系统或物体的加速度、速度、方向、位移和许多其他与运动相关的参数。该模块内部还有一个 (DMP) 数字运动处理器,该处理器功能强大,可以执行复杂的计算,从而腾出微控制器的工作量。
arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件该模块还有两个辅助引脚,可用于连接外部 IIC 模块,如磁力计,但它是可选的。由于模块的 IIC 地址是可配置的,因此可以使用 AD0 引脚将多个 MPU6050 传感器连接到微控制器。该模块还提供了有据可查和修订的库,因此它很容易与 Arduino 等著名平台一起使用。因此,如果您正在寻找一种传感器来控制您的遥控车、无人机、自平衡机器人、人形机器人、Biped 或类似设备的运动,那么该传感器可能是您的正确选择。

MEMS加速度计如何工作?

MEMS 加速度计用于需要测量线性运动(运动、冲击或振动)但没有固定基准的地方。它们测量它们所附着的任何物体的线性加速度。所有加速度计的工作原理都是弹簧上的质量,当它们附着的物体加速时,质量由于其惯性而想要保持静止,因此弹簧被拉伸或压缩,产生一个被检测到并对应的力施加的加速度。
arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件

在 MEMS 加速度计中,两个正交轴上的精确线性加速度检测是通过一对由弹簧“防护”质量形成的硅 MEMS 检测器实现的。每个质量块提供由交错的指状结构阵列形成的可变电容的移动板。当传感器沿其敏感轴受到线性加速度时,检测质量由于其惯性而趋于抵抗运动,因此质量及其指相对于固定电极指发生位移。手指之间的气体提供阻尼效果。这种位移会在移动和固定硅指之间产生一个差分电容,该电容与施加的加速度成正比。使用高分辨率 ADC 测量电容变化,然后根据电容变化率计算加速度。然后在 MPU6050 中将其转换为可读值,然后传输到 I2C 主设备。

MEMS陀螺仪如何工作?

MEMS 陀螺仪的工作基于科里奥利效应。科里奥利效应指出,当质量块以一定速度沿特定方向移动并对其施加外部角运动时,会产生力并导致质量块发生垂直位移。产生的力称为科里奥利力,这种现象称为科里奥利效应。位移速率将与所施加的角运动直接相关。

MEMS 陀螺仪包含一组四个质量块,并保持连续振荡运动。当施加角运动时,科里奥利效应会导致质量之间的电容发生变化,具体取决于角运动的轴。感测电容的这种变化,然后将其转换为读数。这是一个小动画,显示了这些质量块在应用不同轴的角运动时的运动。

arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件

常见问题

问:什么是 MPU6050?

MPU6050 是一个惯性测量单元或 IMU,具有三轴加速度计、三轴陀螺仪、数字运动处理器 (DMP) 和 16 位 ARC。

Q. MPU6050 采用什么技术?

MPU6050 是围绕微机电技术构建的,也称为 MEM。

Q. MPU6050可以倾斜测量角度吗?

是的,我们可以用 MPU6050 测量倾斜角度。

Arduino MPU6050 加速度计和陀螺仪传感器模块接口电路图

下图显示了 MPU6050 与 Arduino 接口的电路图。MPU6050 使用 I2C 模块进行通信。由于 I2C 引脚可承受 5V 电压,因此我们可以将它们与 Arduino 一起使用,而无需任何电平转换器。SCL 引脚连接到 Arduino 的 SCL 引脚 (A5)。同样,SDA 引脚连接到 Arduino 的 SDA 引脚(A4)。
arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件

Arduino MPU6050 模块代码

在本例中,我们将从 MPU6050 模块读取加速度计、陀螺仪和温度数据,并将其打印到串行监视器上。首先,我们需要安装必要的库。要安装库,请在 Arduino IDE 中打开库管理器。然后搜索并安装以下库:Adafruit MPU6050 库、Adafruit Unified Sensor Library和Adafruit Bus IO Library。完成后,创建一个新草图并将代码粘贴到其中。然后编译并上传到Arduino。上传后,打开串行监视器,读数将显示在那里。

在开始时,我们已经包含了 Adafruit MPU6050 库、Adafruit Sensor 库和 wire 库,它们是与 MPU6050 通信和获取读数所必需的。然后我们创建了一个名为 mpu 的新实例,它将用于从 MPU6050 IMU 获取读数。

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;

在setup函数中,我们已经初始化了串口通信和 MPU6050 IMU。然后设置加速度计范围、陀螺仪范围和滤波器带宽参数。量程参数会影响读数的准确性。因此,如果需要,可以根据库值更改这些值。setFilterBandwidth 参数将改变低通滤波器的带宽。

void setup(void) {
  Serial.begin(115200);
  // Initializethe MPU6050 IMU
  if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050 Found!");
  // set accelerometer range to +-8G
  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
  // set gyro range to +- 500 deg/s
  mpu.setGyroRange(MPU6050_RANGE_500_DEG);
  // set filter bandwidth to 21 Hz
  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
  delay(100);
}

在循环函数中,在 Adafruit 库的帮助下从 MPU6050 读取值,然后打印到串行监视器。这将每秒重复一次。

void loop() {
  /* Get new sensor events with the readings */
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);
  /* Print out the readings */
  Serial.print("Acceleration X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");
  Serial.print("Rotation X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");
  Serial.print("Temperature: ");
  Serial.print(temp.temperature);
  Serial.println(" degC");
  Serial.println("");
  delay(1000);
}

MPU6050 连接Arduino 测试

下面的 GIF 显示了我们如何将 MPU6050 与 Arduino 连接。您可以看到,当模块旋转时,值的变化取决于旋转轴。
arduino mpu6050,Arduino入门专辑,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-787403.html

Arduino代码

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
void setup(void) {
  Serial.begin(115200);
  // Try to initialize!
  if (!mpu.begin()) {
    Serial.println("Failed to find MPU6050 chip");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050 Found!");
  // set accelerometer range to +-8G
  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
  // set gyro range to +- 500 deg/s
  mpu.setGyroRange(MPU6050_RANGE_500_DEG);
  // set filter bandwidth to 21 Hz
  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
  delay(100);
}
void loop() {
  /* Get new sensor events with the readings */
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);
  /* Print out the readings */
  Serial.print("Acceleration X: ");
  Serial.print(a.acceleration.x);
  Serial.print(", Y: ");
  Serial.print(a.acceleration.y);
  Serial.print(", Z: ");
  Serial.print(a.acceleration.z);
  Serial.println(" m/s^2");
  Serial.print("Rotation X: ");
  Serial.print(g.gyro.x);
  Serial.print(", Y: ");
  Serial.print(g.gyro.y);
  Serial.print(", Z: ");
  Serial.print(g.gyro.z);
  Serial.println(" rad/s");
  Serial.print("Temperature: ");
  Serial.print(temp.temperature);
  Serial.println(" degC");
  Serial.println("");
  delay(1000);
}

到了这里,关于MPU6050 加速度计和陀螺仪传感器与 Arduino 连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【stm32】stm32学习笔记(江科大)-详解stm32获取Mpu6050陀螺仪和加速度

    目录 I2C 起始条件: 终止条件:  发送一个字节 接收一个字节  接收发送应答  代码 I2C I2C.C I2C.h Mpu6050 Mpu6050.c Mpu6050.h Mpu6050Reg.h main.c 结果   要想获取Mpu6050陀螺仪和加速度那就需要了解一下Mpu6050。Mpu6050使用的是I2C通讯 先了解一下 起始条件: SCL高电平期间,SDA从高电平切换

    2024年02月16日
    浏览(63)
  • 陀螺仪MPU6050(IIC&源码)

    1. 陀螺仪 1.1   什么是陀螺仪? 检测角度变化的一个装置。 1.1.1  有什么用?? 用于检测角度变化,用角度变化的值判断物体的运动轨迹。 1.1.2  我们怎么用? 我们是使用这个装置(或者说设备)获取到数据,再使用这个数据得到我们想要的信息。 这里我使用陀螺仪获取板

    2024年02月13日
    浏览(38)
  • MPU6050六轴陀螺仪外围电路分析

    MPU6050六轴陀螺仪常用的外围电路设计分析 AUX_DA引脚:用于传输辅助数据。通过该引脚,MPU6050可以与外部设备或其他传感器进行数据交换。可以将其他传感器(如磁力计)连接到AUX_DA引脚,以获取额外的数据或实现其他特殊功能。 AUX_CL引脚:用于提供辅助时钟信号。MPU6050可

    2024年01月25日
    浏览(39)
  • 陀螺仪mpu6050的使用(附带HAL的使用)

    我们日常见的陀螺仪模块的使用就是在平衡小车和控制小车的移动上,那么陀螺仪是怎么使用的呢,首先就是能很好的使用I2C,而看到这里,说的一切都是虚的,首先陀螺仪的配置和数据手册大家也是没少看的,但是还是跟我再了解一遍. MPU6050内部整合了三轴MEMS陀螺仪、三轴

    2024年02月13日
    浏览(52)
  • 【STM32】I2C练习,HAL库读取MPU6050角度陀螺仪

    MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。当连接到三轴磁强计时,MPU-60X0提供完整的9轴运动融合输出到其主I2C或SPI端口(SPI仅在MPU-6000上可用)。 寄存器地址 寄存器内容 0X3B

    2024年02月16日
    浏览(50)
  • 物联网AI MicroPython传感器学习 之 mpu6050六轴陀螺仪传感器

    学物联网,来万物简单IoT物联网!! MPU6050是一款6轴运动传感器,它集成了3 轴MEMS 陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C 或SPI 接口输出一个

    2024年04月17日
    浏览(54)
  • mpu6050六轴陀螺仪dmp姿态解算-C语言移植(stm32+hal)

    官方库源文件: 1 移植官方6个库文件 2 修改inv_mpu.h中结构体 3 修改inv_mpu.c 4 修改 inv_mpu_motion_driver.c 5 keil中增加宏定义 6 移植核心[修改inv_mpu.c|inv_mpu_motion_driver.c]

    2024年02月14日
    浏览(43)
  • 平衡小车——陀螺仪

    可以通过MPU6050获取加速度信息 可以通过DMP库获取角度信息 MPU6050 MPU6050是一种常用的集成电路(IC),结合了3轴陀螺仪和3轴加速度计。它用于各种需要运动跟踪和感应的电子项目和设备。MPU6050由英飞凌科技公司(InvenSense)制造,现在已被TDK收购。它的一些主要特点包括:

    2024年02月02日
    浏览(37)
  • Android使用陀螺仪

    在Android应用中使用陀螺仪可以帮助实现各种功能,比如游戏控制、虚拟现实体验、运动追踪等。以下是使用Android陀螺仪的基本步骤: 获取传感器服务 : 首先,需要获取设备上的陀螺仪传感器服务。可以通过 SensorManager 类来获取。 注册监听器 : 使用 SensorManager 注册一个陀

    2024年04月26日
    浏览(30)
  • 6轴陀螺仪姿态解算

    之前看过学长姿态解算相关代码,因为要做平衡车的项目,希望陀螺仪处理数据能够达到很好的效果,大概2个星期前,看的学长代码,当时把大部分代码看懂是用来干什么的,但原理还是一窍不通,没办法,太高深了hhhhh。用学长的代码很顺利就完成了基本工作,但当时调

    2023年04月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包