Hvordan bruke GY511 -modulen med Arduino [Lag et digitalt kompass]: 11 trinn
Hvordan bruke GY511 -modulen med Arduino [Lag et digitalt kompass]: 11 trinn
Anonim
Hvordan bruke GY511 -modulen med Arduino [Lag et digitalt kompass]
Hvordan bruke GY511 -modulen med Arduino [Lag et digitalt kompass]

Oversikt

I noen elektronikkprosjekter må vi kjenne den geografiske plasseringen når som helst og utføre en spesifikk operasjon deretter. I denne opplæringen lærer du hvordan du bruker LSM303DLHC GY-511 kompassmodulen med Arduino til å lage et digitalt kompass. Først lærer du om denne modulen og hvordan den fungerer, og deretter ser du hvordan du grensesnitter LSM303DLHC GY-511-modulen med Arduino.

Hva du vil lære

  • Hvilken kompassmodul er?
  • Kompassmodul og Arduino -grensesnitt.
  • Lag et digitalt kompass med GY-511-modulen og Arduino.

Trinn 1: Generell informasjon om kompassmodul

Generell informasjon om kompassmodul
Generell informasjon om kompassmodul

GY-511-modulen inkluderer et 3-akset akselerometer og et 3-akset magnetometer. Denne sensoren kan måle den lineære akselerasjonen ved hele skalaer på ± 2 g / ± 4 g / ± 8 g / ± 16 g og magnetfelt i hele skalaer på ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 / ± 8,1 Gauss.

Når denne modulen plasseres i et magnetfelt, induserer en eksitasjonsstrøm i henhold til Lorentz -loven i den mikroskopiske spolen. Kompassmodulen konverterer denne strømmen til differensialspenningen for hver koordinatretning. Ved å bruke disse spenningene kan du beregne magnetfeltet i hver retning og få den geografiske posisjonen.

Tips

QMC5883L er en annen vanlig kompassmodul. Denne modulen, som har en lignende struktur og applikasjon som LMS303 -modulen, er litt forskjellig i ytelse. Så hvis du gjør prosjektene, vær forsiktig med modultypen. Hvis modulen din er QMC5882L, bruker du passende bibliotek og koder som også er inkludert i opplæringen.

Trinn 2: Nødvendige komponenter

Nødvendige komponenter
Nødvendige komponenter

Maskinvarekomponenter

Arduino UNO R3 *1

GY-511 3-akse akselerometer + magnetometer *1

TowerPro Servomotor SG-90 *1

1602 LCD -modul *1

Gensere *1

Programvare -apper

Arduino IDE

Trinn 3: Grensesnitt GY-511 kompassmodul med Arduino

Grensesnitt GY-511 kompassmodul med Arduino
Grensesnitt GY-511 kompassmodul med Arduino
Grensesnitt GY-511 kompassmodul med Arduino
Grensesnitt GY-511 kompassmodul med Arduino

GY-511 kompassmodul har 8 pinner, men du trenger bare 4 av dem for å koble til Arduino. Denne modulen kommuniserer med Arduino ved hjelp av I2C -protokollen, så koble SDA (I2C -utgang) og SCK (I2C -klokkeinngang) -pinnene på modulen til I2C -pinnene på Arduino -kortet.

Merk Som du ser har vi brukt GY-511-modulen i dette prosjektet. Men du kan bruke denne instruksjonen til å sette opp andre LMS303 kompassmoduler.

Trinn 4: Kalibrering av GY-511 kompassmodul

For å navigere må du først kalibrere modulen, noe som betyr å sette måleområdet fra 0 til 360 grader. For å gjøre dette, koble modulen til Arduino som vist nedenfor og last opp følgende kode på brettet ditt. Etter at koden er utført, kan du se minimums- og maksimumsverdiene for måleområdet for X-, Y- og Z -aksen i det serielle monitorvinduet. Du trenger disse tallene i neste del, så skriv dem ned.

Trinn 5: Krets

Krets
Krets

Trinn 6: Kode

I denne koden trenger du Wire.h -biblioteket for I2C -kommunikasjon og LMS303.h -biblioteket for kompassmodulen. Du kan laste ned disse bibliotekene fra følgende lenker.

LMS303.h bibliotek

Wire.h bibliotek

Merk Hvis du bruker QMC5883, trenger du følgende bibliotek:

MechaQMC5883L.h

Her forklarer vi koden for LMS303, men du kan også laste ned kodene for QMC -modulen.

La oss se noen av de nye funksjonene:

compass.enableDefault ();

Modulinitialisering

kompass.les ();

Leser utgangsverdiene til kompassmodulen

running_min.z = min (running_min.z, kompass.m.z); running_max.x = maks (running_max.x, kompass.m.x);

Bestemme minimums- og maksimumsverdiene for måleområdet ved å sammenligne måleverdiene.

Trinn 7: Lag et digitalt kompass

Etter kalibrering av modulen, skal vi bygge et kompass ved å koble en servomotor til modulen. Slik at servoindikatoren alltid viser oss nordretningen, som den røde pilen på kompasset. For å gjøre dette, beregner kompassmodulen først den geografiske retningen først og sender den til Arduino, og deretter, ved å bruke en passende koeffisient, beregner du vinkelen som servomotoren skal rotere slik at indikatoren peker mot det magnetiske nord. Til slutt bruker vi den vinkelen på servomotoren.

Trinn 8: Krets

Krets
Krets

Trinn 9: Kode

Kode
Kode

For denne delen trenger du også Servo.h -biblioteket, som er installert på Arduino -programvaren som standard.

La oss se noen av de nye funksjonene:

Servo Servo1;

Modulinitialisering

kompass.les ();

Vi presenterer servomotorobjektet

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

Initialiserer kompassmodulen og servomotoren

Servo1.attach () -argumentet er nummeret på pinnen som er koblet til servomotoren.

compass.m_min = (LSM303:: vektor) { -32767, -32767, -32767}; compass.m_max = (LSM303:: vektor) { +32767, +32767, +32767};

Ved å bruke disse linjene definerer du minimums- og maksimumsverdiene for måling av området oppnådd i forrige del.

float heading = compass.heading ((LSM303:: vektor) {0, 0, 1});

Funksjonen heading () returnerer vinkelen mellom koordinataksen og en fast akse. Du kan definere den faste aksen med en vektor i funksjonsargumentet. For eksempel, ved å definere (LSM303:: vektor) {0, 0, 1} her, blir Z -aksen betraktet som en konstant akse.

Servo1.write (overskrift);

Servo1.write () -funksjonen bruker leseverdien av kompassmodulen på servomotoren.

Merk Vær oppmerksom på at servomotoren kan ha et magnetfelt, så det er bedre å plassere servomotoren i passende avstand fra kompassmodulen, slik at den ikke får kompassmodulen til å avvike.

Anbefalt: