Ako používať snímač MPU9250 IMU s Arduino

  • MPU9250 kombinuje akcelerometer, gyroskop a magnetometer v jednom module.
  • Ľahko komunikuje s Arduinom pomocou protokolu I2C pre presné údaje.
  • Kalibrácia magnetometra je rozhodujúca na odstránenie magnetických chýb a zlepšenie presnosti.
  • Filtre, ako je doplnkový filter, môžu zlepšiť presnosť a eliminovať posun.

mpu9250

Svet inerciálnych senzorov sa rýchlo vyvíjal a zariadenia ako MPU9250, ktorý kombinuje akcelerometer, gyroskop a magnetometer v jedinom module, sa stali kľúčovým prvkom pre robotické projekty, drony a systémy, ktoré vyžadujú presné zachytenie malých aj veľkých pohybov. V tomto článku sa pokúsime preskúmať, ako používať tento senzor s Arduino, aké sú jeho pozoruhodné funkcie, ako aj niektoré príklady kódu, aby ste s ním mohli začať.

Používanie MPU9250 nie je užitočné len pre fanúšikov, ale aj pre profesionálov, ktorí potrebujú presne merať orientáciu a pohyb. Toto riešenie umožňuje vývoj stabilizačných systémov, autonómnych vozidiel a robotov, ktoré vyžadujú poznať ich pohyby v rôznych osiach. Všestrannosť snímača spolu s jeho presnosťou a nízkou cenou si medzi vývojármi vyslúžila dobrú povesť.

Čo je MPU9250?

El MPU 9250 XNUMX Ide o modul, ktorý obsahuje akcelerometer, gyroskop a magnetometer na jednom zariadení. S touto kombináciou je snímač schopný merať lineárne zrýchlenie a uhlovú rýchlosť a magnetické pole svojho okolia. Tento senzor Invensense má 9 stupňov voľnosti, čo znamená, že dokáže merať v troch rôznych osiach zrýchlenie, rotáciu (gyroskop) a magnetické pole (magnetometer), čím dáva možnosť vypočítať kompletnú orientáciu zariadenia.

Modul je určený na komunikovať pomocou SPI alebo I2C, čo umožňuje jednoduché pripojenie k open source platformám ako Arduino alebo Raspberry Pi. Ďalej vďaka Digitálny pohybový procesor (DMP), je schopný vykonávať zložité výpočty na spojenie údajov získaných tromi senzormi a poskytnúť presnejšie merania.

Hlavné vlastnosti MPU9250

MPU9250 sa vyznačuje veľkým množstvom funkcií, ktoré z neho robia veľmi zaujímavý modul pre projekty vyžadujúce presné zachytenie pohybov, medzi ktoré patria:

  • Akcelerometer: Nastaviteľný rozsah zrýchlenia medzi ±2g, ±4g, ±8g a ±16g.
  • Gyroskop: Programovateľný rozsah ±250°/s, ±500°/s, ±1000°/s, ±2000°/s.
  • Magnetometer: Citlivosť 0.6µT/LSB a programovateľný rozsah až do 4800µT.
  • Consumo energético: Veľmi nízka, ideálna pre prenosné zariadenia alebo zariadenia, ktoré vyžadujú dlhodobú prevádzku (3.5 mA v aktívnom režime).

Pripojenie modulu MPU9250 k Arduinu

mpu9250 arduino

Pripojenie modulu k vášmu Arduinu je jednoduchý postup vďaka tomu, že funguje cez protokol I2C. On typická schéma zapojenia medzi MPU9250 a a Arduino Uno Je to:

  • VCC: Pripojte k 3.3V.
  • GND: Na zem (GND).
  • SDA: Pripojte ho ku kolíku A4 Arduina.
  • SCL: Pripojte ho ku kolíku A5 Arduina.

Je dôležité zabezpečiť správne napájanie, aby snímač mohol správne fungovať. Väčšina modulov už má regulátor napätia, aby bolo možné použiť 5V Arduina bez jeho poškodenia.

Príklady kódov pre MPU9250

Nižšie vám ukážeme, ako môžete začať programovať MPU9250 v Arduine čítaním údajov z akcelerometra, gyroskopu a magnetometra. Knižnica MPU9250.h Je veľmi užitočné uľahčiť programovanie a v našom príklade podrobne popisujeme, ako čítať nespracované údaje:

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

Tento kód číta tri zložky zrýchlenia. Meranie pomocou gyroskopu a magnetometra je možné vykonať podobným spôsobom getGyroX_rads() y getMagX_uT() resp.

Praktické aplikácie

Existuje viacero aplikácií, kde sa MPU9250 stáva nepostrádateľným nástrojom. Poďme preskúmať niektoré z najdôležitejších:

  • Drony a robotika: Jedno z najbežnejších použití MPU9250 je v systémoch stabilizácie letu a robotiky, kde je získanie orientácie v reálnom čase nevyhnutné.
  • Virtuálna realita: Vďaka presnému zachyteniu orientácie a pohybu možno senzor použiť na sledovanie v aplikáciách videohier alebo simulátoroch virtuálnej reality.
  • Navigačné systémy: V kombinácii s inými senzormi, ako je GPS, sa MPU9250 používa v inerciálnej navigácii na pochopenie pohybov a detekciu orientácie.

Kalibrácia magnetometra

Jedným z najdôležitejších krokov pri používaní MPU9250 je kalibrácia magnetometra. Magnetometer je nevyhnutný na elimináciu chýb generovaných magnetickým prostredím (ako sú zábery budovy alebo rušenie inými elektronickými zariadeniami), takže vykonanie správnej kalibrácie je rozhodujúce pre presné merania.

Na správnu kalibráciu magnetometra môžeme použiť knižnicu RTIMULib-Arduino. Tu je jednoduchý kalibračný program:

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

Vyššie uvedený kód číta údaje z magnetometra, takže môžete vykonávať pohyby na osiach a pokryť celý rozsah možných údajov. To pomáha identifikovať deformácie magnetického poľa a zlepšiť orientačné výpočty.

Filtre na zlepšenie presnosti

Na zlepšenie presnosti odčítania MPU9250 je jedným z najbežnejších prístupov implementácia filtra ktoré kombinujú údaje získané z gyroskopu, akcelerometra a magnetometra.

El doplnkový filter Je to efektívne a jednoduché riešenie na implementáciu. Tento filter sa spolieha na gyroskop, aby získal rýchle výsledky, zatiaľ čo akcelerometer a magnetometer opravujú dlhodobé odchýlky od gyroskopu (známe ako drift). Jednoduchý kód, ktorý implementuje tento filter, je možné vidieť v nasledujúcom príklade:

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

Tento filter je nevyhnutný na elimináciu driftu gyroskopu a vytvorenie stabilnejšej orientácie. Okrem toho je oveľa rýchlejší na mikrokontroléroch, ako je Arduino, ako na iných zložitejších metódach, ako je Kalmanov filter, ktorý spotrebúva viac zdrojov.

MPU9250 je neuveriteľne všestranné riešenie pre širokú škálu projektov, ktoré vyžadujú presnú orientáciu a meranie pohybu. Pripojenie k Arduinu a získanie základných hodnôt je pomerne jednoduché a implementáciou niekoľkých filtrov môžete získať veľmi presné a užitočné výsledky pre širokú škálu aplikácií.


Buďte prvý komentár

Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.