Официальный сайт компании Arduino по адресу arduino.cc
Проблема с гироскопом MPU-6050
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Сб, 25/06/2016 - 13:44
Доброго времени суток.
Проблема в следующем
При работе двигателей 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 ещё должны подключатся разные датчики, сервопривод и.т.д.
Заранее спасибо.