So verwenden Sie das GY511-Modul mit Arduino [Make a Digital Compass] - Gunook
So verwenden Sie das GY511-Modul mit Arduino [Make a Digital Compass] - Gunook
Anonim
So verwenden Sie das GY511-Modul mit Arduino [Make a Digital Compass]
So verwenden Sie das GY511-Modul mit Arduino [Make a Digital Compass]

Überblick

Bei einigen Elektronikprojekten müssen wir jederzeit den geografischen Standort kennen und entsprechend eine bestimmte Operation durchführen. In diesem Tutorial erfahren Sie, wie Sie das Kompassmodul LSM303DLHC GY-511 mit Arduino verwenden, um einen digitalen Kompass zu erstellen. Zuerst lernen Sie dieses Modul und seine Funktionsweise kennen, und dann sehen Sie, wie Sie das Modul LSM303DLHC GY-511 mit Arduino verbinden.

Was du lernen wirst

  • Was ist ein Kompassmodul?
  • Kompassmodul und Arduino-Schnittstelle.
  • Machen Sie einen digitalen Kompass mit dem GY-511-Modul und Arduino.

Schritt 1: Allgemeine Informationen zum Kompassmodul

Allgemeine Informationen zum Kompassmodul
Allgemeine Informationen zum Kompassmodul

Das GY-511-Modul enthält einen 3-Achsen-Beschleunigungsmesser und einen 3-Achsen-Magnetometer. Dieser Sensor kann die Linearbeschleunigung bei Skalenendwerten von ± 2 g / ± 4 g / ± 8 g / ± 16 g und Magnetfelder bei Skalenendwerten von ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 messen / ± 8,1 Gauss.

Wird dieses Modul in ein Magnetfeld gebracht, induziert nach dem Lorentz-Gesetz in seiner mikroskopischen Spule ein Erregerstrom. Das Kompassmodul wandelt diesen Strom für jede Koordinatenrichtung in die Differenzspannung um. Mit diesen Spannungen können Sie das Magnetfeld in jede Richtung berechnen und die geografische Position ermitteln.

Spitze

QMC5883L ist ein weiteres häufig verwendetes Kompassmodul. Dieses Modul, das eine ähnliche Struktur und Anwendung wie das LMS303-Modul hat, unterscheidet sich geringfügig in der Leistung. Wenn Sie die Projekte durchführen, achten Sie also auf Ihren Modultyp. Wenn Ihr Modul QMC5882L ist, verwenden Sie die entsprechende Bibliothek und die Codes, die ebenfalls im Lernprogramm enthalten sind.

Schritt 2: Erforderliche Komponenten

Erforderliche Komponenten
Erforderliche Komponenten

Hardware-Komponenten

Arduino UNO R3 *1

GY-511 3-Achsen-Beschleunigungsmesser + Magnetometer *1

TowerPro Servomotor SG-90 *1

1602 LCD-Modul *1

Jumper * 1

Software-Apps

Arduino-IDE

Schritt 3: GY-511 Kompassmodul mit Arduino verbinden

GY-511 Kompassmodul mit Arduino verbinden
GY-511 Kompassmodul mit Arduino verbinden
GY-511 Kompassmodul mit Arduino verbinden
GY-511 Kompassmodul mit Arduino verbinden

Das Kompassmodul GY-511 hat 8 Pins, aber Sie benötigen nur 4 davon, um mit Arduino verbunden zu werden. Dieses Modul kommuniziert mit Arduino über das I2C-Protokoll, also verbinden Sie die SDA (I2C-Ausgang) und SCK (I2C-Takteingang)-Pins des Moduls mit den I2C-Pins auf der Arduino-Platine.

HinweisWie Sie sehen, haben wir in diesem Projekt das Modul GY-511 verwendet. Sie können diese Anleitung aber auch zum Einrichten anderer LMS303 Kompassmodule verwenden.

Schritt 4: Kalibrierung des GY-511 Kompassmoduls

Um zu navigieren, müssen Sie das Modul zunächst kalibrieren, d. h. den Messbereich von 0 bis 360 Grad einstellen. Verbinden Sie dazu das Modul wie unten gezeigt mit Arduino und laden Sie den folgenden Code auf Ihr Board hoch. Nach Ausführung des Codes sehen Sie im seriellen Monitorfenster die Minimal- und Maximalwerte des Messbereichs für X-, Y- und Z-Achse. Sie werden diese Nummern im nächsten Teil benötigen, also schreiben Sie sie auf.

Schritt 5: Schaltung

Schaltkreis
Schaltkreis

Schritt 6: Code

In diesem Code benötigen Sie die Bibliothek Wire.h für die I2C-Kommunikation und die Bibliothek LMS303.h für das Kompassmodul. Sie können diese Bibliotheken über die folgenden Links herunterladen.

LMS303.h Bibliothek

Wire.h-Bibliothek

HinweisWenn Sie QMC5883 verwenden, benötigen Sie die folgende Bibliothek:

MechaQMC5883L.h

Hier erklären wir den Code für LMS303, aber Sie können auch die Codes für das QMC-Modul herunterladen.

Sehen wir uns einige der neuen Funktionen an:

Kompass.enableDefault();

Modulinitialisierung

Kompass.lesen();

Auslesen der Ausgabewerte des Kompassmoduls

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

Ermittlung der Minimal- und Maximalwerte des Messbereichs durch Vergleich der Messwerte.

Schritt 7: Einen digitalen Kompass erstellen

Nach der Kalibrierung des Moduls bauen wir einen Kompass, indem wir einen Servomotor an das Modul anschließen. Damit uns die Servoanzeige immer die Nordrichtung anzeigt, wie der rote Pfeil auf dem Kompass. Dazu berechnet das Kompassmodul zuerst die geografische Richtung und sendet sie an Arduino und dann berechnen Sie durch Anwenden eines entsprechenden Koeffizienten den Winkel, um den sich der Servomotor drehen soll, damit sein Indikator auf den magnetischen Norden zeigt. Schließlich wenden wir diesen Winkel auf den Servomotor an.

Schritt 8: Schaltung

Schaltkreis
Schaltkreis

Schritt 9: Code

Code
Code

Für diesen Teil benötigen Sie auch die Servo.h-Bibliothek, die standardmäßig auf Ihrer Arduino-Software installiert ist.

Sehen wir uns einige der neuen Funktionen an:

Servo-Servo1;

Modulinitialisierung

Kompass.lesen();

Einführung in das Servomotor-Objekt

Servo1.attach (servoPin); kompass.init(); Kompass.enableDefault();

Initialisierung des Kompassmoduls und des Servomotors

Das Argument Servo1.attach() ist die Nummer des Pins, der mit dem Servomotor verbunden ist.

Kompass.m_min = (LSM303::Vektor){-32767, -32767, -32767}; Kompass.m_max = (LSM303::Vektor){+32767, +32767, +32767};

Mit diesen Zeilen definieren Sie die minimalen und maximalen Werte für die Messung des im vorherigen Teil erhaltenen Bereichs.

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

Die Funktion header() gibt den Winkel zwischen der Koordinatenachse und einer festen Achse zurück. Sie können die feste Achse mit einem Vektor im Funktionsargument definieren. Hier wird beispielsweise durch die Definition des (LSM303:: Vektor) {0, 0, 1} die Z-Achse als konstante Achse betrachtet.

Servo1.write (Überschrift);

Die Funktion Servo1.write() wendet den vom Kompassmodul gelesenen Wert auf den Servomotor an.

HinweisBeachten Sie, dass der Servomotor ein Magnetfeld haben kann, daher ist es besser, den Servomotor in einem geeigneten Abstand vom Kompassmodul zu platzieren, damit das Kompassmodul nicht abweicht.

Empfohlen: