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

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

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


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

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

#include <I2Cdev.h>  //  добавляем необходимые заголовочные файлы
#include <MPU6050.h>  //  добавляем необходимые заголовочные файлы
#include <Wire.h>
//====значения смещения для гироскопа===========
#define Gx_offset  -1.50
#define Gy_offset  0
#define Gz_offset  0.80
//====значения смещения для акселерометра===========
#define Ax_offset -0.07
#define Ay_offset 0.02
#define Az_offset 0.14
//====================
MPU6050 accelgyro;

int16_t ax,ay,az;  //  исходные данные;
int16_t gx,gy,gz;  //  исходные данные;
float Ax,Ay,Az;    //  единица измерения – галы (9.8 м/с2)
float Gx,Gy,Gz;    //  единица измерения – ˚/сек


void setup()
{
  Wire.begin();
  Serial.begin(9600);

  Serial.println("Initializing I2C device.....");
             //  "Инициализация I2C-устройства..."
  accelgyro.initialize();

  Serial.println("Testing device connections...");
            //  "Проверка соединения..."
  Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful":"MPU6050 connection failure");  
            //  "MPU6050 успешно подключен"
            //  "Подключение MPU6050 не удалось"
}
void loop()
{
  //  считываем данные с гироскопа и акселерометра:
  accelgyro.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);
   //==========акселерометр================================
   Ax=ax/16384.00;  //  считываем данные в галах (g)
   Ay=ay/16384.00;  //  считываем данные в галах (g)
   Az=az/16384.00;  //  считываем данные в галах (g)
   Serial.println("Acce data.....");  //  "Данные акселерометра..."
   Serial.print(Ax+Ax_offset);
   Serial.print("   ");
   Serial.print(Ay+Ay_offset);
   Serial.print("   ");
   Serial.println(Az+Az_offset);
   //===============гироскоп================================
   Gx=gx/131.00;
   Gy=gy/131.00;
   Gz=gz/131.00;
   Serial.println("Gyro data.....");  //  "Данные гироскопа..."
   Serial.print(Gx+Gx_offset);
   Serial.print("   ");
   Serial.print(Gy+Gy_offset);
   Serial.print("   ");
   Serial.println(Gz+Gz_offset);
  //blinkState=!blinkState;
  //digitalWrite(LED_PIN,blinkState);
  delay(1000);  //  даем время на дискретизацию данных
}

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

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

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

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

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

См.также

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