MPU-6050 aparține unei clase de dispozitive cunoscute sub numele de unități de măsurare inerțiale sau IMU. Aceste dispozitive pot măsura accelerația, inerția și o serie de alți parametri pentru a vă permite să determinați poziția și viteza lor în spațiu.
IMU-urile precum MPU-6050 sunt în diferite
aplicații precum:
-
UAV-uri precum quadcoptere și
elicoptere. Aici se folosește un IMU pentru a determina rotirea, înclinarea și
rostogolirea și pentru a nivela dispozitivele în timpul zborului.
-
Robotică. De la roboți de
echilibrare la brațele robotului, este obișnuit să folosiți IMU-uri pentru a
stabili poziția și viteza.
-
Controlere de joc. Jocuri precum
Wii folosesc un IMU pentru a detecta nivelul și mișcarea.
-
Telefoane și tablete. Este
obișnuit să găsiți IMU-uri în telefoane și tablete pentru a determina
orientarea dispozitivului pentru a comuta între modurile portret și peisaj sau
în jocuri de exemplu.
-
Hard disk-uri. Un IMU sau un
accelerometru este inclus în hard disk-urile concepute pentru utilizare
portabilă. Ei pot detecta dacă unitatea este scăpată și pot lua măsurile
adecvate, cum ar fi oprirea platourilor și blocarea capetelor.
Accelerometru
Una dintre componentele cheie ale MPU-6050
este un accelerometru. După cum sugerează și numele, acesta este un dispozitiv
care poate măsura accelerația.
Accelerația este descrisă ca fiind rata de
schimbare a vitezei unui obiect. Un obiect care se mișcă cu o viteză constantă
nu are nicio accelerație.
O unitate comună de accelerație este forța G.
O forță G aici pe Pământ este de 9,9 metri pe secundă pătrat, care este
accelerația gravitației aici. Pe alte planete, cifra este diferită.
Un accelerometru trebuie să ia în considerare
accelerația statică, cum ar fi forța gravitațională, atunci când face
măsurătorile.
Accelerometrul utilizat în MPU-6050 este un
accelerometru cu trei axe, ceea ce înseamnă că detectează accelerația pe axa X,
Y și Z.
Giroscop
O altă componentă cheie a MPU-6050 este un
giroscop.
Un giroscop poate măsura momentul unghiular
sau rotația de-a lungul axei X, Y și Z. Aceste componente sunt critice în
menținerea echilibrului pentru aeronave și nave spațiale.
Un giroscop mecanic constă dintr-o roată sau
un disc montat astfel încât să se poată roti rapid în jurul unei axe care este
liberă să se miște în orice direcție.
MPU-6050 poate folosi și senzori externi.
Aceste dispozitive externe sunt interfațate cu MPU-6050 folosind o a doua
magistrală I2C, independentă de magistrala I2C principală.
O utilizare comună pentru această conexiune
externă este atașarea unui magnetometru, care poate măsura câmpurile magnetice
pe trei axe.
Acest lucru adaugă încă trei grade de
libertate, sau DOF, la senzor. În sine, MPU-6050 are 6 DOF, câte trei pentru
accelerometru și giroscop. Adăugarea unui magnetometru i-ar da 9 DOF.
MPU-6050 are și un senzor intern de
temperatură.
DMP
Datele de la accelerometru, giroscop și orice senzori terți sunt transmise unui procesor intern de mișcare digitală sau DMP.
Acest dispozitiv corelează datele și le formatează pentru a fi utilizate pe magistrala I2C. Este în esență un microprocesor de înaltă performanță care este dedicat procesării datelor de mișcare.
Termenul DMP a fost inventat de Invensense, o divizie a TDK. Aceasta este compania care a dezvoltat MPU-6050, împreună cu multe alte IMU-uri.
Pinouts
MPU-6050 este disponibil în mai multe configurații diferite și pe mai multe module de breakout diferite.
Iată o ilustrare a pinout-urilor modulului pe care îl folosesc în aceste experimente:
Acest modul are un regulator intern de
tensiune, deci este alimentat cu o putere de 5 volți. Cipul MPU-6050 în sine
folosește logica de 3,3 volți. Modulul are și rezistențe pentru a schimba
nivelurile de date la 3,3 volți.
Descrierile de pin ale modulului sunt după cum urmează:
VCC – sursă de alimentare de 5 volți DC.
GND – Pământ
SCL – Aceasta este linia de ceas I2C.
SDA – Linia de date I2C.
XDA – Aceasta este linia externă de date I2C.
Busul extern I2C este pentru conectarea senzorilor externi.
XCL – Aceasta este linia externă de ceas I2C.
AD0 – Această linie vă permite să schimbați
adresa internă I2C a modulului MPU-6050. Poate fi folosit dacă modulul h este
în conflict cu un alt dispozitiv I2C sau dacă doriți să utilizați două MPU-6050
pe aceeași magistrală I2C.
INT – Aceasta este ieșirea de întrerupere.
Dacă utilizați un alt modul, puteți în
continuare să efectuați experimentele enumerate aici. Acordați atenție
cerințelor de alimentare ale modulului dvs., deoarece unele nu au un regulator
intern de tensiune și funcționează pe logica de 3,3 volți.
Rețineți că modulul are și marcaje de orientare, pentru a vă permite să-l poziționați corect în dispozitiv.
MPU-6050 cu Arduino
Înainte de a construi nivelul nostru
electronic, să facem un experiment folosind MPU-6050. Pentru a ușura lucrurile,
vom folosi câteva biblioteci și vom rula o schiță demonstrativă care este
inclusă cu una dintre ele.
Biblioteci I2C și MPU-6050
Bibliotecile pe care le vom folosi în
demonstrația noastră fac parte din colecția de biblioteci dezvoltată de Jeff
Rowberg pentru a lucra cu magistrala I2C și câțiva senzori I2C obișnuiți.
Puteți găsi setul complet de biblioteci pe Github.
Aceasta este o colecție extinsă de biblioteci, nu numai pentru Arduino, ci și pentru o serie de alte microcontrolere comune.
Deoarece este puțin copleșitor, s-ar putea să vă fie util doar să obțineți cele două biblioteci pe care le vom folosi astăzi - biblioteca de dezvoltare I2C și biblioteca MPU-6050.
Dacă doriți mai multe informații despre acest set excelent de biblioteci, vizitați pagina web a lui Jeff dedicată dezvoltării I2C.
Aceste biblioteci sunt furnizate în format ZIP. Puteți instala fișierele ZIP direct în IDE-ul dvs. Arduino.
Deschideți IDE-ul Arduino.
Selectați meniul Schiță din bara de meniu de
sus.
Selectați Includeți biblioteca. Se va deschide
un submeniu.
Selectați Adăugați bibliotecă ZIP.
Se va deschide o casetă de dialog. Navigați
până unde ați salvat bibliotecile și selectați una dintre ele.
Biblioteca va fi instalată în IDE-ul dvs.
Arduino.
Va trebui să repetați acest pas pentru a doua
bibliotecă.
Acum că aveți cele două biblioteci adăugate la
IDE-ul dvs. Arduino, este timpul să conectați MPU-6050 la Arduino/
MPU-6050 și Arduino Hookup
Iată legătura pe care o vom folosi pentru
experiment:
Conexiunile sunt destul de simple, deoarece
interfețele MPU-6050 folosesc magistrala I2C. Pe Arduino Uno, conexiunile I2C
sunt realizate folosind pinii de intrare analogic, A4 este conexiunea SDA și A5
este SCL.
De asemenea, folosim ieșirea de întrerupere de la MPU-6050. Aceasta se conectează la pinul 2 de pe Arduino Uno, care este numărul de întrerupere 0.
Schiță demonstrativă
Când aveți totul conectat, încercați să rulați
una dintre schițele demonstrative furnizate în biblioteca MPU-6050 pe care
tocmai am instalat-o.
Deschideți IDE-ul Arduino.
Selectați meniul Fișier din bara de meniu de
sus.
Selectați Exemple. Se va deschide un submeniu.
Derulați în jos submeniul până la secțiunea
intitulată Exemple din biblioteci personalizate.
Căutați intrarea MPU6050 și selectați-o.
Se va deschide un alt submeniu care spune
Exemple. Selectați-l și vor fi listate două exemple de schițe
Selectați schița MPU6050_DMP6.
Schița este destul de complexă, dar este
foarte bine comentată. Vă va oferi o idee despre cât de multă matematică este
implicată în extragerea de informații utile din senzorul MPU-6050.
Rețineți că va trebui să setați monitorul
serial la o viteză de 115200 baud pentru a încerca schița. Există o mulțime de
date care sunt trimise înapoi de la IMU și necesită această viteză mai mare
pentru a le afișa.
Când deschideți monitorul serial cu schița
încărcată pe Arduino, ar trebui să vedeți un mesaj care spune că conexiunea la
MPU-6050 a fost realizată cu succes. Pentru a începe să rulați schița, trebuie
să plasați cursorul în caseta de introducere a monitorului serial și să tastați
o literă, apoi apăsați Trimitere (sau doar apăsați Enter de pe tastatură).
Veți vedea o mulțime de date care afișează valorile
Yaw, Pitch și Roll. Încercați să mutați senzorul și observați cum se modifică
datele.