Hur man använder GY511 -modulen med Arduino [Gör en digital kompass]: 11 steg
Hur man använder GY511 -modulen med Arduino [Gör en digital kompass]: 11 steg
Anonim
Hur man använder GY511 -modulen med Arduino [Gör en digital kompass]
Hur man använder GY511 -modulen med Arduino [Gör en digital kompass]

Översikt

I vissa elektronikprojekt måste vi när som helst känna till den geografiska platsen och utföra en specifik operation därefter. I denna handledning lär du dig hur du använder LSM303DLHC GY-511 kompassmodulen med Arduino för att göra en digital kompass. Först lär du dig om den här modulen och hur den fungerar, och sedan ser du hur du kopplar LSM303DLHC GY-511-modulen till Arduino.

Vad du kommer att lära dig

  • Vilken kompassmodul är?
  • Kompassmodul och Arduino -gränssnitt.
  • Gör en digital kompass med GY-511-modulen och Arduino.

Steg 1: Allmän information om kompassmodul

Allmän information om kompassmodul
Allmän information om kompassmodul

GY-511-modulen innehåller en 3-axlig accelerometer och en 3-axlig magnetometer. Denna sensor kan mäta den linjära accelerationen vid fulla skalor på ± 2 g / ± 4 g / ± 8 g / ± 16 g och magnetfält vid hela skalor på ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 / ± 8,1 Gauss.

När denna modul placeras i ett magnetfält, inducerar en excitationsström enligt dess Lorentz -lag i dess mikroskopiska spole. Kompassmodulen omvandlar denna ström till differentialspänningen för varje koordinatriktning. Med hjälp av dessa spänningar kan du beräkna magnetfältet i varje riktning och få den geografiska positionen.

Dricks

QMC5883L är en annan vanligt förekommande kompassmodul. Denna modul, som har en liknande struktur och applikation som LMS303 -modulen, är något annorlunda i prestanda. Så om du gör projekten, var försiktig med din modultyp. Om din modul är QMC5882L, använd lämpligt bibliotek och koder som också ingår i självstudien.

Steg 2: Obligatoriska komponenter

Obligatoriska komponenter
Obligatoriska komponenter

Hårdvarukomponenter

Arduino UNO R3 *1

GY-511 3-axlig accelerometer + magnetometer *1

TowerPro Servomotor SG-90 *1

1602 LCD -modul *1

Byxor *1

Programvara

Arduino IDE

Steg 3: Gränssnitt GY-511 kompassmodul med Arduino

Gränssnitt GY-511 kompassmodul med Arduino
Gränssnitt GY-511 kompassmodul med Arduino
Gränssnitt GY-511 kompassmodul med Arduino
Gränssnitt GY-511 kompassmodul med Arduino

GY-511 kompassmodul har 8 stift, men du behöver bara 4 av dem för att ansluta till Arduino. Denna modul kommunicerar med Arduino med hjälp av I2C -protokollet, så anslut SDA (I2C -utgången) och SCK (I2C -klockingången) på modulen till I2C -stiften på Arduino -kortet.

Som du kan se har vi använt GY-511-modulen i detta projekt. Men du kan använda denna instruktion för att konfigurera andra LMS303 kompassmoduler.

Steg 4: GY-511 kompassmodulkalibrering

För att navigera måste du först kalibrera modulen, vilket innebär att ställa in mätområdet från 0 till 360 grader. För att göra detta, anslut modulen till Arduino enligt nedan och ladda upp följande kod på ditt kort. När koden har körts kan du se minimi- och maxvärdena för mätområdet för X-, Y- och Z -axeln i det seriella övervakningsfönstret. Du behöver dessa nummer i nästa del, så skriv ner dem.

Steg 5: Krets

Krets
Krets

Steg 6: Kod

I den här koden behöver du Wire.h -biblioteket för I2C -kommunikation och LMS303.h -biblioteket för kompassmodulen. Du kan ladda ner dessa bibliotek från följande länkar.

LMS303.h bibliotek

Wire.h bibliotek

Obs! Om du använder QMC5883 behöver du följande bibliotek:

MechaQMC5883L.h

Här förklarar vi koden för LMS303, men du kan också ladda ner koderna för QMC -modulen.

Låt oss se några av de nya funktionerna:

compass.enableDefault ();

Modulinitialisering

kompass.läs ();

Läser utgångsvärdena för kompassmodulen

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

Bestämning av lägsta och högsta värden för mätområdet genom att jämföra mätvärdena.

Steg 7: Gör en digital kompass

Efter kalibrering av modulen ska vi bygga en kompass genom att ansluta en servomotor till modulen. Så att servoindikatorn alltid visar oss norrut, som den röda pilen på kompassen. För att göra detta beräknar kompassmodulen först den geografiska riktningen först och skickar den till Arduino och sedan, genom att tillämpa en lämplig koefficient, beräknar du vinkeln som servomotorn ska rotera så att dess indikator pekar mot den magnetiska norr. Så småningom applicerar vi den vinkeln på servomotorn.

Steg 8: Krets

Krets
Krets

Steg 9: Kod

Koda
Koda

För den här delen behöver du också Servo.h -biblioteket som är installerat på din Arduino -programvara som standard.

Låt oss se några av de nya funktionerna:

Servo Servo1;

Modulinitialisering

kompass.läs ();

Vi presenterar servomotorobjektet

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

Initierar kompassmodulen och servomotorn

Argumentet Servo1.attach () är numret på stiftet som är anslutet till servomotorn.

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

Med hjälp av dessa rader definierar du lägsta och högsta värden för att mäta intervallet som erhölls i föregående del.

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

Funktionen rubrik () returnerar vinkeln mellan koordinataxeln och en fast axel. Du kan definiera den fasta axeln med en vektor i funktionsargumentet. Till exempel, här, genom att definiera (LSM303:: vektor) {0, 0, 1}, betraktas Z -axeln som en konstant axel.

Servo1.write (rubrik);

Servo1.write () -funktionen tillämpar läsvärdet av kompassmodulen på servomotorn.

Obs! Observera att servomotorn kan ha ett magnetfält, så det är bättre att placera servomotorn på lämpligt avstånd från kompassmodulen, så att den inte får kompassmodulen att avvika.

Rekommenderad: