MPU-6050 изменяет значения осей X и Z при перемещении только одной оси

Я создаю дрон и использую 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); }

person Waddles Pines    schedule 22.06.2018    source источник


Ответы (2)


никакое человеческое движение не идеально только по одной оси, вы, вероятно, двигаетесь по другой оси. если бы я был уверен, я бы поднес чип/плату/дрон к краю стола или чего-то подобного, немного наклонил его и посмотрел, вижу ли я движение только по одной оси. вы должны видеть только незначительное движение и другую ось, если она все еще показывает неожиданное значительное движение, возможно, ваш чип неисправен У меня когда-то был дешевый китайский полетный контроллер, который использовал встроенный mpu6050, отправленный мне сломанным, но для меня проблема была нет движения по одной оси, но я думаю, что это возможно

person m gold    schedule 23.06.2018
comment
Нет, обе оси изменяются примерно одинаково, даже если очевидно, что одна из них наклонена намного больше. Кроме того, я, вероятно, просто куплю новый чип, чтобы проверить его. - person Waddles Pines; 23.06.2018
comment
возможно, попробуйте пример кода отсюда, чтобы убедиться, что это не аппаратная проблема playground.arduino.cc/Main /MPU-6050 - person m gold; 24.06.2018
comment
Нет, этот код делает то же самое. Завтра приедет новый, а там посмотрю. - person Waddles Pines; 24.06.2018
comment
Извините за поздний ответ, новый чип решил эту проблему, но теперь ось z смещена примерно на 90 градусов, но я просто запрограммировал это, и это вроде как работает. У меня осталась проблема, но она не связана с гироскопом. - person Waddles Pines; 06.07.2018
comment
хорошо, аппаратное обеспечение решает, какая ориентация вниз, поэтому обычно вам нужно исправить правильную ориентацию и направление. в любом случае рад слышать! - person m gold; 08.07.2018

Гироскоп был плохой, а новый пока выключен, но работает. В любом случае это был гироскоп.

person Waddles Pines    schedule 06.07.2018