Jak používat senzor MPU9250 IMU s Arduinem

  • MPU9250 kombinuje akcelerometr, gyroskop a magnetometr v jediném modulu.
  • Snadno komunikuje s Arduinem pomocí protokolu I2C pro přesné odečty.
  • Kalibrace magnetometru je zásadní pro odstranění magnetických chyb a zlepšení přesnosti.
  • Filtry, jako je doplňkový filtr, mohou zlepšit přesnost a eliminovat posun.

mpu9250

Svět inerciálních senzorů se rychle vyvíjel a zařízení jako MPU9250, která kombinuje akcelerometr, gyroskop a magnetometr v jediném modulu, se stala klíčovým prvkem pro robotické projekty, drony a systémy, které vyžadují přesné zachycení malých i velkých pohybů. V tomto článku prozkoumáme, jak tento senzor používat s Arduinem, jaké jsou jeho pozoruhodné funkce a také některé příklady kódu, jak s ním začít.

Použití MPU9250 není užitečné pouze pro fandy, ale také pro profesionály, kteří potřebují přesně měřit orientaci a pohyb. Toto řešení umožňuje vývoj stabilizačních systémů, autonomních vozidel a robotů, které vyžadují znalost jejich pohybů v různých osách. Všestrannost snímače spolu s jeho přesností a nízkou cenou si mezi vývojáři vysloužila solidní pověst.

Co je MPU9250?

El MPU 9250 Jedná se o modul, který obsahuje akcelerometr, gyroskop a magnetometr na jediném zařízení. Díky této kombinaci je snímač schopen měřit jak lineární zrychlení a úhlovou rychlost, tak magnetické pole svého okolí. Tento senzor Invensense má 9 stupňů volnosti, což znamená, že může měřit ve třech různých osách, jak zrychlení, rotaci (gyroskop), tak magnetické pole (magnetometr), čímž dává možnost vypočítat kompletní orientaci zařízení.

Modul je určen pro komunikovat pomocí SPI nebo I2C, což umožňuje jeho snadné připojení k open source platformám, jako je Arduino nebo Raspberry Pi. Dále díky Digitální pohybový procesor (DMP), je schopen provádět složité výpočty pro spojení dat získaných třemi senzory a poskytovat přesnější měření.

Hlavní vlastnosti MPU9250

MPU9250 se vyznačuje velkým množstvím funkcí, které z něj dělají velmi zajímavý modul pro projekty vyžadující přesné zachycení pohybů, mezi které patří:

  • Akcelerometr: Nastavitelný rozsah zrychlení mezi ±2g, ±4g, ±8g a ±16g.
  • Gyroskop: Programovatelný rozsah ±250°/s, ±500°/s, ±1000°/s, ±2000°/s.
  • Magnetometr: Citlivost 0.6µT/LSB a programovatelný rozsah až 4800µT.
  • Consumo energético: Velmi nízká, ideální pro přenosná zařízení nebo zařízení, která vyžadují provoz po dlouhou dobu (3.5 mA v aktivním režimu).

Propojení modulu MPU9250 s Arduinem

mpu9250 arduino

Připojení modulu k vašemu Arduinu je jednoduchý postup díky tomu, že funguje přes protokol I2C. On typické schéma zapojení mezi MPU9250 a a Arduino Uno Je to:

  • VCC: Připojte k 3.3V.
  • GND: K zemi (GND).
  • SDA: Připojte jej ke kolíku A4 Arduina.
  • SCL: Připojte jej ke kolíku A5 Arduina.

Je důležité zajistit správné napájení, aby snímač mohl správně fungovat. Většina modulů již má regulátor napětí, aby bylo možné využít 5V Arduina bez jeho poškození.

Příklady kódů pro MPU9250

Níže vám ukážeme, jak můžete začít programovat MPU9250 v Arduinu, čtením dat z akcelerometru, gyroskopu a magnetometru. Knihovna MPU9250.h Je velmi užitečné usnadnit programování a v našem příkladu podrobně popisujeme, jak číst nezpracovaná data:

#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 čte tři složky zrychlení. Odečty z gyroskopu a magnetometru lze provést podobným způsobem pomocí metod getGyroX_rads() y getMagX_uT() resp.

Praktické aplikace

Existuje mnoho aplikací, kde se MPU9250 stává nepostradatelným nástrojem. Pojďme prozkoumat některé z nejdůležitějších:

  • Drony a robotika: Jedno z nejběžnějších použití MPU9250 je v systémech stabilizace letu a robotiky, kde je získání orientace v reálném čase zásadní.
  • Virtuální realita: Díky přesnému zachycení orientace a pohybu lze senzor použít pro sledování ve videoherních aplikacích nebo simulátorech virtuální reality.
  • Navigační systémy: V kombinaci s dalšími senzory, jako je GPS, se MPU9250 používá v inerciální navigaci k pochopení pohybů a detekci orientace.

Kalibrace magnetometru

Jedním z nejdůležitějších kroků při používání MPU9250 je kalibrace magnetometru. Magnetometr je nezbytný pro eliminaci chyb generovaných magnetickým prostředím (jako jsou záběry budovy nebo rušení od jiných elektronických zařízení), takže provedení správné kalibrace je zásadní pro přesná měření.

Pro správnou kalibraci magnetometru můžeme použít knihovnu RTIMULib-Arduino. Zde 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();
    }
}

Výše uvedený kód čte data z magnetometru, takže můžete provádět pohyby na osách a pokrýt celý rozsah možných hodnot. To pomáhá identifikovat zkreslení magnetického pole a zlepšit výpočty orientace.

Filtry pro zlepšení přesnosti

Ke zlepšení přesnosti odečtů MPU9250 je jedním z nejběžnějších přístupů implementace filtru které kombinují data získaná z gyroskopu, akcelerometru a magnetometru.

El doplňkový filtr Je to efektivní a jednoduché řešení na implementaci. Tento filtr se při získávání rychlých výsledků spoléhá na gyroskop, zatímco akcelerometr a magnetometr opravují dlouhodobé odchylky od gyroskopu (známé jako drift). Jednoduchý kód, který implementuje tento filtr, lze vidět v následujícím příkladu:

#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 filtr je nezbytný pro eliminaci driftu gyroskopu a vytvoření stabilnější orientace. Kromě toho je mnohem rychlejší na mikrokontrolérech, jako je Arduino, než na jiných složitějších metodách, jako je Kalmanův filtr, který spotřebovává více zdrojů.

MPU9250 je neuvěřitelně všestranné řešení pro širokou škálu projektů, které vyžadují přesnou orientaci a měření pohybu. Připojení k Arduinu a získání základních hodnot je poměrně jednoduché a implementací několika filtrů můžete získat velmi přesné a užitečné výsledky pro širokou škálu aplikací.


Začněte konverzaci

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.