|
MPU6050陀螺仪传感器具有许多强大的功能,采用单芯片封装。它是由一个MEMS加速度计、一个MEMS陀螺仪和温度传感器组成。该模块在将模拟量转换为数字量时非常准确,因为每个通道都有一个16位的模数转换器硬件。该模块能够同时捕获x、y和z通道。它有一个I2C接口与主控制器进行通信。这款MPU6050模块是一款兼备加速度计和陀螺仪的小型芯片。对于无人机、机器人、运动传感器等许多应用来说,这是一个非常有用的设备。它也被称为陀螺仪或三轴加速度计。
今天在这篇文章中,我们将介绍如何使用Arduino开发板连接这款MPU6050陀螺仪,并且在16x2 LCD显示屏上显示这些数值。
所需的组件 1. Arduino Uno开发板 2. MPU6050陀螺仪传感器 3. 10K的电位器
4. 跳线 5. 面包板 6. USB电缆 7. 电源
MPU6050陀螺仪传感器简介 MPU-6050是一款单芯片、8个引脚的6轴陀螺仪和加速计。该模块默认工作在I2C串行通信模式下,但可通过配置寄存器将其配置为SPI接口。对于I2C,它具有SDA和SCL线。几乎所有的引脚都是多种功能的,但在这里我们只介绍I2C模式相关引脚。
引脚配置 Vcc: - 此引脚用于向MPU6050模块供电,相对于地 GND: - 这是接地引脚 SDA:-SDA引脚,用于控制器和mpu6050模块之间的数据传输 SCL: - SCL引脚,用于时钟输入 XDA: - 这是传感器I2C SDA数据线,用于配置和读取外部传感器((可选),本例中不使用) XCL: - 这是传感器I2C SCL时钟线,用于配置和读取外部传感器((可选),本例中不使用) ADO: - I2C从地址LSB(本例中不适用) INT: - 用于指示数据准备就绪的中断引脚。
项目描述 在这篇文章中,我们使用Arduino和MPU6050在LCD上显示温度、陀螺仪和加速度计的读数。该模块为我们提供了行值和标准值,但行值并不稳定,所以我们在LCD上显示了标准值。如果你只是想显示加速计值,你也可以使用加速度计ADXL335和Arduino。
在这个项目中,我们首先在LCD上显示温度值,10秒钟后显示陀螺仪值,10秒钟后显示加速度计读数,如下图所示:
电路图和说明 MPU6050与Arduino开发板连接的电路图非常简单,我们在这里使用了LCD和MPU6050。这里,我们使用了笔记本电脑的USB电源。使用了一个10k的电位器用于控制LCD的亮度。在与MPU6050的连接中,我们使用5连接,其中已经将MPU6050的3.3v电源和地连接到了Arduino的3.3v和地。 MPU6050的SCL和SDA引脚连接到Arduino的A4和A5引脚。并且,MPU6050的INT引脚连接到Arduino的中断0(D2)。 LCD的RS、RW和EN直接连接到Arduino的8、gnd和9。数据引脚直接连接到数字引脚编号10、11、12和13。
编程说明 编程部分对于这个项目也很容易。这里,我们使用MPU6050库来实现与Arduino进行连接。首先,我们需要从GitHub下载MPU6050库并将其安装在Arduino IDE中。
之后,我们可以在示例中找到示例代码。用户可以直接将它们上传到Arduino来测试该代码,并可以通过串行监视器查看值。或者用户可以使用我们在文章最后给出的代码来显示LCD和串行监视器的值。 在代码方面,我们已经包含了一些必需的库,如MPU6050和LCD。 - #include<LiquidCrystal.h>
- LiquidCrystal lcd(8,9,10,11,12,13);
- #include <Wire.h>
- #include <MPU6050.h>
复制代码
在setup函数中,我们初始化两个设备并通过LCD写入欢迎消息: - void setup()
- {
- lcd.begin(16,2);
- lcd.createChar(0, degree);
- Serial.begin(9600);
- Serial.println("Initialize MPU6050");
- while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
- {
- lcd.clear();
- lcd.print("Device not Found");
- Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
- delay(500);
- }
- count=0;
- mpu.calibrateGyro();
- mpu.setThreshold(3);
复制代码
在loop函数中,我们每隔10秒调用三个函数来显示LCD上的温度,陀螺仪和加速计读数。 这三个函数是tempShow,gyroShow和accelShow,你可以在本文最后给出的完整的Arduino代码中检查这些函数: - void loop()
- {
- lcd.clear();
- lcd.print("Temperature");
- long st=millis();
- Serial.println("Temperature");
- while(millis()<st+period)
- {
- lcd.setCursor(0,1);
- tempShow();
- }
- lcd.clear();
- lcd.print("Gyro");
- delay(2000);
- st=millis();
- Serial.println("Gyro");
- while(millis()<st+period)
- {
- lcd.setCursor(0,1);
- gyroShow();
- }
- lcd.clear();
- lcd.print("Accelerometer");
- delay(2000);
- st=millis();
复制代码
MPU6050陀螺仪和加速计都可用于检测任何设备的位置和方向。 陀螺仪使用地球重力来确定x、y和z轴位置,而加速度检测是根据运动变化的速率。
整个项目的完整代码:
MPU6050.rar
(932 Bytes, 下载次数: 381)
,如果你在使用MPU6050过程中遇到任何问题,可以在本帖内进行回复。 |