Проблема с гироскопом MPU-6050

Нет ответов
noName
Offline
Зарегистрирован: 10.03.2016
Доброго времени суток.
Проблема в следующем
При работе двигателей MPU6050 начинает подвисать и снимать неправильные показания.
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"

MPU6050 accelgyro;
int16_t ax, ay, az;
int16_t gx, gy, gz;

double comp = 0;

class Robo
{
int D1 = 2;          // Направление вращение двигателя 1
int M1 = 3;          // ШИМ вывод для управления двигателем 1
int D2 = 5;          // Направление вращение двигателя 2
int M2 = 4;          // ШИМ вывод для управления двигателем 2

int D3 = 8;          // Направление вращение двигателя 3
int M3 = 9;          // ШИМ вывод для управления двигателем 3
int D4 = 11;          // Направление вращение двигателя 4
int M4 = 10;          // ШИМ вывод для управления двигателем 4

double globalAngle = 0;

 void turnRight(int angle)
 {

    digitalWrite(D1, 0);  
    digitalWrite(D2, 0);
    analogWrite(M1, 255);       
    analogWrite(M2, 255);
    
    digitalWrite(D3, 1);  
    digitalWrite(D4, 1);
    analogWrite(M3, 0);
    analogWrite(M4, 0);
     
    int currentAngle = globalAngle;
     
    while(globalAngle < currentAngle + angle)
    {
      SerialUSB.println(globalAngle);
      accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
      globalAngle = globalAngle + gz/44000.0 - comp;
      delay(1);
    }
     
     stop();
 }
При этом если заккоментировать вот эту чать кода в методе turnRight:  
 
digitalWrite(D1, 0);  
digitalWrite(D2, 0);
analogWrite(M1, 255);       
analogWrite(M2, 255);
    
digitalWrite(D3, 1);  
digitalWrite(D4, 1);
analogWrite(M3, 0);
analogWrite(M4, 0);
 
то MPU6050 работает как нужно и даже правильно отображает угол повотота.     
В общем если работают двигатели то неправильно работает MPU6050, если двигатели не работают то MPU6050 работает нормально.
 
MPU6050 подключаю к Arduino Due следующим образом:
 
MPU6050     Arduino Due
Vcc              3.3V
GND            GND
SCL             SCL21
SDA            SDA20
 
4 мотора FIT0016 через два драйвера моторов L298N подключаю 
Питание на моторы подаю с PowerBank-а 10400 mAh, то есть на все 4 мотора питание подаётся с одного PowerBank-a через переделанный USB кабель.
 
Я предполагаю что проблема в неправильном подключении питания, или его нехватке, если это так то подскажите как лучше всё это запитывать, потому что я в этом пока что не особо разбераюсь. к Arduino ещё должны подключатся разные датчики, сервопривод и.т.д.
 
Заранее спасибо.