0

我正在建造一架无人机并使用 Arduino Uno 来控制它。但是,当我倾斜无人机进行测试时,例如在 X 轴上,程序说它在 X 轴和 Z 轴上都倾斜了。我正在使用 MPU6050 陀螺仪。这是我正在使用的代码:

//Written by Ahmet Burkay KIRNIK
//Measurement of Angle with MPU-6050(GY-521)

#include<Wire.h>

const int MPU_addr=0x68; int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

int minVal=265; int maxVal=402;

double x; double y; double z;

void setup(){ Wire.begin(); Wire.beginTransmission(MPU_addr); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true); Serial.begin(9600); } void loop(){ Wire.beginTransmission(MPU_addr); Wire.write(0x3B); Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); AcX=Wire.read()<<8|Wire.read(); AcY=Wire.read()<<8|Wire.read(); AcZ=Wire.read()<<8|Wire.read(); int xAng = map(AcX,minVal,maxVal,-90,90); int yAng = map(AcY,minVal,maxVal,-90,90); int zAng = map(AcZ,minVal,maxVal,-90,90);

x= RAD_TO_DEG * (atan2(-yAng, -zAng)+PI); y= RAD_TO_DEG * (atan2(-xAng, -zAng)+PI); z= RAD_TO_DEG * (atan2(-yAng, -xAng)+PI);

Serial.print("AngleX= "); Serial.println(x);

Serial.print("AngleY= "); Serial.println(y);

Serial.print("AngleZ= "); Serial.println(z); delay(400); }
4

2 回答 2

0

没有人的运动对一个轴是完美的,你可能在另一个轴上移动。如果是我确保我将芯片/电路板/无人机放在桌子或类似物的边缘并将其倾斜一点,看看我是否只看到一个轴上的运动。你应该只看到可以忽略不计的运动,如果它仍然显示出意外的显着运动,则另一个轴可能是你的芯片坏了我曾经有一个便宜的中国飞行控制器使用 mpu6050 板载发送给我,但对我来说问题是没有运动在一个轴上,但我想这是可能的

于 2018-06-23T12:46:25.850 回答
0

陀螺仪坏了,但是新的陀螺仪仍然关闭但可以使用。无论如何,它是陀螺仪。

于 2018-07-06T14:20:30.587 回答