Inhoudsopgave:

Hoe de GY511-module met Arduino te gebruiken [Maak een digitaal kompas] - Ajarnpa
Hoe de GY511-module met Arduino te gebruiken [Maak een digitaal kompas] - Ajarnpa

Video: Hoe de GY511-module met Arduino te gebruiken [Maak een digitaal kompas] - Ajarnpa

Video: Hoe de GY511-module met Arduino te gebruiken [Maak een digitaal kompas] - Ajarnpa
Video: GY-271. Цифровой магнитометр и Ардуино. Делаем компас 2024, November
Anonim
Hoe de GY511-module met Arduino te gebruiken [Maak een digitaal kompas]
Hoe de GY511-module met Arduino te gebruiken [Maak een digitaal kompas]

Overzicht

In sommige elektronicaprojecten moeten we op elk moment de geografische locatie weten en dienovereenkomstig een specifieke bewerking uitvoeren. In deze tutorial leer je hoe je de LSM303DLHC GY-511 kompasmodule met Arduino gebruikt om een digitaal kompas te maken. Eerst leer je over deze module en hoe deze werkt, en dan zul je zien hoe je de LSM303DLHC GY-511-module met Arduino kunt verbinden.

Wat je gaat leren

  • Welke kompasmodule is dat?
  • Kompasmodule en Arduino-interface.
  • Maak een digitaal kompas met de GY-511 module en Arduino.

Stap 1: Algemene informatie over de kompasmodule

Algemene informatie over kompasmodule
Algemene informatie over kompasmodule

De GY-511-module bevat een 3-assige versnellingsmeter en een 3-assige magnetometer. Deze sensor kan de lineaire versnelling meten bij volledige schalen van ± 2 g / ± 4 g / ± 8 g / ± 16 g en magnetische velden bij volledige schalen van ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 / ± 8,1 Gauss.

Wanneer deze module in een magnetisch veld wordt geplaatst, induceert volgens de Lorentz-wet een excitatiestroom in zijn microscopisch kleine spoel. De kompasmodule zet deze stroom om in de differentiële spanning voor elke coördinaatrichting. Met behulp van deze spanningen kunt u het magnetische veld in elke richting berekenen en de geografische positie verkrijgen.

Tip

QMC5883L is een andere veelgebruikte kompasmodule. Deze module, die een vergelijkbare structuur en toepassing heeft als de LMS303-module, is iets anders in prestaties. Dus als u de projecten uitvoert, wees dan voorzichtig met uw moduletype. Als uw module QMC5882L is, gebruikt u de juiste bibliotheek en codes die ook in de zelfstudie zijn opgenomen.

Stap 2: Vereiste componenten

Vereiste componenten
Vereiste componenten

Hardware onderdelen

Arduino UNO R3 *1

GY-511 3-assige versnellingsmeter + magnetometer * 1

TowerPro-servomotor SG-90 *1

1602 LCD-module * 1

Truien *1

Software-apps

Arduino IDE

Stap 3: Interface GY-511 kompasmodule met Arduino

Interface GY-511 kompasmodule met Arduino
Interface GY-511 kompasmodule met Arduino
Interface GY-511 kompasmodule met Arduino
Interface GY-511 kompasmodule met Arduino

De GY-511-kompasmodule heeft 8 pinnen, maar je hebt er maar 4 nodig om te communiceren met Arduino. Deze module communiceert met Arduino via het I2C-protocol, dus sluit de SDA (I2C-uitgang) en SCK (I2C-klokingang) pinnen van de module aan op de I2C-pinnen op het Arduino-bord.

Opmerking Zoals u kunt zien, hebben we de GY-511-module in dit project gebruikt. Maar u kunt deze instructie gebruiken voor het instellen van andere LMS303-kompasmodules.

Stap 4: Kalibratie GY-511 kompasmodule

Om te navigeren moet je eerst de module kalibreren, dat wil zeggen het meetbereik instellen van 0 tot 360 graden. Sluit hiervoor de module aan op Arduino zoals hieronder weergegeven en upload de volgende code op uw bord. Na het uitvoeren van de code ziet u de minimum- en maximumwaarden van het meetbereik voor de X-, Y- en Z-as in het seriële monitorvenster. Je hebt deze nummers nodig in het volgende deel, dus schrijf ze op.

Stap 5: Circuit

Stroomkring
Stroomkring

Stap 6: Coderen

In deze code heb je de Wire.h-bibliotheek nodig voor I2C-communicatie en de LMS303.h-bibliotheek voor de kompasmodule. U kunt deze bibliotheken downloaden via de volgende links.

LMS303.h Bibliotheek

Wire.h-bibliotheek

Opmerking Als u QMC5883 gebruikt, hebt u de volgende bibliotheek nodig:

MechaQMC5883L.h

Hier leggen we de code voor LMS303 uit, maar u kunt ook de codes voor de QMC-module downloaden.

Laten we eens kijken naar enkele van de nieuwe functies:

kompas.enableDefault();

Module-initialisatie

kompas.lezen();

De uitvoerwaarden van de kompasmodule lezen

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

Bepalen van de minimum- en maximumwaarden van het meetbereik door de gemeten waarden te vergelijken.

Stap 7: Een digitaal kompas maken

Na het kalibreren van de module gaan we een kompas bouwen door een servomotor op de module aan te sluiten. Zodat de servo-indicator ons altijd de noordrichting laat zien, zoals de rode pijl op het kompas. Om dit te doen, berekent de kompasmodule eerst de geografische richting en stuurt deze naar Arduino en vervolgens, door een geschikte coëfficiënt toe te passen, berekent u de hoek die de servomotor moet draaien zodat de indicator naar het magnetische noorden wijst. Uiteindelijk passen we die hoek toe op de servomotor.

Stap 8: Circuit

Stroomkring
Stroomkring

Stap 9: Coderen

Code
Code

Voor dit onderdeel heb je ook de Servo.h-bibliotheek nodig, die standaard op je Arduino-software is geïnstalleerd.

Laten we eens kijken naar enkele van de nieuwe functies:

Servo Servo1;

Module-initialisatie

kompas.lezen();

Introductie van het servomotorobject

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

Initialisatie van de kompasmodule en servomotor

Het argument Servo1.attach() is het nummer van de pin die op de servomotor is aangesloten.

kompas.m_min = (LSM303::vector){-32767, -32767, -32767}; kompas.m_max = (LSM303::vector){+32767, +32767, +32767};

Met behulp van deze lijnen definieert u de minimum- en maximumwaarden voor het meten van het in het vorige deel verkregen bereik.

zwevende kop = kompas.kop ((LSM303::vector){0, 0, 1});

De functie heading() retourneert de hoek tussen de coördinaatas en een vaste as. U kunt de vaste as definiëren met een vector in het functieargument. Door hier bijvoorbeeld de (LSM303:: vector) {0, 0, 1} te definiëren, wordt de Z-as als een constante as beschouwd.

Servo1.write (kop);

De functie Servo1.write() past de gelezen waarde van de kompasmodule toe op de servomotor.

Opmerking Houd er rekening mee dat de servomotor een magnetisch veld kan hebben, het is dus beter om de servomotor op een geschikte afstand van de kompasmodule te plaatsen, zodat de kompasmodule niet afwijkt.

Aanbevolen: