Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
MPU-6000 on 6-teljeline liikumisjälgimisandur, millesse on integreeritud 3-teljeline kiirendusmõõtur ja 3-teljeline güroskoop. See andur on võimeline tõhusalt jälgima objekti täpset asukohta ja asukohta kolmemõõtmelisel tasapinnal. Seda saab kasutada süsteemides, mis nõuavad võimalikult täpset positsioonianalüüsi.
Selles õpetuses on illustreeritud MPU-6000 andurimooduli liidestamist arduino nanoga. Kiirenduse ja pöördenurga väärtuste lugemiseks oleme kasutanud arduino nano koos I2c adapteriga. See I2C adapter muudab ühenduse andurimooduliga lihtsaks ja usaldusväärsemaks.
Samm: vajalik riistvara:
Eesmärgi saavutamiseks vajalikud materjalid sisaldavad järgmisi riistvarakomponente:
1. MPU-6000
2. Arduino Nano
3. I2C kaabel
4. I2C Shield arduino nano jaoks
2. samm: riistvara ühendamine:
Riistvara ühendamise jaotis selgitab põhimõtteliselt anduri ja arduino nano vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:
MPU-6000 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada.
Valmis plaat on konfigureeritud I2C liidese jaoks, seega soovitame seda ühendamist kasutada, kui olete muidu agnostik.
Kõik, mida vajate, on neli juhtmest! Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil.
Neid seoseid on näidatud ülaltoodud piltidel.
3. samm: liikumise jälgimise kood:
Alustame nüüd arduino koodiga.
Andurimoodulit arduinoga kasutades kaasame Wire.h raamatukogu. Juhtmeraamatukogu sisaldab funktsioone, mis hõlbustavad i2c side anduri ja arduino plaadi vahel.
Kogu arduino kood on kasutaja mugavuse huvides toodud allpool:
#kaasake
// MPU-6000 I2C aadress on 0x68 (104)
#define Addr 0x68
tühine seadistus ()
{
// Initsialiseeri I2C kommunikatsioon kui kapten
Wire.begin ();
// Initsialiseeri jadaühendus, määrake edastuskiirus = 9600
Seriaalne algus (9600);
// Alusta I2C edastamist
Wire.beginTransmission (Addr);
// Valige güroskoobi konfiguratsiooniregister
Wire.write (0x1B);
// Täielik skaala vahemik = 2000 dps
Wire.write (0x18);
// Peata I2C edastamine
Wire.endTransmission ();
// Alusta I2C edastamist
Wire.beginTransmission (Addr);
// Kiirendusmõõturi konfiguratsiooniregistri valimine
Wire.write (0x1C);
// Kogu skaala vahemik = +/- 16g
Wire.write (0x18);
// Peata I2C edastamine
Wire.endTransmission ();
// Alusta I2C edastamist
Wire.beginTransmission (Addr);
// Valige toitehalduse register
Wire.write (0x6B);
// PLL koos xGyro viitega
Wire.write (0x01);
// Peata I2C edastamine
Wire.endTransmission ();
viivitus (300);
}
tühine tsükkel ()
{
allkirjastamata int andmed [6];
// Alusta I2C edastamist
Wire.beginTransmission (Addr);
// Valige andmeregister
Wire.write (0x3B);
// Peata I2C edastamine
Wire.endTransmission ();
// Taotlege 6 baiti andmeid
Wire.requestFrom (Addr, 6);
// Lugege 6 baiti andmeid
kui (Wire.available () == 6)
{
andmed [0] = Wire.read ();
andmed [1] = Wire.read ();
andmed [2] = Wire.read ();
andmed [3] = Wire.read ();
andmed [4] = Wire.read ();
andmed [5] = Wire.read ();
}
// Teisendage andmed
int xAccl = andmed [0] * 256 + andmed [1];
int yAccl = andmed [2] * 256 + andmed [3];
int zAccl = andmed [4] * 256 + andmed [5];
// Alusta I2C edastamist
Wire.beginTransmission (Addr);
// Valige andmeregister
Wire.write (0x43);
// Peata I2C edastamine
Wire.endTransmission ();
// Taotlege 6 baiti andmeid
Wire.requestFrom (Addr, 6);
// Lugege 6 baiti andmeid
kui (Wire.available () == 6)
{
andmed [0] = Wire.read ();
andmed [1] = Wire.read ();
andmed [2] = Wire.read ();
andmed [3] = Wire.read ();
andmed [4] = Wire.read ();
andmed [5] = Wire.read ();
}
// Teisendage andmed
int xGyro = andmed [0] * 256 + andmed [1];
int yGyro = andmed [2] * 256 + andmed [3];
int zGyro = andmed [4] * 256 + andmed [5];
// Andmete väljastamine jadamonitorile
Serial.print ("Kiirendus X-teljel:");
Serial.println (xAccl);
Serial.print ("Kiirendus Y-teljel:");
Serial.println (yAccl);
Serial.print ("Kiirendus Z-teljel:");
Serial.println (zAccl);
Serial.print ("Pöörlemise X-telg:");
Serial.println (xGyro);
Serial.print ("Y-pöörlemistelg:");
Serial.println (yGyro);
Serial.print ("Z-pöörlemistelg:");
Serial.println (zGyro);
viivitus (500);
}
Traaditeegis kasutatakse käskude kirjutamiseks ja anduri väljundi lugemiseks Wire.write () ja Wire.read ().
Serial.print () ja Serial.println () kasutatakse anduri väljundi kuvamiseks Arduino IDE jadamonitoril.
Anduri väljund on näidatud ülaltoodud pildil.
4. samm: rakendused:
MPU-6000 on liikumise jälgimise andur, mis leiab rakenduse nutitelefonide ja tahvelarvutite liikumisliideses. Nutitelefonides saab neid andureid kasutada sellistes rakendustes nagu rakenduste liigutamise käsud ja telefoni juhtimine, täiustatud mängud, liitreaalsus, panoraamfotode jäädvustamine ja vaatamine ning jalakäijate ja sõidukite navigeerimine. MotionTracking tehnoloogia võib muuta telefonid ja tahvelarvutid võimsateks 3D-intelligentseteks seadmeteks, mida saab kasutada rakendustes, alates tervise- ja treeningseirest kuni asukohapõhiste teenusteni.