Kui peate projekti looma ja selle positsioneerima, st teadma kuidas see asetatakse ruumi osas saate moodulit kasutada MPU6050. See tähendab, et see moodul on inertsiaalne mõõtühik ehk IMU (inertsiaalsed mõõtühikud), millel on 6 vabadusastet (DoF). Seda tänu 3-teljelise kiirendusmõõturi anduritele ja 3-teljelisele güroskoobile, mida see tööle rakendab.
See MPU6050 teab, kuidas sisaldav objekt on selles kasutamiseks paigutatud rakendused navigeerimine, goniomeetria, stabiliseerimine, žestide juhtimine jne. Mobiiltelefonid sisaldavad tavaliselt seda tüüpi andureid, et näiteks teatud funktsioone juhtida žestide abil, näiteks peatumine nutitelefoni ümberpööramise korral, videomängudes sõidukite juhtimine, pöörates mobiiltelefoni justkui roolina jne.
Mis on kiirendusmõõtur ja güroskoop?
Noh, lähme osade kaupa. Esimene asi on vaadata, mis seda tüüpi andurid on suudavad tuvastada kiirendust ja pöördeid, nagu nende endi nimedest järeldada võib.
- Kiirendusmõõtur: mõõdab kiirendust, see tähendab kiiruse muutust ajaühikus. Pidage meeles, et füüsikas on kiiruse muutus ajaga (a = dV / dt) muutus. Newtoni teise seaduse kohaselt on meil ka see, et a = F / m ja seda kasutavad kiirendusmõõturid töötamiseks, st nad kasutavad objekti jõu ja massi parameetreid. Selleks, et seda saaks elektroonikas rakendada, kasutatakse MEMS (Micro Electro Mechanical Systems) tehnikaid, mis erinevad tavapärastest kiipide valmistamise tehnikatest, kuna mehaanilised osad luuakse MEMS-is. Sel juhul luuakse rööpad või elemendid, mis on võimelised mõõtma kiirendusi. See tähendab, et võib võtta palju muid ühikuid, näiteks kiirus (kui kiirendus on ajas integreeritud), kui see on uuesti integreeritud, on meil nihe jne. See tähendab, väga huvitavad parameetrid objekti asukoha teadmiseks või liikumise tuvastamiseks.
- güroskoop: nimetatakse ka güroskoopiks, see on seade, mis mõõdab objekti nurkkiirust, see tähendab nurga nihet ajaühiku kohta või seda, kui kiiresti keha oma telje ümber pöörleb. Sel juhul kasutatakse selle kiiruse mõõtmiseks ka MEMS-tehnikaid, kasutades Coriolise nime all tuntud efekti. Tänu sellele saab mõõta nurkkiirust või integreerida nurkkiirust aja suhtes, saada nurknihke.
MPU6050 moodul
Nüüd, kui teate, mis on kiirendusmõõtur ja güroskoop, MPU6050 moodul See on elektrooniline tahvel, mis integreerib need kaks elementi, et saaksite mõõta neid muutusi elemendi asendis ja seega oleks võimalik reaktsiooni tekitada. Näiteks kui objekt liigub, süttib LED või muud palju keerulisemad asjad.
Nagu ma ütlesin, sellel on 6 vabaduse telge, DoF, 3-teljeline X-, Y- ja Z-kiirenduse kiirendusmõõtur ning muu 3-teljeline güroskoop nurkkiiruse mõõtmiseks. Mõõtmiseks peate arvestama, et moodulit ja pöörlemissuunda ei vea, kuna vale märgi tegemisel on see veidi kaootiline. Vaadake järgmist pilti, kus see määrab telgede suuna (pange tähele, et ka PCB ise on selle ühele küljele trükitud):
Arvestades seda ja pinout, on teil MPU6050 kasutamise alustamiseks kõik enam-vähem selge. Nagu näete eelmiselt pildilt, on ühendused üsna lihtsad ja võimaldavad I2C-sidet ühildada enamiku mikrokontrolleritega, sealhulgas Arduinoga. SCL- ja SDA-tihvtidel on tahvlil Arduino plaadiga otseseks ühendamiseks ülestakistus, nii et te ei pea nende lisamise pärast muretsema.
I2C-siinis mõlema suunaga töötamiseks võite neid kasutada tihvtid ja suunad:
- AD0 = 1 või kõrge (5v): I0C aadressi 69x2 jaoks.
- AD0 = 0 või madal (GND või Nc): I0C-siini aadressi 68x2 jaoks.
Pidage meeles, et mudeli tööpinge on 3v3, kuid õnneks on sellel sisseehitatud regulaator, nii et seda saab Arduino 5v-ga probleemideta kasutada ja see muudab selle 3.3v-ks.
Muide, omades sisemist takistust GND-le, kui see tihvt pole ühendatud, siis aadress vaikimisi on see 0x68, kuna see ühendatakse vaikimisi maapinnaga, tõlgendades seda loogilise 0-na.
Integreerimine Arduinoga
Sa võid saada lisateavet I2C siini kohta selles artiklis. Te teate juba, et sõltuvalt Arduino lauast on bussis kasutatavad tihvtid erinevad, kuid Arduino UNO on analoognõel A4 ja A5, SDA (andmed) ja SCL (kell) jaoks vastavalt. Need on ainsad Arduino tihvtid koos 5v ja GND-ga, mis tahvlit toidavad, mida peaksite kasutama. Seega on ühendus võimalikult lihtne.
MPU6050 funktsioonide jaoks saate kasutada teeke, mille kohta saate selle lingi kohta lisateavet I2C mooduli ja siiniga MPU6050.
Arduino plaatide programmeerimine pole MPU6050 puhul liiga lihtne, seega pole see mõeldud algajatele. Lisaks, teades kiirenduste piire või nurkade vahemikke, saate kalibreerida, et teha kindlaks, mis oli täpne liikumine või kiirendus. Kuid et teil oleks vähemalt näide selle kohta, kuidas selle kasutamist kommenteerida, näete seda koodi Näide visandist teie Arduino IDE jaoks mis loeb kiirendusmõõturi ja güroskoobi poolt registreeritud väärtused:
// Bibliotecas necesarias: #include "I2Cdev.h" #include "MPU6050.h" #include "Wire.h" // Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C MPU6050 sensor; // Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z int ax, ay, az; int gx, gy, gz; void setup() { Serial.begin(57600); //Función para iniciar el puerto serie con 57600 baudios Wire.begin(); //Inicio para el bus I2C sensor.initialize(); //Iniciando del sensor MPU6050 if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente"); else Serial.println("Error al iniciar el sensor"); } void loop() { // Leer las aceleraciones y velocidades angulares sensor.getAcceleration(&ax, &ay, &az); sensor.getRotation(&gx, &gy, &gz); // Muestra las lecturas que va registrando separadas por una tabulación Serial.print("a[x y z] g[x y z]:\t"); Serial.print(ax); Serial.print("\t"); Serial.print(ay); Serial.print("\t"); Serial.print(az); Serial.print("\t"); Serial.print(gx); Serial.print("\t"); Serial.print(gy); Serial.print("\t"); Serial.println(gz); delay(100); }
Kui olete algaja ja te ei tea hästi kuidas Arduino IDE-ga programmeerida, sellest on teil raske aru saada, nii et saate tasuta lugeda meie juhendist koos Arduino programmeerimise sissejuhatava kursusega ...