Kaip naudoti MPU9250 IMU jutiklį su Arduino

  • MPU9250 sujungia akselerometrą, giroskopą ir magnetometrą viename modulyje.
  • Lengvai bendrauja su „Arduino“, naudodamas I2C protokolą tiksliems rodmenims.
  • Magnetometro kalibravimas yra labai svarbus norint pašalinti magnetines klaidas ir pagerinti tikslumą.
  • Filtrai, tokie kaip papildomas filtras, gali pagerinti tikslumą ir pašalinti dreifus.

MPu9250

Inercinių jutiklių pasaulis sparčiai vystėsi, o tokie įrenginiai kaip MPU9250, kuris viename modulyje sujungia akselerometrą, giroskopą ir magnetometrą, tapo pagrindine robotikos projektų, dronų ir sistemų, kurioms reikia tiksliai fiksuoti mažus ir didelius judesius, dalimi. Šiame straipsnyje mes ištirsime, kaip naudoti šį jutiklį su „Arduino“, kokios yra jo svarbios funkcijos, taip pat kai kurie kodo pavyzdžiai, kaip pradėti su juo.

MPU9250 naudojimas naudingas ne tik mėgėjams, bet ir profesionalams, kuriems reikia tiksliai išmatuoti orientaciją ir judesius. Šis sprendimas leidžia kurti stabilizavimo sistemas, autonomines transporto priemones ir robotus, kuriems reikia žinoti judesius skirtingomis ašimis. Jutiklio universalumas, tikslumas ir maža kaina užsitarnavo tvirtą reputaciją tarp kūrėjų.

Kas yra MPU9250?

El MPU9250 Tai modulis, kuris apima akselerometras, giroskopas ir magnetometras viename įrenginyje. Su šiuo deriniu jutiklis gali išmatuoti tiek tiesinį pagreitį, tiek kampinį greitį, tiek aplinkos magnetinį lauką. Šis „Invensense“ jutiklis turi 9 laisvės laipsnius, o tai reiškia, kad jis gali matuoti trimis skirtingomis ašimis, tiek pagreitį, tiek sukimąsi (giroskopas), tiek magnetinį lauką (magnetometras), taip suteikiant galimybę apskaičiuoti visą įrenginio orientaciją.

Modulis skirtas bendrauti naudojant SPI arba I2C, kuri leidžia lengvai prijungti prie atvirojo kodo platformų, tokių kaip Arduino ar Raspberry Pi. Be to, dėka Skaitmeninis judesio procesorius (DMP), gali atlikti sudėtingus skaičiavimus, kad sujungtų trijų jutiklių gautus duomenis ir pateiktų tikslesnius matavimus.

Pagrindinės MPU9250 savybės

MPU9250 išsiskiria daugybe funkcijų, dėl kurių jis yra labai įdomus modulis projektams, kuriems reikia fiksuoti tikslius judesius, tarp kurių yra:

  • Akselerometras: Reguliuojamas pagreičio diapazonas nuo ±2g, ±4g, ±8g ir ±16g.
  • Giroskopas: Programuojamas diapazonas ±250°/s, ±500°/s, ±1000°/s, ±2000°/s.
  • Magnetometras: Jautrumas 0.6 µT/LSB ir programuojamas diapazonas iki 4800 µT.
  • Energijos suvartojimas: Labai žemas, idealiai tinka nešiojamiems įrenginiams arba įrenginiams, kuriuos reikia veikti ilgą laiką (3.5 mA aktyviu režimu).

MPU9250 modulio prijungimas prie Arduino

MPu9250 arduino

Modulio prijungimas prie „Arduino“ yra paprasta procedūra, nes jis veikia per I2C protokolą. Jis tipinė prijungimo schema tarp MPU9250 ir a Arduino Uno yra:

  • VCC: Prijunkite prie 3.3 V.
  • GND: į žemę (GND).
  • gamtos turtai: Prijunkite jį prie Arduino A4 kaiščio.
  • LAT: Prijunkite jį prie Arduino A5 kaiščio.

Svarbu užtikrinti, kad maitinimas būtų tinkamas, kad jutiklis veiktų tinkamai. Dauguma modulių jau turi įtampos reguliatorių, kad būtų galima naudoti 5 V Arduino nepažeidžiant.

MPU9250 kodo pavyzdžiai

Žemiau parodysime, kaip galite pradėti programuoti MPU9250 „Arduino“, nuskaitydami duomenis iš akselerometro, giroskopo ir magnetometro. Biblioteka MPU9250.h Tai labai naudinga palengvinti programavimą, o mūsų pavyzdyje išsamiai aprašome, kaip skaityti neapdorotus duomenis:

#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);
}

Šis kodas nuskaito tris pagreičio komponentus. Giroskopo ir magnetometro rodmenys gali būti atliekami panašiai naudojant metodus getGyroX_rads() y getMagX_uT() atitinkamai.

Praktiniai pritaikymai

Yra daugybė programų, kuriose MPU9250 tampa nepakeičiamu įrankiu. Panagrinėkime kai kuriuos iš svarbiausių:

  • Dronai ir robotika: Vienas iš dažniausiai naudojamų MPU9250 yra skrydžio stabilizavimo ir robotikos sistemose, kur būtina orientuotis realiuoju laiku.
  • Virtuali realybė: Tiksliai fiksuojant orientaciją ir judesį, jutiklis gali būti naudojamas sekimui vaizdo žaidimų programose ar virtualios realybės simuliatoriuose.
  • Navigacinės sistemos: Kartu su kitais jutikliais, tokiais kaip GPS, MPU9250 naudojamas inercinėje navigacijoje, siekiant suprasti judesius ir nustatyti orientaciją.

Magnetometro kalibravimas

Vienas iš svarbiausių žingsnių naudojant MPU9250 yra magnetometro kalibravimas. Magnetometras yra būtinas norint pašalinti magnetinės aplinkos sukeliamas klaidas (pvz., pastato filmuotą medžiagą ar kitos elektroninės įrangos trikdžius), todėl norint atlikti tikslius matavimus, labai svarbu atlikti tinkamą kalibravimą.

Norėdami teisingai sukalibruoti magnetometrą, galime naudoti RTIMULib-Arduino biblioteką. Čia yra paprasta kalibravimo programa:

#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();
    }
}

Aukščiau pateiktas kodas nuskaito duomenis iš magnetometro, kad galėtumėte atlikti judesius ašimis ir apimti visą galimų rodmenų diapazoną. Tai padeda nustatyti magnetinio lauko iškraipymus ir pagerinti orientacijos skaičiavimus.

Filtrai tikslumui pagerinti

Siekiant pagerinti MPU9250 rodmenų tikslumą, vienas iš labiausiai paplitusių metodų yra filtro įgyvendinimas sujungia duomenis, gautus iš giroskopo, akselerometro ir magnetometro.

El papildomas filtras Tai efektyvus ir paprastas įgyvendinamas sprendimas. Šis filtras remiasi giroskopu, kad gautų greitų rezultatų, o akselerometras ir magnetometras koreguoja ilgalaikius nukrypimus nuo giroskopo (vadinamus dreifu). Paprastą kodą, kuris įgyvendina šį filtrą, galite pamatyti šiame pavyzdyje:

#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);
}

Šis filtras yra būtinas norint pašalinti giroskopo dreifus ir sukurti stabilesnę orientaciją. Be to, tai daug greičiau vykdoma naudojant tokius mikrovaldiklius kaip Arduino nei kiti sudėtingesni metodai, tokie kaip Kalmano filtras, kuris sunaudoja daugiau išteklių.

MPU9250 yra neįtikėtinai universalus sprendimas įvairiems projektams, kuriems reikia tikslios orientacijos ir judesio matavimo. Jį prijungti prie „Arduino“ ir gauti pagrindinius rodmenis yra gana paprasta, o įdiegę keletą filtrų galite gauti labai tikslių ir naudingų rezultatų įvairioms programoms.


Būkite pirmas, kuris pakomentuos

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.