Kako koristiti MPU9250 IMU senzor s Arduinom

  • MPU9250 kombinira akcelerometar, žiroskop i magnetometar u jednom modulu.
  • Lako komunicira s Arduinom koristeći I2C protokol za točna očitanja.
  • Kalibracija magnetometra ključna je za uklanjanje magnetskih pogrešaka i poboljšanje točnosti.
  • Filtri kao što je komplementarni filtar mogu poboljšati preciznost i eliminirati drift.

mpu9250

Svijet inercijskih senzora brzo se razvio, a uređaji poput MPU9250, koji kombinira akcelerometar, žiroskop i magnetometar u jednom modulu, postali su ključni dio za robotske projekte, dronove i sustave koji zahtijevaju precizno hvatanje malih i velikih pokreta. U ovom članku ćemo istražiti kako koristiti ovaj senzor s Arduinom, koje su njegove značajne značajke, kao i neke primjere koda za početak rada s njim.

Korištenje MPU9250 nije korisno samo za hobiste, već i za profesionalce koji trebaju točno mjeriti orijentaciju i kretanje. Ovo rješenje omogućuje razvoj stabilizacijskih sustava, autonomnih vozila i robota koji zahtijevaju poznavanje njihovih kretanja u različitim osima. Svestranost senzora, zajedno s njegovom preciznošću i niskom cijenom, priskrbila mu je solidnu reputaciju među programerima.

Što je MPU9250?

El MPU9250 To je modul koji uključuje akcelerometar, žiroskop i magnetometar na jednom uređaju. S ovom kombinacijom, senzor je sposoban mjeriti i linearno ubrzanje i kutnu brzinu te magnetsko polje svoje okoline. Ovaj senzor Invensense ima 9 stupnjeva slobode, što znači da može mjeriti u tri različite osi, i ubrzanje, rotaciju (žiroskop) i magnetsko polje (magnetometar), čime se daje mogućnost izračuna potpune orijentacije uređaja.

Modul je dizajniran za komuniciraju koristeći SPI ili I2C, što mu omogućuje jednostavno povezivanje s platformama otvorenog koda kao što su Arduino ili Raspberry Pi. Nadalje, zahvaljujući Digitalni procesor kretanja (DMP), može izvesti složene izračune kako bi spojio podatke dobivene s tri senzora i pružio preciznija mjerenja.

Glavne značajke MPU9250

MPU9250 ističe se velikim brojem značajki koje ga čine vrlo zanimljivim modulom za projekte koji zahtijevaju snimanje preciznih pokreta, među kojima su:

  • Brzinomjer: Podesivi raspon ubrzanja između ±2g, ±4g, ±8g i ±16g.
  • Žiroskop: Programabilni raspon od ±250°/s, ±500°/s, ±1000°/s, ±2000°/s.
  • Magnetometar: Osjetljivost od 0.6µT/LSB i programabilni raspon do 4800µT.
  • Consumo energético: Vrlo nizak, idealan za prijenosne uređaje ili uređaje koji zahtijevaju dugotrajan rad (3.5 mA u aktivnom načinu rada).

Povezivanje MPU9250 modula s Arduinom

mpu9250 arduino

Spajanje modula na vaš Arduino jednostavan je postupak zahvaljujući činjenici da radi preko I2C protokola. On tipični dijagram povezivanja između MPU9250 i a Arduino Uno To je:

  • VCC: Spojite na 3.3 V.
  • GND: Na masu (GND).
  • SDA: Spojite ga na pin A4 Arduina.
  • SCL: Spojite ga na pin A5 Arduina.

Važno je osigurati da je napajanje ispravno kako bi senzor mogao pravilno funkcionirati. Većina modula već ima regulator napona kako bi mogli koristiti 5V Arduina bez njegovog oštećenja.

Primjeri koda za MPU9250

U nastavku vam pokazujemo kako možete početi programirati MPU9250 u Arduinu, čitajući podatke s akcelerometra, žiroskopa i magnetometra. Knjižnica MPU9250.h Vrlo je korisno za olakšavanje programiranja, au našem primjeru detaljno opisujemo kako čitati neobrađene podatke:

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

Ovaj kod očitava tri komponente ubrzanja. Očitavanja žiroskopa i magnetometra mogu se napraviti na sličan način pomoću ovih metoda getGyroX_rads() y getMagX_uT() respektivno.

Praktične aplikacije

Postoji više aplikacija u kojima MPU9250 postaje nezamjenjiv alat. Istražimo neke od najvažnijih:

  • Dronovi i robotika: Jedna od najčešćih upotreba MPU9250 je u stabilizaciji leta i robotskim sustavima, gdje je dobivanje orijentacije u stvarnom vremenu bitno.
  • Virtualna stvarnost: Preciznim hvatanjem orijentacije i kretanja, senzor se može koristiti za praćenje u aplikacijama za video igre ili simulatorima virtualne stvarnosti.
  • Navigacijski sustavi: U kombinaciji s drugim senzorima, poput GPS-a, MPU9250 koristi se u inercijalnoj navigaciji za razumijevanje pokreta i otkrivanje orijentacije.

Kalibracija magnetometra

Jedan od najvažnijih koraka pri korištenju MPU9250 je kalibracija magnetometra. Magnetometar je neophodan za uklanjanje pogrešaka koje stvara magnetsko okruženje (kao što su snimke zgrada ili smetnje od druge elektroničke opreme), stoga je izvođenje odgovarajuće kalibracije ključno za točna mjerenja.

Za ispravnu kalibraciju magnetometra možemo koristiti biblioteku RTIMULib-Arduino. Evo jednostavnog programa za kalibraciju:

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

Gornji kod čita podatke s magnetometra kako biste mogli pomicati osi i pokriti cijeli raspon mogućih očitanja. To pomaže identificirati izobličenja magnetskog polja i poboljšati izračune orijentacije.

Filtri za poboljšanje preciznosti

Kako bi se poboljšala točnost očitanja MPU9250, jedan od najčešćih pristupa je implementacija filtera koji kombiniraju podatke dobivene iz žiroskopa, akcelerometra i magnetometra.

El komplementarni filtar To je učinkovito i jednostavno rješenje za implementaciju. Ovaj se filtar oslanja na žiroskop kako bi dobio brze rezultate, dok akcelerometar i magnetometar ispravljaju dugotrajna odstupanja od žiroskopa (poznato kao drift). Jednostavan kod koji implementira ovaj filter može se vidjeti u sljedećem primjeru:

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

Ovaj je filtar neophodan za eliminiranje pomicanja žiroskopa i stvaranje stabilnije orijentacije. Osim toga, mnogo se brže izvršava na mikrokontrolerima kao što je Arduino od drugih složenijih metoda kao što je Kalmanov filter, koji troši više resursa.

MPU9250 je nevjerojatno svestrano rješenje za širok raspon projekata koji zahtijevaju točnu orijentaciju i mjerenje kretanja. Povezivanje s Arduinom i dobivanje osnovnih očitanja relativno je jednostavno, a implementacijom nekoliko filtara možete dobiti vrlo precizne i korisne rezultate za širok raspon aplikacija.


Budite prvi koji će komentirati

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.