MPU6050的I2C接口测试

  • 内容
  • ....
  • 相关

MPU6050三轴陀螺仪和三轴加速度仪是各种实验中用于定位的主要模块,通过陀螺仪和加速度仪可以很好地获取物体运动及位置的相关数据,配合磁力计和气压计、GPS等模块可以组成更加精确定位的部件。

MPU6050传感器简介

  • 三轴加速度计
  • 三轴陀螺仪
  • 数字输出温度传感器
  • 6个16位ADC(3个用于加速计,3个用于陀螺仪)
  • 集成数字运动处理器(DMP)
  • 1024B FIFO Buffer

购买地址:MPU6050

六轴MPU-6050是一种6自由度设备,因为它提供了6个输出值(3个来自加速度计,3个来自陀螺仪)。MPU-6050使用I2C接口协议与Arduino或者树莓派等开发板进行通信。数字运动处理器或DMP是一种嵌入式处理器,它就像Arduino一样可以获取并处理来自加速计、陀螺仪和外部磁力仪的数据,减少主机处理器的计算负载。MPU6050只支持I2C接口通信,因此它必须与Arduino或树莓派的I2C接口连接。Arduino的I2C接口被多路复用,其中的模拟输入接口 A4 和 A5 可连接 MPU6050 的 SDA 和 SCL 接口。

MPU6050测试

测试设备:Arduino Nano  、 MPU6050

测试软件:Arduino IDE

上图是Arduino Nano连接 MPU6050 的电路连接图。正如之前提到的,MPU6050和Arduino之间的连接必须使用I2C接口协议实现。因此,Arduino Nano(A5)连接 MPU6050(SCL ),类似地Arduino Nano(A4)与MPU6050板(SDA Pin)连接。除此之外,当1024字节的FIFO缓冲区满时,我们将使用MPU6050的中断特性来中断Arduino。因此,需要将MPU6050的INT Pin连接到Arduino Nano的中断INT0 Pin,即数字接口 Pin 2。(注意:在I2C接口通信协议中,MPU-6050总是充当 Slave 设备。)

MPU6050测试代码

#include<Wire.h>
const int MPU6050_addr=0x68;
int16_t AccX,AccY,AccZ,Temp,GyroX,GyroY,GyroZ;
void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU6050_addr);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop(){
  Wire.beginTransmission(MPU6050_addr);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU6050_addr,14,true);
  AccX=Wire.read()<<8|Wire.read();
  AccY=Wire.read()<<8|Wire.read();
  AccZ=Wire.read()<<8|Wire.read();
  Temp=Wire.read()<<8|Wire.read();
  GyroX=Wire.read()<<8|Wire.read();
  GyroY=Wire.read()<<8|Wire.read();
  GyroZ=Wire.read()<<8|Wire.read();
  Serial.print("AccX = "); Serial.print(AccX);
  Serial.print(" || AccY = "); Serial.print(AccY);
  Serial.print(" || AccZ = "); Serial.print(AccZ);
  Serial.print(" || Temp = "); Serial.print(Temp/340.00+36.53);
  Serial.print(" || GyroX = "); Serial.print(GyroX);
  Serial.print(" || GyroY = "); Serial.print(GyroY);
  Serial.print(" || GyroZ = "); Serial.println(GyroZ);
  delay(100);
}

在上传代码之前,我们需要加载两个Arduino的库。它们是I2Cdev和MPU6050。下面给出了下载链接和官方的GitHub链接。

I2Cdev:  GitHub LINK

MPU6050: GitHub LINK

上传代码后打开串口监视器,你可以从加速度计和陀螺仪中获得数据,并从温度传感器中获取温度,看起来是这样的。