Как да използвате сензора MPU9250 IMU с Arduino

  • MPU9250 съчетава акселерометър, жироскоп и магнитометър в един модул.
  • Лесно комуникира с Arduino, използвайки I2C протокола за точни показания.
  • Калибрирането на магнитометъра е от решаващо значение за елиминиране на магнитни грешки и подобряване на точността.
  • Филтри като допълнителния филтър могат да подобрят прецизността и да премахнат дрейфа.

mpu9250

Светът на инерционните сензори се разви бързо и устройства като MPU9250, който съчетава акселерометър, жироскоп и магнитометър в един модул, се превърнаха в ключова част за проекти за роботика, дронове и системи, които изискват точно улавяне на малки и големи движения. В тази статия ще проучим как да използваме този сензор с Arduino, какви са неговите забележителни характеристики, както и някои примери за код, за да започнете с него.

Използването на MPU9250 е полезно не само за любители, но и за професионалисти, които трябва да измерват точно ориентацията и движението. Това решение позволява разработването на системи за стабилизиране, автономни превозни средства и роботи, които изискват познаване на техните движения в различните оси. Гъвкавостта на сензора, заедно с неговата точност и ниска цена, му спечелиха солидна репутация сред разработчиците.

Какво представлява MPU9250?

El MPU9250 Това е модул, който включва акселерометър, жироскоп и магнитометър на едно устройство. С тази комбинация сензорът може да измерва както линейното ускорение, така и ъгловата скорост, както и магнитното поле на околната среда. Този сензор Invensense има 9 степени на свобода, което означава, че може да измерва в три различни оси, както ускорение, въртене (жироскоп), така и магнитно поле (магнитометър), като по този начин дава възможност за изчисляване на пълната ориентация на устройството.

Модулът е предназначен за комуникирайте чрез SPI или I2C, което позволява лесното му свързване към платформи с отворен код като Arduino или Raspberry Pi. Освен това, благодарение на Цифров процесор за движение (DMP), е в състояние да извършва сложни изчисления, за да обедини данните, получени от трите сензора, и да осигури по-прецизни измервания.

Основни характеристики на MPU9250

MPU9250 се отличава с голям брой функции, които го правят много интересен модул за проекти, които изискват улавяне на прецизни движения, сред които са:

  • Акселерометър: Регулируем диапазон на ускорение между ±2g, ±4g, ±8g и ±16g.
  • Жироскоп: Програмируем диапазон от ±250°/s, ±500°/s, ±1000°/s, ±2000°/s.
  • Магнитометър: Чувствителност от 0.6µT/LSB и програмируем диапазон до 4800µT.
  • Консумация на енергия: Много ниска, идеална за преносими устройства или устройства, които изискват работа за дълги периоди (3.5 mA в активен режим).

Свързване на модула MPU9250 с Arduino

mpu9250 ардуино

Свързването на модула към вашия Arduino е лесна процедура, благодарение на факта, че работи чрез I2C протокола. той типична схема на свързване между MPU9250 и a Arduino Uno е:

  • VCC: Свързване към 3.3V.
  • GND: към земята (GND).
  • S.D.A.: Свържете го към щифт A4 на Arduino.
  • SCL: Свържете го към щифт A5 на Arduino.

Важно е да се гарантира, че захранването е правилно, за да може сензорът да функционира правилно. Повечето модули вече имат регулатор на напрежението, за да могат да използват 5V на Arduino, без да го повредят.

Примери за код за MPU9250

По-долу ви показваме как можете да започнете да програмирате MPU9250 в Arduino, като четете данните от акселерометъра, жироскопа и магнитометъра. Библиотеката MPU9250.h Много е полезно да се улесни програмирането и в нашия пример описваме подробно как да четем необработени данни:

#include <Wire.h>
#include <MPU9250.h>
MPU9250 imu(Wire, 0x68);

void setup() {
    Wire.begin();
    Serial.begin(115200);
    if (imu.begin() != 0) {
        Serial.println("Error al iniciar MPU9250");
    } else {
        Serial.println("MPU9250 iniciado");
    }
}

void loop() {
    imu.readSensor();
    Serial.print("Aceleracion: ");
    Serial.print(imu.getAccelX_mss());
    Serial.print(", ");
    Serial.print(imu.getAccelY_mss());
    Serial.print(", ");
    Serial.print(imu.getAccelZ_mss());
    Serial.println();
    delay(1000);
}

Този код чете трите компонента на ускорението. Отчитанията на жироскоп и магнитометър могат да бъдат направени по подобен начин, като се използват методите getGyroX_rads() y getMagX_uT() съответно.

Практически приложения

Има множество приложения, при които MPU9250 се превръща в незаменим инструмент. Нека разгледаме някои от най-важните:

  • Дронове и роботика: Едно от най-честите приложения на MPU9250 е в системите за стабилизиране на полета и роботиката, където получаването на ориентация в реално време е от съществено значение.
  • Виртуална реалност: Чрез прецизно улавяне на ориентация и движение, сензорът може да се използва за проследяване в приложения за видеоигри или симулатори на виртуална реалност.
  • Навигационни системи: В комбинация с други сензори, като GPS, MPU9250 се използва в инерционна навигация за разбиране на движенията и откриване на ориентация.

Калибриране на магнитометър

Една от най-важните стъпки при използване на MPU9250 е калибриране на магнитометър. Магнитометърът е от съществено значение за елиминиране на грешки, генерирани от магнитната среда (като заснемане на сгради или смущения от друго електронно оборудване), така че извършването на правилно калибриране е от решаващо значение за точни измервания.

За да калибрираме правилно магнитометъра, можем да използваме библиотеката RTIMULib-Arduino. Ето една проста програма за калибриране:

#include <RTIMULib.h>
RTIMU *imu;
RTIMUSettings settings;

void setup() {
    Wire.begin();
    Serial.begin(115200);
    imu = RTIMU::createIMU(&settings);
    imu->IMUInit();
    imu->setCalibrationMode(true);
}

void loop() {
    if (imu->IMURead()) {
        RTVector3 mag = imu->getCompass();
        Serial.print("Magnetómetro: ");
        Serial.print(mag.x());
        Serial.print(", ");
        Serial.print(mag.y());
        Serial.print(", ");
        Serial.print(mag.z());
        Serial.println();
    }
}

Кодът по-горе чете данните от магнитометъра, така че можете да извършвате движения по осите и да покривате пълния диапазон от възможни показания. Това помага да се идентифицират изкривяванията на магнитното поле и да се подобрят изчисленията за ориентация.

Филтри за подобряване на прецизността

За да се подобри точността на показанията на MPU9250, един от най-често срещаните подходи е изпълнение на филтъра които комбинират данните, получени от жироскопа, акселерометъра и магнитометъра.

El допълнителен филтър Това е ефективно и лесно за изпълнение решение. Този филтър разчита на жироскопа, за да получи бързи резултати, докато акселерометърът и магнитометърът коригират дългосрочните отклонения от жироскопа (известни като дрейф). Прост код, който прилага този филтър, може да се види в следния пример:

#include <ComplementaryFilter.h>
ComplementaryFilter cf;

void setup() {
    cf.setAccelerometerGain(0.02);
    cf.setMagnetometerGain(0.98);
}

void loop() {
    // Integrar lecturas de acelerómetro y giroscopio
    cf.update(sensorData.accelX, sensorData.gyroX);
    float pitch = cf.getPitch();
    float roll = cf.getRoll();
    Serial.print("Pitch: ");
    Serial.print(pitch);
    Serial.print(" Roll: ");
    Serial.println(roll);
}

Този филтър е от съществено значение за премахване на дрейфа на жироскопа и генериране на по-стабилна ориентация. Освен това е много по-бързо да се изпълнява на микроконтролери като Arduino, отколкото други по-сложни методи като филтъра на Калман, който консумира повече ресурси.

MPU9250 е невероятно гъвкаво решение за голямо разнообразие от проекти, които изискват точна ориентация и измерване на движението. Свързването му към Arduino и получаването на основни показания е относително лесно и чрез прилагане на няколко филтъра можете да получите много точни и полезни резултати за широк спектър от приложения.


Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.