Inertia-anturien maailma on kehittynyt nopeasti, ja MPU9250:n kaltaisista laitteista, jotka yhdistävät kiihtyvyysmittarin, gyroskoopin ja magnetometrin yhdeksi moduuliksi, on tullut avainkappale robotiikkaprojekteissa, droneissa ja järjestelmissä, jotka vaativat pienten ja suurten liikkeiden tarkkaa taltiointia. Tässä artikkelissa aiomme tutkia, miten tätä anturia käytetään Arduinon kanssa, mitkä ovat sen merkittäviä ominaisuuksia, sekä joitain koodiesimerkkejä sen käytön aloittamiseksi.
MPU9250:n käyttäminen ei ole hyödyllistä vain harrastajille, vaan myös ammattilaisille, joiden on mitattava suuntaa ja liikettä tarkasti. Tämä ratkaisu mahdollistaa stabilointijärjestelmien, autonomisten ajoneuvojen ja robottien kehittämisen, jotka edellyttävät liikkeidensä tuntemista eri akseleissa. Anturin monipuolisuus sekä sen tarkkuus ja alhaiset kustannukset ovat ansainneet sille vankan maineen kehittäjien keskuudessa.
Mikä on MPU9250?
El MPU9250 Se on moduuli, joka sisältää kiihtyvyysanturi, gyroskooppi ja magnetometri yhdellä laitteella. Tämän yhdistelmän avulla anturi pystyy mittaamaan sekä lineaarista kiihtyvyyttä ja kulmanopeutta että ympäristönsä magneettikenttää. Tässä Invensense-anturissa on 9 vapausastetta, mikä tarkoittaa, että se voi mitata kolmella eri akselilla, sekä kiihtyvyyden, pyörimisen (gyroskooppi) että magneettikentän (magnetometri), mikä antaa mahdollisuuden laskea laitteen koko suunta.
Moduuli on suunniteltu kommunikoi SPI:n tai I2C:n avulla, jonka avulla se voidaan helposti yhdistää avoimen lähdekoodin alustoihin, kuten Arduino tai Raspberry Pi. Lisäksi kiitos Digital Motion Processor (DMP), pystyy suorittamaan monimutkaisia laskelmia yhdistääkseen kolmen anturin saamat tiedot ja tuottaakseen tarkempia mittauksia.
MPU9250:n tärkeimmät ominaisuudet
MPU9250 erottuu joukosta ominaisuuksia, jotka tekevät siitä erittäin mielenkiintoisen moduulin projekteihin, jotka vaativat tarkkoja liikkeitä, mukaan lukien:
- Kiihtyvyysanturi: Säädettävä kiihtyvyysalue välillä ±2g, ±4g, ±8g ja ±16g.
- Gyroskooppi: Ohjelmoitava toiminta-alue ±250°/s, ±500°/s, ±1000°/s, ±2000°/s.
- Magnetometri: Herkkyys 0.6 µT/LSB ja ohjelmoitava alue jopa 4800 µT.
- Energiankulutus: Erittäin matala, ihanteellinen kannettaville laitteille tai laitteille, jotka vaativat käyttöä pitkiä aikoja (3.5 mA aktiivisessa tilassa).
MPU9250-moduulin yhdistäminen Arduinoon
Moduulin liittäminen Arduinoon on yksinkertainen toimenpide, koska se toimii I2C-protokollan kautta. Hän tyypillinen kytkentäkaavio MPU9250:n ja a Arduino Uno on:
- VCC: Liitä 3.3 V:iin.
- GND: maahan (GND).
- SDA: Yhdistä se Arduinon nastan A4.
- SCL: Yhdistä se Arduinon nastan A5.
On tärkeää varmistaa, että virta on oikea, jotta anturi voi toimia kunnolla. Useimmissa moduuleissa on jo jännitteensäädin, joka pystyy käyttämään Arduinon 5 V:tä vahingoittamatta sitä.
Koodiesimerkkejä MPU9250:lle
Alla näytämme, kuinka voit aloittaa MPU9250:n ohjelmoinnin Arduinossa lukemalla tietoja kiihtyvyysmittarista, gyroskoopista ja magnetometristä. Kirjasto MPU9250.h
Se on erittäin hyödyllistä ohjelmoinnin helpottamiseksi, ja esimerkissämme kerromme, kuinka raakadataa luetaan:
#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);
}
Tämä koodi lukee kiihtyvyyden kolme komponenttia. Gyroskoopin ja magnetometrin lukemat voidaan tehdä samalla tavalla menetelmillä getGyroX_rads()
y getMagX_uT()
vastaavasti.
Käytännön sovellukset
On monia sovelluksia, joissa MPU9250:stä tulee välttämätön työkalu. Tarkastellaanpa joitain tärkeimmistä:
- Dronit ja robotiikka: Yksi MPU9250:n yleisimmistä käyttötavoista on lennonvakautus- ja robotiikkajärjestelmissä, joissa reaaliaikainen suuntautuminen on välttämätöntä.
- Virtuaalitodellisuus: Kun anturi tallentaa tarkasti suunnan ja liikkeen, sitä voidaan käyttää seuraamiseen videopelisovelluksissa tai virtuaalitodellisuussimulaattoreissa.
- Navigointijärjestelmät: Yhdessä muiden antureiden, kuten GPS:n, kanssa MPU9250:tä käytetään inertianavigaatiossa liikkeiden ymmärtämiseen ja suunnan havaitsemiseen.
Magnetometrin kalibrointi
Yksi tärkeimmistä vaiheista MPU9250:tä käytettäessä on magnetometrin kalibrointi. Magnetometri on välttämätön magneettisen ympäristön aiheuttamien virheiden (kuten rakennusmateriaalin tai muiden elektronisten laitteiden aiheuttamien häiriöiden) eliminoimiseksi, joten asianmukainen kalibrointi on erittäin tärkeää tarkkojen mittausten kannalta.
Magnetometrin kalibroimiseksi oikein voimme käyttää RTIMULib-Arduino-kirjastoa. Tässä on yksinkertainen kalibrointiohjelma:
#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();
}
}
Yllä oleva koodi lukee magnetometrin tiedot, jotta voit tehdä liikkeitä akseleilla ja kattaa kaikki mahdolliset lukemat. Tämä auttaa tunnistamaan magneettikentän vääristymät ja parantamaan suuntalaskelmia.
Suodattimet tarkkuuden parantamiseksi
MPU9250-lukemien tarkkuuden parantamiseksi yksi yleisimmistä lähestymistavoista on suodattimen toteutus jotka yhdistävät gyroskoopista, kiihtyvyysmittarista ja magnetometristä saadut tiedot.
El täydentävä suodatin Se on tehokas ja yksinkertainen ratkaisu toteuttaa. Tämä suodatin luottaa gyroskooppiin saadakseen nopeita tuloksia, kun taas kiihtyvyysanturi ja magnetometri korjaavat pitkän aikavälin poikkeamat gyroskoopista (tunnetaan nimellä drift). Yksinkertainen koodi, joka toteuttaa tämän suodattimen, näkyy seuraavassa esimerkissä:
#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);
}
Tämä suodatin on välttämätön gyroskoopin ajautumisen poistamiseksi ja vakaamman suunnan luomiseksi. Lisäksi se on paljon nopeampi suorittaa mikro-ohjaimilla, kuten Arduino, kuin muut monimutkaisemmat menetelmät, kuten Kalman-suodatin, joka kuluttaa enemmän resursseja.
MPU9250 on uskomattoman monipuolinen ratkaisu monenlaisiin projekteihin, jotka vaativat tarkkaa suuntausta ja liikkeen mittausta. Sen yhdistäminen Arduinoon ja peruslukemien saaminen on suhteellisen yksinkertaista, ja ottamalla käyttöön muutamia suodattimia voit saada erittäin tarkkoja ja hyödyllisiä tuloksia monenlaisiin sovelluksiin.