MPU6050: moodul positsioneerimiseks Arduinoga

MPU6050 plaat

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?

MEMSi näited

MEMSi näited

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

MPU6050 kinnitus

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):

Andmeleht MPU6050

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

Arduino ja MPU6050 ühendus

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 ...


Ole esimene kommentaar

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.