Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Электронный компонент:Плата Xadow IMU 6DOF

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2228 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Плата Xadow IMU 6DOF[1]

Imu 6dof 01.jpg

Плата Xadow IMU 6DOF предназначена для отслеживания положения в пространстве. Ее главный компонент – это IMU-устройство (сокр. от «inertial measurement unit», что значит «инерционное измерительное устройство») MPU6050 c 6 степенями свободы, которое объединяет в себе 3-осевой гироскоп, 3-осевой акселерометр и DMP-процессор (сокр. от «digital motion processor», что можно перевести как «процессор для цифровой обработки данных о движении»). Кроме того, MPU6050 оснащен шестью 16-битными АЦП: три из них используются для выдачи цифровых данных от гироскопа, а три других – для выдачи цифровых данных от акселерометра. Диапазон измеряемых значений можно менять и у гироскопа, и у акселерометра.

Купить плату Xadow IMU 6DOF можно по этой ссылке.

Характеристики

  • Рабочее напряжение – 3.3 вольта
  • Диапазоны измеряемых значений:
  • Шина для передачи данныхI2C
  • Размеры – 25.43 мм х 20.35 мм

Демо-проект

Теперь давайте попробуем сделать тестовый скетч, считывающий данные с гироскопа и акселерометра, которые установлены на плате Xadow IMU 6DOF.

Подключите плату Xadow IMU 6DOF к главной плате Xadow (имеется в виду плата Xadow Main Board; она не совместима с модулями Xadow версии 2 и RePhone) как показано на картинке ниже:

Xadow-IMU 6DOF installation.jpg

Примечание: Подключая кабель, следите за тем, чтобы одна его сторона была подключена к порту, который находится на стороне со срезанными углами, а другая – к порту, который находится на стороне с целыми углами. Пример показан на картинке выше.

Теперь на главную плату Xadow нужно загрузить тестовый код. Во-первых, загрузите с GitHub библиотеку «Xadow IMU 6DOF» и установите в качестве отдельных библиотек папки «I2Cdev» и «MPU6050». О том, как устанавливать в IDE Arduino новые библиотеки, читайте здесь или здесь. Во-вторых, откройте в IDE Arduino скетч «MPU6050_DMP6», кликнув на Файл > Примеры > MPU6050 > Examples > MPU6050_DMP6 (File > Examples > MPU6050 > Examples > MPU6050_DMP6). Этот скетч будет выглядеть следующим образом:

  1. #include <I2Cdev.h>  //  добавляем необходимые заголовочные файлы
  2. #include <MPU6050.h>  //  добавляем необходимые заголовочные файлы
  3. #include <Wire.h>
  4. //====значения смещения для гироскопа===========
  5. #define Gx_offset  -1.50
  6. #define Gy_offset  0
  7. #define Gz_offset  0.80
  8. //====значения смещения для акселерометра===========
  9. #define Ax_offset -0.07
  10. #define Ay_offset 0.02
  11. #define Az_offset 0.14
  12. //====================
  13. MPU6050 accelgyro;
  14.  
  15. int16_t ax,ay,az;  //  исходные данные;
  16. int16_t gx,gy,gz;  //  исходные данные;
  17. float Ax,Ay,Az;    //  единица измерения – галы (9.8 м/с2)
  18. float Gx,Gy,Gz;    //  единица измерения – ˚/сек
  19.  
  20.  
  21. void setup()
  22. {
  23.   Wire.begin();
  24.   Serial.begin(9600);
  25.  
  26.   Serial.println("Initializing I2C device.....");
  27.              //  "Инициализация I2C-устройства..."
  28.   accelgyro.initialize();
  29.  
  30.   Serial.println("Testing device connections...");
  31.             //  "Проверка соединения..."
  32.   Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful":"MPU6050 connection failure");  
  33.             //  "MPU6050 успешно подключен"
  34.             //  "Подключение MPU6050 не удалось"
  35. }
  36. void loop()
  37. {
  38.   //  считываем данные с гироскопа и акселерометра:
  39.   accelgyro.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);
  40.    //==========акселерометр================================
  41.    Ax=ax/16384.00;  //  считываем данные в галах (g)
  42.    Ay=ay/16384.00;  //  считываем данные в галах (g)
  43.    Az=az/16384.00;  //  считываем данные в галах (g)
  44.    Serial.println("Acce data.....");  //  "Данные акселерометра..."
  45.    Serial.print(Ax+Ax_offset);
  46.    Serial.print("   ");
  47.    Serial.print(Ay+Ay_offset);
  48.    Serial.print("   ");
  49.    Serial.println(Az+Az_offset);
  50.    //===============гироскоп================================
  51.    Gx=gx/131.00;
  52.    Gy=gy/131.00;
  53.    Gz=gz/131.00;
  54.    Serial.println("Gyro data.....");  //  "Данные гироскопа..."
  55.    Serial.print(Gx+Gx_offset);
  56.    Serial.print("   ");
  57.    Serial.print(Gy+Gy_offset);
  58.    Serial.print("   ");
  59.    Serial.println(Gz+Gz_offset);
  60.   //blinkState=!blinkState;
  61.   //digitalWrite(LED_PIN,blinkState);
  62.   delay(1000);  //  даем время на дискретизацию данных
  63. }

В-третьих, загрузите этот код на главную плату Xadow. В-четвертых, кликните в IDE Arduino на Инструменты > Плата > Seeeduino Xadow (Tools > Board > Seeeduino Xadow), чтобы выбрать нужную плату. В-пятых, откройте монитор порта IDE Arduino, чтобы увидеть данные, считываемые с IMU-устройства MPU6050.

Xadow IMU 6DOF result.png

В статичном состоянии значение для оси Z должно составлять около 0.98g. По нему можно судить, нормально ли работает IMU.

Расположение и направление вращения осей

Схема ниже показывает расположение и направление вращения осей для гироскопа и акселерометра, которыми оснащено IMU-устройство MPU6050.

MPU6050 轴向定位.png

Полезные ссылки

См.также

Внешние ссылки

  1. wiki.seeed.cc - Xadow - IMU 6DOF