В одном коде без USB, MPU-6050 похоже не измеряет или не дает сигнал на ардуино

baryshnikov
Offline
Зарегистрирован: 09.08.2014

Нашел код по измерению углов поворота с помощью MPU-6050 (у меня GY-521) тангаж, крен, рыскание.

/*
    MPU6050 Triple Axis Gyroscope & Accelerometer. Pitch & Roll & Yaw Gyroscope Example.
    Read more: http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-zyroskop-i-a...
    GIT: https://github.com/jarzebski/Arduino-MPU6050
    Web: http://www.jarzebski.pl
    (c) 2014 by Korneliusz Jarzebski
*/

#include <Wire.h>
#include <MPU6050.h>

MPU6050 mpu;

// Timers
unsigned long timer = 0;
float timeStep = 0.01;

// Pitch, Roll and Yaw values
float pitch = 0;
float roll = 0;
float yaw = 0;

void setup() 
{
  Serial.begin(115200);

  // Initialize MPU6050
  while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
  {
    Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
    delay(500);
  }
  
  // Calibrate gyroscope. The calibration must be at rest.
  // If you don't want calibrate, comment this line.
  mpu.calibrateGyro();

  // Set threshold sensivty. Default 3.
  // If you don't want use threshold, comment this line or set 0.
  mpu.setThreshold(3);
}

void loop()
{
  timer = millis();

  // Read normalized values
  Vector norm = mpu.readNormalizeGyro();

  // Calculate Pitch, Roll and Yaw
  pitch = pitch + norm.YAxis * timeStep;
  roll = roll + norm.XAxis * timeStep;
  yaw = yaw + norm.ZAxis * timeStep;

  // Output raw
  Serial.print(" Pitch = ");
  Serial.print(pitch);
  Serial.print(" Roll = ");
  Serial.print(roll);  
  Serial.print(" Yaw = ");
  Serial.println(yaw);

  // Wait to full timeStep period
  delay((timeStep*1000) - (millis() - timer));
}
Contact GitHub API Training Shop Blog About
© 2016 GitHub, Inc. Terms Pri

Но в нем похоже какая-то странность, при работе от USB, он нормально работает, как я проверял, если, например, рыскание изменяется на 5 градусов, покрутить моторчик в одну сторону, если на -5 то покрутить в другую.
А при работе от аккумулятора (разные включал) и 9 В и 12В (у меня Ардуино UNO) код не работает.

Проверял другой код по измерению тангажа и крена, от аккумуляторов они нормально работают.

Не объясните в чем причина? Можно как-то исправить.
Или поделителись, кому не жалко и под рукой кодом по измерению рыскания. (DMP базовый пример не подойдет). 

Sh0a1m0a0n1
Offline
Зарегистрирован: 16.09.2016

А почему не попробовал запитать от 5В?

baryshnikov
Offline
Зарегистрирован: 09.08.2014

Sh0a1m0a0n1 пишет:

А почему не попробовал запитать от 5В?

От 5 тоже пробовал.