Электронные компоненты, Микроконтроллеры Arduino, Сенсоры и Радиодетали

Наши контакты: г. Москва,
ул. Молодогвардейская, д.54с4
тел: +7 (495) 143-93-53     
  +7 (977) 404-81-30
WApp: +7 (977) 947-63-06
E-mail: sales@yourduino.ru

Знакомство с девятиосевым модулем MPU 9250.

Опубликовано: 25.06.2019

Модуль GY-9250 на базе одноименной микросхемы MPU9250 включает в себя трёхосевой гироскоп, трёхосевой акселерометр и трёхосевой магнитометр (магниторезистивный компас). Такая связка позволяет отслеживать положение в пространстве.

Модуль GY-9250 может, к примеру, применяться в системах управления различных мобильных роботов и БПЛА.

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

  • Питание: 3,3 … 5 В постоянного тока
  • Интерфейсы подключения: I2C, SPI
  • Диапазон измерений акселерометра: +/- 2G, +/- 4G, +/- 8G, +/- 16G
  • Диапазон измерений гироскопа: +/- 250, +/- 500, +/- 1000, +/- 2000°/с
  • Чувствительность гироскопа: 131, 65,5, 32,8, 16,4 LSB/°/c
  • Диапазон измерений компаса магнитометра: +/- 4800 мкТл
  • Рабочий ток: гироскоп – 3,2 мА, акселерометр – 450 мкА, магнитометр – 280 мкА

Модуль имеет 10 выводов, но для подключения по интерфейсу I2C нам необходимо использовать лишь 4 из них:

VCC – Питание

GND – ”Земля”

SCL – Шина данных I2C

SDA – Шина данных I2C

Подключение к Arduino:

Для подключения и работы с модулем нам необходимы:

  • Любая Arduino-совместимая плата
  • Компьютер с установленной средой Arduino IDE.
  • USB кабель для подключения Arduino к персональному компьютеру

Для демонстрации работы модуля соберем на макетной плате схему с использованием графического модуля LCD1602 для наглядного представления показаний.

Подробнее узнать о модуле LCD1602 и его подключении можно здесь.

Принципиальная схема подключения компонентов:

 

 

Скетч для Arduino:

Для считывания показаний с датчиков и подключения дисплея необходимо использовать библиотеки*:

LiquidCrystal_I2C.h

MPU9250.h

Wire.h

Если их нет в вашей среде ArduinoIDE, загрузить их можно в разделе “Менеджер библиотек”.

*Библиотека Arduino – программный код, хранящийся не в скетче, а во внешних файлах, которые можно подключить к вашему проекту. Библиотека содержит в себе различные методы и структуры данных, которые нужны для упрощения работы с датчиками, индикаторами, модулями и другими электронными компонентами.

Код:

#include <LiquidCrystal_I2C.h>    // Подключение необходимых библиотек
#include <MPU9250.h>              //
#include <Wire.h>                 //
 
LiquidCrystal_I2C lcd(0x3f,16,2); // задание параметров дисплея
 
MPU9250 mpu;                      // просто нужно
 
void setup()
{
    Serial.begin(115200); 
 
    Wire.begin();
 
    delay(2000);
    mpu.setup();
    mpu.setMagneticDeclination(11.2);  //в скобках необходимо указать магнинтное отклонение
                                       //местности, в которой вы находитесь http://www.magnetic-declination.com/ 
    delay(5000);
 
    mpu.calibrateAccelGyro();          // калибровка акселерометра и гироскопа
    mpu.calibrateMag();                // калибровка магнитометра
 
    mpu.printCalibration();            // вывод сообщения о калибровке в серийный порт
 
    //экран
    lcd.init();                        // запуск дисплея
    lcd.backlight();                   // включение подсветки дисплея
    lcd.setCursor(0,0);                // установка курсора в ячейку на дисплее
    lcd.print("x");                    // вывод на экран
    lcd.setCursor(6,0);
    lcd.print("y");
    lcd.setCursor(11,0);
    lcd.print("z");
    lcd.setCursor(0,1);
    lcd.print("ax:");
    lcd.setCursor(8,1);
    lcd.print("ay:");
}
 
void loop()
{
   static uint32_t prev_ms = millis();
    if ((millis() - prev_ms) > 16)
    {
        mpu.update();
        mpu.print();
 
        prev_ms = millis();
 
        lcd.setCursor(1,0);
        lcd.print(int(mpu.getRoll()));       // выводим на экран округленное значение по оси X
        lcd.print(" ");
        lcd.setCursor(7,0);
        lcd.print(int(mpu.getPitch()));      // выводим на экран округленное значение по оси Y
        lcd.print(" ");
        lcd.setCursor(12,0);                 
        lcd.print(int(mpu.getYaw()));        // выводим на экран округленное значение по оси Z
        lcd.print(" ");
         lcd.setCursor(3,1);
 
        float ux = mpu.getAcc(0)*1000;       // задаем переменную для ускорения по оси X
        lcd.print(int(ux));                  // выводим на экран округленное значение ускорения в размерности g*1000
        lcd.print("  ");
 
         lcd.setCursor(11,1);
        float uy = mpu.getAcc(1)*1000;       // задаем переменную для ускорения по оси Y
        lcd.print(int(uy));                  // выводим на экран округленное значение ускорение в размерности g*1000
        lcd.print("  ");
        delay(50);  
 
    }
}
Комментарии (0)
Пока нет комментариев
Вы не представились
Не правильно введен e-mail
Нам интересно Ваше мнение
Все поля обязательны к заполнению
Перед публикацией комментарии проходят модерацию

Главное меню

Каталог

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

Цена
от
до
0 Корзина: 0 руб.
Заказ в один клик