Электронный компонент:Плата 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 вольта
- Диапазоны измеряемых значений:
- Гироскоп: ±250, ±500, ±1000 и ±2000 °/сек
- Акселерометр: ±2g, ±4g, ±8g и ±16 гал
- Шина для передачи данных – 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.
Полезные ссылки
- Схемы для платы Xadow IMU 6DOF в формате Eagle
- Техническая документация для MPU6050
- Библиотека «Xadow IMU 6DOF»