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?
MPU9250 je modul, který integruje akcelerometr, gyroskop a magnetometr do jednoho zařízení. Tato kombinace umožňuje senzoru měřit lineární zrychlení, úhlovou rychlost a magnetické pole svého okolí. Tento senzor Invensense má 9 stupňů volnosti, což znamená , že dokáže měřit zrychlení, rotaci (gyroskop) a magnetické pole (magnetometr) podél tří různých os, což umožňuje výpočet úplné orientace zařízení.
Modul je navržen pro komunikaci přes SPI nebo I2C , což umožňuje snadné připojení k open-source platformám, jako jsou Arduino nebo Raspberry Pi. Navíc díky svému digitálnímu pohybovému procesoru (DMP) dokáže provádět složité výpočty, které slučují data získaná ze tří senzorů a poskytují 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

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 způsobených magnetickým prostředím (jako jsou například stopy budov nebo rušení od jiných elektronických zařízení), takže správná kalibrace je zásadní pro dosažení přesných 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
Pro zlepšení přesnosti odečtů MPU9250 je jedním z nejběžnějších přístupů implementace filtrů , které kombinují data získaná z gyroskopu, akcelerometru a magnetometru.
Komplementární filtr je efektivní a snadno implementovatelné řešení. Tento filtr se pro rychlé výsledky spoléhá na gyroskop, zatímco akcelerometr a magnetometr korigují dlouhodobý drift gyroskopu. Jednoduchý příklad kódu implementující tento filtr je uveden níže:
#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í.