Vollständige Anleitung zur Verwendung des HMC5883L mit Arduino

  • Verbindung des HMC5883L mit Arduino über I2C-Kommunikation.
  • Code zum Lesen der X-, Y- und Z-Achsen des Magnetfelds.
  • Erstellen Sie einen digitalen Kompass, indem Sie die magnetische Deklination anpassen.

Code hmc5883l arduino-3

Das Magnetometer HMC5883L ist ein Sensor, der aufgrund seiner Fähigkeit, Magnetfelder in drei Achsen zu messen, häufig in Arduino-Projekten verwendet wird. Dies macht es zu einer hervorragenden Wahl für die Entwicklung digitaler Kompasse, Navigationssysteme für Drohnen und andere autonome Fahrzeuge. Dank der I2C-Schnittstelle ist es nicht nur erschwinglich, sondern auch einfach zu integrieren, was es ideal für Einsteiger macht.

In diesem Artikel werden wir uns mit den Hauptmerkmalen des HMC5883L, seiner Verbindung mit verschiedenen Arduino-Boards und praktischen Beispielen für seine Verwendung befassen. Am Ende können Sie Ihr eigenes digitales Kompassprojekt mit Arduino umsetzen und dabei das volle Potenzial dieses leistungsstarken Sensors ausschöpfen.

Was ist der HMC5883L und wie funktioniert er?

Der HMC5883L ist ein dreiachsiges Magnetometer Es misst die Komponenten des Erdmagnetfelds in der X-, Y- und Z-Achse. Dadurch lässt sich nicht nur das Vorhandensein von Magnetfeldern erkennen, sondern auch die Ausrichtung durch Berechnungen auf der Grundlage der erhaltenen Messungen bestimmen. Diese Eigenschaften machen ihn zum idealen Sensor für die Herstellung von Orientierungssystemen, beispielsweise einem digitalen Kompass.

Der Sensor ist normalerweise in Modulen wie dem Modell GY-273 zu finden, das auch über die notwendige Elektronik verfügt, um den direkten Anschluss an Arduino-Boards oder andere Mikrocontroller zu ermöglichen. Seine Stromversorgung ist flexibel und kann sowohl mit 3.3 V als auch mit 5 V betrieben werden, was ihn hinsichtlich der Kompatibilität mit verschiedenen Systemen sehr vielseitig macht.

Arduino-Verbindungen

Die Verbindung des HMC5883L mit Arduino ist dank der verwendeten I2C-Schnittstelle wirklich einfach. Für diese Kommunikation sind nur zwei Pins erforderlich: SDA und SCL, die mit den entsprechenden Pins auf der Arduino-Platine verbunden werden müssen.

  • zu Arduino Uno, Nano und Mini: SDA wird an Pin A4 und SCL an A5 angeschlossen.
  • Wenn Sie einen Arduino Mega oder Due verwenden: SDA muss an Pin 20 und SCL an Pin 21 angeschlossen werden.
  • Im Fall des Arduino Leonardo: SDA geht an Pin 2 und SCL an Pin 3.

Vergessen wir nicht, dass das Magnetometer mit der festen I2C-Adresse 0x1E arbeitet und daher nicht geändert werden kann. Diese Adresse ist für diesen Sensortyp eindeutig, was bedeutet, dass wir nicht mehrere HMC5883L-Geräte an denselben I2C-Bus anschließen können.

Magnetfeldmessung

Die Hauptbetriebsmethode des HMC5883L ist das Lesen von Magnetfeldwerten in allen drei Achsen. Um diese Werte auf einem Arduino zu erhalten, verwenden wir eine von Jeff Rowberg entwickelte Bibliothek. Sie finden diesen Buchladen unter dein GitHub-Repository und laden Sie es zur Verwendung in der Arduino IDE herunter.

Sobald die Bibliothek installiert ist, kann der Sensor initialisiert werden und mit dem Auslesen der Magnetfeldwerte beginnen. Hier ist ein einfaches Beispiel dafür:

#include "Wire.h"
#include "I2Cdev.h"
#include "HMC5883L.h"
HMC5883L magnetometro;
int16_t mx, my, mz;

void setup() {
Serial.begin(9600);
Wire.begin();
magnetometro.initialize();
}

void loop(){
magnetometro.getHeading(&mx, &my, &mz);
Serial.print("mx: "); Serial.print(mx);
Serial.print(" my: "); Serial.print(my);
Serial.print(" mz: "); Serial.println(mz);
delay(100);
}

In diesem Code wird das Magnetometer initialisiert und die Werte auf allen drei Achsen in einer Schleife gelesen. Jedes Mal, wenn wir „loop()“ ausführen, werden die Werte des Magnetfelds in X, Y und Z auf dem seriellen Monitor angezeigt.

Bereichs- und Verstärkungseinstellungen

Mit dem HMC5883L können Sie die anpassen Magnetfeldmessbereich zwischen ±0.88 Gauss und ±8.1 Gauss mit unterschiedlichen Verstärkungsstufen. Der Standardbereich beträgt ±1.3 Gauss und Sie können ihn an Ihre Projektanforderungen anpassen. Dies kann über die folgende Zeile im Code erfolgen:

magnetometro.setGain(value);

Wo Wert ist eine Ganzzahl zwischen 0 und 7, die den Verstärkungspegel auswählt. Nachfolgend zeigen wir Ihnen eine Tabelle mit den entsprechenden Werten:

Wert Rango Verstärkung (LSB/Gauß)
0 ±0.88 Ga 1370
1 ±1.3 Ga 1090
2 ±1.9 Ga 820
3 ±2.5 Ga 660
4 ±4.0 Ga 440
5 ±4.7 Ga 390
6 ±5.6 Ga 330
7 ±8.1 Ga 230

Einen digitalen Kompass bauen

Eine der häufigsten Anwendungen des HMC5883L ist der Aufbau eines digitaler Kompass. Dazu müssen wir den Winkel zwischen dem Sensor und dem magnetischen Norden anhand der Messwerte der X- und Y-Achse berechnen. Dies wird mit der Formel erreicht:

float angulo = atan2(my, mx) * 180 / M_PI;

Dieser Wert gibt Ihnen den Orientierungswinkel in Bezug auf den magnetischen Nordpol an. Um diesen Winkel anzupassen geografischer Norden, müssen Sie die magnetische Deklination Ihres Standorts berücksichtigen, die Sie auf verschiedenen Websites wie www.ign.es oder www.ngdc.noaa.gov einsehen können.

Korrekte magnetische Deklination

Sobald Sie die magnetische Deklination Ihrer Position haben, müssen Sie diese nur noch vom erhaltenen Winkel abziehen. Zum Beispiel:

angulo -= declinacion;

Wenn der Winkel negativ ist, können Sie 360 ​​Grad hinzufügen, um immer einen positiven Wert zu erhalten, der zwischen 0 und 360 Grad liegt:

if (angulo < 0) angulo += 360;

Mit dieser Einstellung erhalten Sie einen Kompass, der immer genau auf den geografischen Norden zeigt.

In der Praxis können Sie mit diesem Sensor und einigen Bibliotheken in wenigen Minuten einen Kompass haben. Bitte beachten Sie jedoch, dass es sich beim HMC5883L um einen Sensor handelt, der empfindlich auf äußere Störungen reagiert, z. B. auf in der Nähe befindliche Metalle oder durch hohe Ströme erzeugte Felder, die die Messwerte verändern können.


Schreiben Sie den ersten Kommentar

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.