首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当只移动一个轴时,MPU-6050改变X和Z轴的值

当只移动一个轴时,MPU-6050改变X和Z轴的值
EN

Stack Overflow用户
提问于 2018-06-22 12:27:32
回答 2查看 1.1K关注 0票数 0

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

代码语言:javascript
复制
//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); }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-06 14:20:30

陀螺仪是坏的,但新的仍然关闭,但工作。总之,是陀螺仪。

票数 0
EN

Stack Overflow用户

发布于 2018-06-23 12:46:25

没有人的运动是完美的,只有一个轴,你可能在另一个轴上运动。如果是我的话,我一定要把芯片/棋盘/无人机放在桌子的边缘或类似的地方,把它倾斜一点,看看我是否只看到一个轴上的运动。你应该只看到可以忽略不计的运动和另一个轴,如果它仍然显示出意外的显著运动,可能你的芯片坏了,我曾经有一个廉价的中国飞行控制器,它使用mpu6050机上发送给我,但是对我来说,问题是在一个轴上没有运动,但我想这是可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50987936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档