问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MPU6050六轴传感器模块实践教程:轻松实现运动检测

创作时间:
作者:
@小白创作中心

MPU6050六轴传感器模块实践教程:轻松实现运动检测

引用
1
来源
1.
https://m.elecfans.com/article/6459619.html

MPU6050是一款集成了三轴加速度计和三轴陀螺仪的传感器,能够测量设备的倾斜情况和旋转运动。本文将指导您如何使用开发板与MPU6050六轴传感器模块进行交互,读取并处理这些数据,为您的项目添加运动检测和姿态控制功能。

硬件连接

在开始编程之前,首先需要正确连接MPU6050模块到开发板。

所需材料:

  • 开发板(如Arduino)
  • MPU6050六轴传感器模块
  • 跳线若干

硬件连接示意图:

MPU6050模块的SCL和SDA分别连接到开发板的I2C接口(通常为A4/SCL和A5/SDA)。

开发板
MPU6050
3.3V
VCC
GND
GND
A4/SCL
SCL
A5/SDA
SDA

完成以上步骤后,硬件连接就完成了。

代码实现

接下来,我们将编写代码来读取MPU6050的数据。

准备工作:

  1. 打开Arduino IDE
  2. 选择对应的开发板型号
  3. 选择电脑连接的串口

完整源代码:

/* I2C interface MPU6050 demo */
#include "MPU6050.h"
// 默认I2C地址为 0x68
// AD0 low = 0x68
// AD0 high = 0x69
MPU6050 accelgyro;
int16_t ax, ay, az;//三轴加速度值
int16_t gx, gy, gz;//三轴陀螺仪值
float nax,nay,naz;
float ngx,ngy,ngz;//转换后的实际值
#define LED_PIN LED_BUILTIN
bool blinkState = false;
void setup() {
 Serial.begin(9600);
 // MPU6050初始化设置
 Serial.println("Initializing I2C devices...");
 accelgyro.initialize();
 // verify connection
 Serial.println("Testing device connections...");
 if(accelgyro.testConnection()){
 Serial.println("MPU6050 connection successful");
 }else{
 Serial.println("MPU6050 connection failed");
 }
 //使用LED进行指示
 pinMode(LED_PIN, OUTPUT);
// accelgyro.setFullScaleAccelRange(MPU6050_ACCEL_FS_16);//加速度参数
// accelgyro.setFullScaleGyroRange(MPU6050_GYRO_FS_500);//陀螺仪
}
void loop() {
 // 获取原始的数值:三轴加速度值和三轴陀螺仪数值
 accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
 // 分别获取
 //accelgyro.getAcceleration(&ax, &ay, &az);
 //accelgyro.getRotation(&gx, &gy, &gz);
 // 显示打印
 Serial.print(" acc:t");
 Serial.print(ax); Serial.print("t");
 Serial.print(ay); Serial.print("t");
 Serial.print(az); Serial.print("t");
 Serial.print("t gyro:t");
 Serial.print(gx); Serial.print("t");
 Serial.print(gy); Serial.print("t");
 Serial.println(gz);
 //实际数值转换
 accelgyro.readNormalizeAccel(&nax,&nay,&naz);
 accelgyro.readNormalizeGyro(&ngx,&ngy,&ngz);
 Serial.print("Normalize acc:t");
 Serial.print(nax); Serial.print("t");
 Serial.print(nay); Serial.print("t");
 Serial.print(naz); Serial.print("t");
 Serial.print("t Normalize gyro:t");
 Serial.print(ngx); Serial.print("t");
 Serial.print(ngy); Serial.print("t");
 Serial.println(ngz);
 // blink LED to indicate activity
 blinkState = !blinkState;
 digitalWrite(LED_PIN, blinkState);
 delay(300);
}

实验结果

将代码上传到开发板,打开串口监视器,设置波特率为9600。观察测量到的加速计和陀螺仪输出数据。

结果分析:

上传代码并打开串口监视器后,将看到加速度计和陀螺仪的原始数据以及归一化后的数据。

  • 原始数据:原始数据显示了MPU6050直接读取的数值,这些数值是传感器内部ADC转换后的数字量。
  • 归一化数据:归一化数据是将原始数据转换为实际的物理量(加速度单位为g,陀螺仪单位为度/秒)。这些数据更直观,便于进行后续的处理和分析。

通过本教程,您已经学会了如何使用开发板和MPU6050模块来读取运动数据。这些数据可以用于各种应用,如姿态控制、平衡机器人、运动跟踪等。您可以根据项目需求进一步处理和分析这些数据。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号