Inertsiaalsete andurite maailm on kiiresti arenenud ja seadmed, nagu MPU9250, mis ühendavad kiirendusmõõturi, güroskoopi ja magnetomeetri ühes moodulis, on muutunud võtmeelemendiks robootikaprojektide, droonide ja süsteemide jaoks, mis nõuavad väikeste ja suurte liikumiste täpset jäädvustamist. Selles artiklis uurime, kuidas seda andurit koos Arduinoga kasutada, millised on selle märkimisväärsed funktsioonid ja mõned koodinäited sellega alustamiseks.
MPU9250 kasutamine pole kasulik mitte ainult harrastajatele, vaid ka professionaalidele, kes peavad täpselt mõõtma orientatsiooni ja liikumist. See lahendus võimaldab arendada stabiliseerimissüsteeme, autonoomseid sõidukeid ja roboteid, mis nõuavad nende liikumiste tundmist erinevatel telgedel. Anduri mitmekülgsus koos täpsuse ja madala hinnaga on toonud sellele arendajate seas kindla maine.
Mis on MPU9250?
El MPU9250 See on moodul, mis sisaldab kiirendusmõõtur, güroskoop ja magnetomeeter ühes seadmes. Selle kombinatsiooniga on andur võimeline mõõtma nii lineaarset kiirendust ja nurkkiirust kui ka oma keskkonna magnetvälja. Sellel Invensense anduril on 9 vabadusastet, mis tähendab, et see suudab mõõta kolmel erineval teljel, nii kiirendust, pöörlemist (güroskoop) kui ka magnetvälja (magnetomeeter), andes seega võimaluse arvutada seadme täielik orientatsioon.
Moodul on mõeldud suhelda SPI või I2C abil, mis võimaldab selle hõlpsasti ühendada avatud lähtekoodiga platvormidega nagu Arduino või Raspberry Pi. Lisaks, tänu Digitaalne liikumisprotsessor (DMP), on võimeline tegema keerulisi arvutusi, et ühendada kolme anduriga saadud andmed ja anda täpsemaid mõõtmisi.
MPU9250 peamised omadused
MPU9250 paistab silma suure hulga funktsioonide poolest, mis muudavad selle väga huvitavaks mooduliks projektide jaoks, mis nõuavad täpsete liikumiste jäädvustamist, sealhulgas:
- Kiirendusmõõtur: Reguleeritav kiirenduse vahemik ±2g, ±4g, ±8g ja ±16g.
- Güroskoop: Programmeeritav vahemik ±250°/s, ±500°/s, ±1000°/s, ±2000°/s.
- Magnetomeeter: Tundlikkus 0.6 µT/LSB ja programmeeritav vahemik kuni 4800 µT.
- Energiatarve: Väga madal, ideaalne kaasaskantavatele seadmetele või seadmetele, mis vajavad pikka aega töötamist (3.5 mA aktiivses režiimis).
MPU9250 mooduli ühendamine Arduinoga
Mooduli ühendamine Arduinoga on lihtne protseduur, kuna see töötab I2C protokolli kaudu. Ta tüüpiline ühendusskeem MPU9250 ja a Arduino Uno on:
- VCC: ühendage 3.3 V.
- GND: maandusse (GND).
- SDA: Ühendage see Arduino kontaktiga A4.
- SCL: Ühendage see Arduino kontaktiga A5.
Anduri nõuetekohaseks toimimiseks on oluline tagada, et toide oleks õige. Enamikul moodulitel on juba pingeregulaator, et saaks kasutada Arduino 5 V pinget ilma seda kahjustamata.
Koodinäited MPU9250 jaoks
Allpool näitame teile, kuidas saate alustada MPU9250 programmeerimist Arduinos, lugedes andmeid kiirendusmõõturilt, güroskoobilt ja magnetomeetrilt. raamatukogu MPU9250.h
See on väga kasulik programmeerimise hõlbustamiseks ja meie näites kirjeldame üksikasjalikult toorandmete lugemist:
#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);
}
See kood loeb kolme kiirenduse komponenti. Meetodeid kasutades saab sarnaselt teha güroskoobi ja magnetomeetri näitu getGyroX_rads()
y getMagX_uT()
vastavalt.
Praktilised rakendused
On mitmeid rakendusi, kus MPU9250 muutub asendamatuks tööriistaks. Uurime mõnda kõige olulisemat:
- Droonid ja robootika: Üks levinumaid MPU9250 kasutusalasid on lennu stabiliseerimis- ja robootikasüsteemides, kus reaalajas orienteerumise saamine on hädavajalik.
- Virtuaalne reaalsus: Täpselt orientatsiooni ja liikumist jäädvustades saab andurit kasutada videomängurakendustes või virtuaalreaalsuse simulaatorites jälgimiseks.
- Navigatsioonisüsteemid: Koos teiste anduritega, nagu GPS, kasutatakse MPU9250 inertsiaalses navigatsioonis liikumiste mõistmiseks ja orientatsiooni tuvastamiseks.
Magnetomeetri kalibreerimine
Üks olulisemaid samme MPU9250 kasutamisel on magnetomeetri kalibreerimine. Magnetomeeter on hädavajalik magnetilise keskkonna tekitatud vigade (nagu näiteks ehitusmaterjali või muude elektroonikaseadmete tekitatud häirete) kõrvaldamiseks, seega on õige kalibreerimine täpsete mõõtmiste jaoks ülioluline.
Magnetomeetri korrektseks kalibreerimiseks saame kasutada RTIMULib-Arduino raamatukogu. Siin on lihtne kalibreerimisprogramm:
#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();
}
}
Ülaltoodud kood loeb magnetomeetri andmeid, et saaksite telgedel liigutada ja katta kõiki võimalikke näitude vahemikku. See aitab tuvastada magnetvälja moonutusi ja parandada orientatsiooni arvutamist.
Filtrid täpsuse parandamiseks
MPU9250 näitude täpsuse parandamiseks on üks levinumaid lähenemisviise filtri rakendamine mis ühendavad güroskoopilt, kiirendusmõõturilt ja magnetomeetrilt saadud andmed.
El täiendav filter See on tõhus ja lihtsalt rakendatav lahendus. See filter tugineb kiirete tulemuste saamiseks güroskoobile, samas kui kiirendusmõõtur ja magnetomeeter korrigeerivad pikaajalisi kõrvalekaldeid güroskoobist (tuntud kui triivimine). Seda filtrit rakendavat lihtsat koodi saab näha järgmises näites:
#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);
}
See filter on oluline güroskoobi triivimise kõrvaldamiseks ja stabiilsema orientatsiooni loomiseks. Lisaks on seda mikrokontrolleritel, nagu Arduino, palju kiirem käivitada kui teisi keerukamaid meetodeid, nagu Kalmani filter, mis tarbib rohkem ressursse.
MPU9250 on uskumatult mitmekülgne lahendus mitmesuguste projektide jaoks, mis nõuavad täpset orientatsiooni ja liikumise mõõtmist. Selle ühendamine Arduinoga ja põhinäitude hankimine on suhteliselt lihtne ning mõne filtri rakendamisega saate väga täpseid ja kasulikke tulemusi paljude rakenduste jaoks.