Slik bruker du MPU9250 IMU-sensoren med Arduino

  • MPU9250 kombinerer akselerometer, gyroskop og magnetometer i en enkelt modul.
  • Kommuniserer enkelt med Arduino ved hjelp av I2C-protokollen for nøyaktige avlesninger.
  • Magnetometerkalibrering er avgjørende for å eliminere magnetiske feil og forbedre nøyaktigheten.
  • Filtre som det komplementære filteret kan forbedre presisjonen og eliminere drift.

mpu9250

Verden av treghetssensorer har utviklet seg raskt, og enheter som MPU9250, som kombinerer akselerometer, gyroskop og magnetometer i en enkelt modul, har blitt en nøkkeldel for robotprosjekter, droner og systemer som krever nøyaktig å fange små og store bevegelser. I denne artikkelen skal vi utforske hvordan du bruker denne sensoren med Arduino, hva dens bemerkelsesverdige funksjoner er, samt noen kodeeksempler for å komme i gang med den.

Å bruke MPU9250 er ikke bare nyttig for hobbyister, men også for profesjonelle som trenger å måle orientering og bevegelse nøyaktig. Denne løsningen tillater utvikling av stabiliseringssystemer, autonome kjøretøy og roboter som krever å kjenne deres bevegelser i de forskjellige aksene. Sensorens allsidighet, sammen med dens nøyaktighet og lave kostnader, har gitt den et solid rykte blant utviklere.

Hva er MPU9250?

El MPU9250 Det er en modul som inkluderer akselerometer, gyroskop og magnetometer på en enkelt enhet. Med denne kombinasjonen er sensoren i stand til å måle både lineær akselerasjon og vinkelhastighet, og det magnetiske feltet i omgivelsene. Denne Invensense-sensoren har 9 frihetsgrader, noe som betyr at den kan måle i tre forskjellige akser, både akselerasjon, rotasjon (gyroskop) og magnetfeltet (magnetometer), og gir dermed muligheten til å beregne enhetens fullstendige orientering.

Modulen er laget for å kommunisere ved hjelp av SPI eller I2C, som gjør at den enkelt kan kobles til åpen kildekode-plattformer som Arduino eller Raspberry Pi. Videre takk til Digital Motion Processor (DMP), er i stand til å utføre komplekse beregninger for å smelte sammen dataene innhentet av de tre sensorene og gi mer presise målinger.

Hovedtrekkene til MPU9250

MPU9250 skiller seg ut for å ha et stort antall funksjoner som gjør den til en veldig interessant modul for prosjekter som krever å fange presise bevegelser, blant annet:

  • Akselerometer: Justerbart akselerasjonsområde mellom ±2g, ±4g, ±8g og ±16g.
  • Gyroskop: Programmerbart område på ±250°/s, ±500°/s, ±1000°/s, ±2000°/s.
  • Magnetometer: Følsomhet på 0.6 µT/LSB og programmerbart område opp til 4800 µT.
  • Consumo energético: Svært lav, ideell for bærbare enheter eller enheter som krever drift over lengre perioder (3.5 mA i aktiv modus).

Koble til MPU9250-modulen med Arduino

mpu9250 arduino

Å koble modulen til din Arduino er en enkel prosedyre takket være det faktum at den fungerer gjennom I2C-protokollen. Han typisk koblingsskjema mellom en MPU9250 og en Arduino Uno er:

  • VCC: Koble til 3.3V.
  • GND: Til jord (GND).
  • SDA: Koble den til pinne A4 på Arduino.
  • SCL: Koble den til pinne A5 på Arduino.

Det er viktig å sørge for at strømmen er riktig slik at sensoren kan fungere som den skal. De fleste moduler har allerede en spenningsregulator for å kunne bruke 5V til Arduino uten å skade den.

Kodeeksempler for MPU9250

Nedenfor viser vi deg hvordan du kan begynne å programmere MPU9250 i Arduino ved å lese dataene fra akselerometeret, gyroskopet og magnetometeret. Biblioteket MPU9250.h Det er veldig nyttig å lette programmering, og i vårt eksempel beskriver vi hvordan du leser rå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);
}

Denne koden leser de tre komponentene i akselerasjon. Gyroskop- og magnetometeravlesninger kan gjøres på samme måte ved å bruke metodene getGyroX_rads() y getMagX_uT() henholdsvis.

Praktiske applikasjoner

Det er flere applikasjoner hvor MPU9250 blir et uunnværlig verktøy. La oss utforske noen av de viktigste:

  • Droner og robotikk: En av de vanligste bruksområdene til MPU9250 er i flystabiliserings- og robotsystemer, hvor det er viktig å oppnå sanntidsorientering.
  • Virtuell virkelighet: Ved nøyaktig å fange orientering og bevegelse, kan sensoren brukes til sporing i videospillapplikasjoner eller virtuelle virkelighetssimulatorer.
  • Navigasjonssystemer: I kombinasjon med andre sensorer, som GPS, brukes MPU9250 i treghetsnavigasjon for å forstå bevegelser og oppdage orientering.

Magnetometer kalibrering

Et av de viktigste trinnene når du bruker MPU9250 er magnetometer kalibrering. Magnetometeret er avgjørende for å eliminere feil generert av det magnetiske miljøet (som bygningsopptak eller forstyrrelser fra annet elektronisk utstyr), så å utføre riktig kalibrering er avgjørende for nøyaktige målinger.

For å kalibrere magnetometeret riktig, kan vi bruke RTIMULib-Arduino-biblioteket. Her er et enkelt kalibreringsprogram:

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

Koden ovenfor leser dataene fra magnetometeret slik at du kan gjøre bevegelser på aksene og dekke hele spekteret av mulige avlesninger. Dette hjelper til med å identifisere magnetfeltforvrengninger og forbedre orienteringsberegninger.

Filtre for å forbedre presisjonen

For å forbedre nøyaktigheten til MPU9250-avlesningene er en av de vanligste tilnærmingene filterimplementering som kombinerer dataene hentet fra gyroskopet, akselerometeret og magnetometeret.

El komplementært filter Det er en effektiv og enkel løsning å implementere. Dette filteret er avhengig av gyroskopet for å få raske resultater, mens akselerometeret og magnetometeret korrigerer langsiktige avvik fra gyroskopet (kjent som drift). En enkel kode som implementerer dette filteret kan sees i følgende eksempel:

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

Dette filteret er viktig for å eliminere gyroskopdrift og generere en mer stabil orientering. I tillegg er det mye raskere å kjøre på mikrokontrollere som Arduino enn andre mer komplekse metoder som Kalman-filteret, som bruker mer ressurser.

MPU9250 er en utrolig allsidig løsning for en lang rekke prosjekter som krever nøyaktig orientering og bevegelsesmåling. Å koble den til en Arduino og få grunnleggende avlesninger er relativt enkelt, og ved å implementere noen få filtre kan du få svært nøyaktige og nyttige resultater for et bredt spekter av applikasjoner.


Bli den første til å kommentere

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.