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

  • 前言
  • MPU6050 模块引脚
  • MPU6050 模块组成
  • MPU6050陀螺仪传感器模块电路图
  • MPU6050模块如何工作?
  • MEMS加速度计如何工作?
  • MEMS陀螺仪如何工作?
  • 常见问题
  • Arduino MPU6050 加速度计和陀螺仪传感器模块接口电路图
  • Arduino MPU6050 模块代码
  • MPU6050 连接Arduino 测试
  • Arduino代码

前言

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

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

MPU6050 模块引脚

MPU6050 模块共有 8 个引脚。其中至少需要 4 个引脚用于连接。MPU6050模块的管脚如下:
VCC==》为模块提供电源,连接到Arduino的5V引脚。

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

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

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

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

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

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

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

MPU6050 模块组成

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

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

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

MPU6050模块如何工作?

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

MEMS加速度计如何工作?

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

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

MEMS陀螺仪如何工作?

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

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

常见问题

问:什么是 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 模块代码

在本例中,我们将从 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 IMUif (!mpu.begin()) {Serial.println("Failed to find MPU6050 chip");while (1) {delay(10);}}Serial.println("MPU6050 Found!");// set accelerometer range to +-8Gmpu.setAccelerometerRange(MPU6050_RANGE_8_G);// set gyro range to +- 500 deg/smpu.setGyroRange(MPU6050_RANGE_500_DEG);// set filter bandwidth to 21 Hzmpu.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代码

#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 +-8Gmpu.setAccelerometerRange(MPU6050_RANGE_8_G);// set gyro range to +- 500 deg/smpu.setGyroRange(MPU6050_RANGE_500_DEG);// set filter bandwidth to 21 Hzmpu.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 连接相关推荐

  1. 【Arduino 和 MPU6050 加速度计和陀螺仪教程】

    [Arduino 和 MPU6050 加速度计和陀螺仪教程] 1. 概述 2. 工作原理 3. Arduino 和 MPU6050 4. MPU6050 Arduino 代码 5. MPU6050 方 ...

  2. arduino声音传感器与二极管_如何将声音传感器与Arduino连接 并实现继电器控制项目...

    简介 我前段时间已经实现了声音相关项目,称为 如何制作简单的CLAP SWITCH .该项目基于着名的555定时器IC. 在这个项目中,我将使用不同的声音传感器(虽然想法是一样的),它对声音如大声,拍 ...

  3. 【心率传感器与Arduino连接读取心率数据】

    心率传感器与Arduino连接读取心率数据 前言 脉冲传感器引脚 脉冲传感器模块如何工作? 脉冲传感器模块组成 关于脉冲传感器模块的常见问题 脉冲传感器模块电路图 Arduino 心率传感器 - 连接 ...

  4. 基于战舰V3的MPU6050六轴陀螺仪实验

    基于战舰V3的MPU6050六轴陀螺仪实验 陀螺仪的分类 3轴传感器指的是3轴的加速度,根据这个加速度我们解算出XY两轴的角度. 6轴传感器指的是3轴的加速度和3轴角速度,根据这两个数据我们解算出XY ...

  5. 【Arduino 连接DHT11 湿度和温度传感器】

    Arduino 连接DHT11 湿度和温度传感器 前言 DHT11 模块引脚 DHT11 模块 DHT11模块电路图 关于 DHT11 传感器的常见问题 DHT11 是如何工作的? DHT11 1-W ...

  6. 惯性导航系统、加速度计、陀螺仪原理

    1. 惯性导航系统 INS( Inertia Navigation System,以下简称惯导) 惯导是一种利用惯性传感器测量载体的比力及角速度信息,并结合给定的初始条件实时推算速度.位置.姿态等参数 ...

  7. 【TCS3200 颜色传感器与 Arduino 实现颜色识别】

    TCS3200 颜色传感器与 Arduino 实现颜色识别 前言 TCS3200 颜色传感器引脚 颜色传感器模块如何工作? TCS3200 颜色传感器模块组成 关于颜色传感器 TCS3200 的常见问 ...

  8. arduino 土壤温湿度传感器_如何将土壤湿度传感器与Arduino接口

    简介 如果您有家庭花园或者是带草皮的后院,那么你可能知道我们需要花多少时间浇灌植物和草皮. 花园洒水器是浇水的常用选择之一.草坪和植物,嗯,唯一的选择,最好的选择是手动浇水. 但是如果你打算制造一个自 ...

  9. 重力加速度陀螺仪传感器MPU-6050

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

  10. I2C通信之Arduino 陀螺仪传感器ITG3205

    topic I2C通信之Arduino与陀螺仪传感器ITG3205 I2C通信之Arduino与陀螺仪传感器ITG3205 转载自:https://www.geek-workshop.com/thre ...

最新文章

  1. Error:Unsupported method: BaseConfig.getApplicationIdSuffix(). The version o
  2. IT人面试必看!25个雷区和11个必问句!
  3. 纹理mag filter不能取GL_XXX_MIPMAP_XXXX
  4. java读取Oracle中大字段数据(CLOB)的方法
  5. c++的虚拟继承 的一些思考吧
  6. QToolButton设置图片填充满_韩国高人气图片素材大合集!每张图,都是桌面壁纸,逼格满满...
  7. Xshell代理访问外网或者公司的内网
  8. cocos2dx 字体外发光_Cocos2d-x 3.x开发塔防游戏《王国保卫战》02:地图(一)
  9. Ubuntu 文件文件夹查看权限和设置权限
  10. Python办公自动化——批量合并word文件
  11. 为什么要从 Microsoft Store 下载 Visual Studio/VS Code?
  12. 拓扑排序算法C++实现
  13. python爬楼梯问题_使用python算法解决楼梯台阶问题方法详解
  14. (3.6A)不用库函数实现字符串拼接
  15. 多线程加速 Excel 画像素画
  16. 【GIS小白学习笔记】Excel加至Arcgis坐标分带选择
  17. Node后台邮件服务器
  18. C语言VRAM字符串平滑移动,航空数字化仪表中动画显示技术的应用
  19. 利用python 绘制有效边界efficient frontier
  20. DOM的绑定事件事件

热门文章

  1. 集成建行聚合支付踩过的坑,有些槽不吐不快
  2. QQ登录界面测试用例--最全的书写以及测试用例设计,你须知道的7个小技巧
  3. 视频和视频帧:视频和帧基础知识整理
  4. ios14描述文件无法与服务器连接,iOS14屏蔽更新描述文件已损坏,无法安装的解决办法...
  5. 专升本英语——应试题型突破——翻译——固定搭配【学习笔记】
  6. 单龙芯3A3000-7A1000PMON研究学习-(17)撸起袖子干-分析代码前的准备工作4-地址映射
  7. SQL Server 大数据管理——数据归档(主文件备份)
  8. FIFO调度算法和LRU算法
  9. python 点对点语音,Python(PyS60)实现简单语音整点报时
  10. ubuntu篇---文件压缩与解压