Përmbajtje:

Si të përdorni modulin GY511 me Arduino [Bëni një busull dixhitale]: 11 hapa
Si të përdorni modulin GY511 me Arduino [Bëni një busull dixhitale]: 11 hapa

Video: Si të përdorni modulin GY511 me Arduino [Bëni një busull dixhitale]: 11 hapa

Video: Si të përdorni modulin GY511 me Arduino [Bëni një busull dixhitale]: 11 hapa
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Nëntor
Anonim
Si të përdorni modulin GY511 me Arduino [Bëni një busull dixhitale]
Si të përdorni modulin GY511 me Arduino [Bëni një busull dixhitale]

Vështrim i përgjithshëm

Në disa projekte elektronike, ne duhet të dimë vendndodhjen gjeografike në çdo moment dhe të bëjmë një operacion specifik në përputhje me rrethanat. Në këtë tutorial, do të mësoni se si të përdorni modulin e busullës LSM303DLHC GY-511 me Arduino për të bërë një busull dixhitale. Së pari, do të mësoni për këtë modul dhe si funksionon, dhe më pas do të shihni se si të ndërlidhni modulin LSM303DLHC GY-511 me Arduino.

Çfarë Do Mësoni

  • Çfarë është moduli i busullës?
  • Moduli i busullës dhe ndërfaqja Arduino.
  • Krijoni një busull dixhitale me modulin GY-511 dhe Arduino.

Hapi 1: Informacione të përgjithshme rreth modulit të busullës

Informacion i Përgjithshëm Rreth Modulit të Kompasit
Informacion i Përgjithshëm Rreth Modulit të Kompasit

Moduli GY-511 përfshin një akselerometër me 3 boshte dhe një magnetometër me 3 boshte. Ky sensor mund të masë nxitimin linear në shkallë të plotë ± 2 g / ± 4 g / ± 8 g / ± 16 g dhe fusha magnetike në shkallë të plotë ± 1.3 / ± 1.9 / ± 2.5 / ± 4.0 / ± 4.7 / ± 5.6 / ± 8.1 Gauss.

Kur ky modul vendoset në një fushë magnetike, sipas ligjit të Lorentzit një rrymë ngacmimi shkakton në spiralen e tij mikroskopike. Moduli i busullës e konverton këtë rrymë në tensionin diferencial për secilin drejtim koordinativ. Duke përdorur këto tensione, mund të llogaritni fushën magnetike në secilin drejtim dhe të merrni pozicionin gjeografik.

Këshillë

QMC5883L është një tjetër modul i busullës që përdoret zakonisht. Ky modul, i cili ka një strukturë dhe aplikim të ngjashëm me modulin LMS303, është paksa i ndryshëm në performancë. Pra, nëse jeni duke bërë projekte, jini të kujdesshëm në lidhje me llojin e modulit tuaj. Nëse moduli juaj është QMC5882L, përdorni bibliotekën dhe kodet e duhura që përfshihen gjithashtu në tutorial.

Hapi 2: Komponentët e kërkuar

Komponentët e kërkuar
Komponentët e kërkuar

Komponentet e harduerit

Arduino UNO R3 *1

GY-511 Përshpejtues 3-Bosht + Magnetometër *1

TowerPro Servo Motor SG-90 *1

1602 Moduli LCD *1

Kërcimtarët *1

Aplikacionet e Softuerit

Arduino IDE

Hapi 3: Ndërfaqja e modulit të busullës GY-511 me Arduino

Ndërfaqja e modulit të busullës GY-511 me Arduino
Ndërfaqja e modulit të busullës GY-511 me Arduino
Ndërfaqja e modulit të busullës GY-511 me Arduino
Ndërfaqja e modulit të busullës GY-511 me Arduino

Moduli i busullës GY-511 ka 8 kunja, por ju duhen vetëm 4 prej tyre për t'u ndërlidhur me Arduino. Ky modul komunikon me Arduino duke përdorur protokollin I2C, kështu që lidhni kunjat SDA (dalja I2C) dhe SCK (hyrja e orës I2C) të modulit në kunjat I2C në bordin Arduino.

Siç mund ta shihni, ne kemi përdorur modulin GY-511 në këtë projekt. Por mund ta përdorni këtë udhëzim për vendosjen e moduleve të tjera të busullës LMS303.

Hapi 4: Kalibrimi i modulit të busullës GY-511

Për të lundruar, së pari duhet të kalibroni modulin, që do të thotë të vendosni diapazonin e matjes nga 0 në 360 gradë. Për ta bërë këtë, lidhni modulin me Arduino siç tregohet më poshtë dhe ngarkoni kodin e mëposhtëm në tabelën tuaj. Pas ekzekutimit të kodit, mund të shihni vlerat minimale dhe maksimale të intervalit matës për boshtin X, Y dhe Z në dritaren e monitorit serik. Këta numra do t'ju duhen në pjesën tjetër, prandaj shkruajini ato.

Hapi 5: Qarku

Qarku
Qarku

Hapi 6: Kodi

Në këtë kod, keni nevojë për bibliotekën Wire.h për komunikim I2C dhe bibliotekën LMS303.h për modulin e busullës. Ju mund t'i shkarkoni këto biblioteka nga lidhjet e mëposhtme.

Biblioteka LMS303.h

Biblioteka Wire.h

ShënimNëse jeni duke përdorur QMC5883, do t'ju duhet biblioteka e mëposhtme:

MechaQMC5883L.h

Këtu, ne shpjegojmë kodin për LMS303, por ju mund të shkarkoni kodet edhe për modulin QMC.

Le të shohim disa nga funksionet e reja:

compass.enableDefault ();

Fillimi i modulit

busull.lexo ();

Leximi i vlerave dalëse të modulit të busullës

running_min.z = min (running_min.z, busull.m.z); running_max.x = max (running_max.x, busull.m.x);

Përcaktimi i vlerave minimale dhe maksimale të intervalit të matjes duke krahasuar vlerat e matura.

Hapi 7: Krijimi i një busull dixhital

Pas kalibrimit të modulit, ne do të ndërtojmë një busull duke lidhur një servo motor në modul. Kështu që treguesi servo, na tregon gjithmonë drejtimin verior, si shigjeta e kuqe në busull. Për ta bërë këtë, së pari moduli i busullës llogarit drejtimin gjeografik së pari dhe dërgojeni atë në Arduino dhe më pas, duke aplikuar një koeficient të përshtatshëm, do të llogaritni këndin që duhet të rrotullohet servo motori në mënyrë që treguesi i tij të tregojë veriun magnetik. Përfundimisht, ne e zbatojmë atë kënd në motorin servo.

Hapi 8: Qarku

Qarku
Qarku

Hapi 9: Kodi

Kodi
Kodi

Për këtë pjesë ju nevojitet edhe biblioteka Servo.h, e cila është e instaluar në programin tuaj Arduino si parazgjedhje.

Le të shohim disa nga funksionet e reja:

Servo Servo1;

Fillimi i modulit

busull.lexo ();

Prezantimi i objektit servo motorik

Servo1.attach (servoPin); busull.init (); compass.enableDefault ();

Fillimi i modulit të busullës dhe servo motorit

Argumenti Servo1.attach () është numri i kunjit të lidhur me servo motorin.

busull.m_min = (LSM303:: vektori) { -32767, -32767, -32767}; busull.m_max = (LSM303:: vektori) { +32767, +32767, +32767};

Duke përdorur këto rreshta ju përcaktoni vlerat minimale dhe maksimale për matjen e diapazonit të marrë në pjesën e mëparshme.

titulli notues = busulla. kreu ((LSM303:: vektori) {0, 0, 1});

Funksioni heading () kthen këndin midis boshtit koordinativ dhe një boshti fiks. Ju mund të përcaktoni boshtin fiks me një vektor në argumentin e funksionit. Për shembull, këtu, duke përcaktuar (LSM303:: vektorin) {0, 0, 1}, boshti Z konsiderohet si një bosht konstant.

Servo1.shkruani (titulli);

Funksioni Servo1.write () zbaton vlerën e lexuar nga moduli i busullës në motorin servo.

Shënim Vini re se servo motori mund të ketë një fushë magnetike, kështu që është më mirë të vendosni servo motorin në një distancë të përshtatshme nga moduli i busullës, që të mos shkaktojë devijimin e modulit të busullës.

Recommended: