StduinoUno /纳米37种传感器(二十九)六轴 MPU陀螺仪模块 关键词: 51 ; stm32 ; arduino ; stduino单片机; stduino UNO&Nano ;MPU6050陀螺仪 说明:MPU6050 陀螺仪传感器具有很多强大的功能,采用单芯片封装。该芯片由一个MEMS 加速度计,一个MEMS 陀螺仪和温度传感器组成。该模块在将模拟量转换为数字量时非常准确,因为每个通道都有一个16 位的模数转换器硬件。 该模块能够同时捕获 x ,y 和z 通道。它有一个I2C 接口与主控制器进行通信。对于无人机,机器人,运动传感器等许多应用来说,这是一个非常有用的设备。它也被称为陀螺仪或六轴加速度计。 就像上面的图片一样,在一个立方体的盒子里面有一个小球,盒子的四壁是用石英晶体材料。当盒子加速度发声变化时,由于惯性的作用,球就会向与加速度方向相反的地方倾斜,当小球碰到那里就会产生压电电流,通过此电流可以确定该方向上加速度大小(实际测得的是压力的大小))。 实际上,当模块静止时, Z 轴方向上一直受到小球的挤压(由于重力作用),也应此,该模块无法获得物体在Z 轴上的旋转角。如果必须要获得绝对的旋转角,那么可以选择性MPU9250这个九轴运动跟踪芯片。 实验目的:在本例中,我们将学习如何将传感器与 Stduino UNO一起使用,利用陀螺仪模块监测物体移动方向。 器材:Stduino UNO / Nano; 杜邦线; MPU6050 模块 电路连接: MPU6050-> Stduino UNO /纳米
VCC-> 5V GND->GND SCL-> D9 SDA-> D10 XCL XDA AD0->接地 INT-> D2 重点说明:
代码:- #include <Arduino.h>
- #include<Wire.h>
- const int MPU6050_addr=0x68;
- int16_t AccX,AccY,AccZ,Temp,GyroX,GyroY,GyroZ;
- void setup(){
- //D9 SCL
- //D10 SDA
- //5V
- //GND
- 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();//X轴方向的加速度分量
- AccY=Wire.read()<<8|Wire.read();//Y轴方向的加速度分量
- AccZ=Wire.read()<<8|Wire.read();//Z轴方向的加速度分量
- Temp=Wire.read()<<8|Wire.read();
- GyroX=Wire.read()<<8|Wire.read();//绕X轴旋转的角速度GYR_X
- GyroY=Wire.read()<<8|Wire.read();//绕Y轴旋转的角速度GYR_Y
- GyroZ=Wire.read()<<8|Wire.read();//绕Z轴旋转的角速度GYR_Z
- 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);
- }
复制代码
|