HMC5883L und Arduino 3-Achsen-Magnetometer

Das Tutorial zeigt, wie man ein digitales Magnetometer mit einem Arduino betreibt.

Das Beispiel verwendet die folgenden Elemente:

Anschließen des Sensors mit Arduino:

Das Modul kommuniziert über den beliebten I2C-Bus. Die Verbindung zum Arduino sollte also wie folgt erfolgen:

HMC5883L-Modul Arduino-Stift
VCC 5 V
Masse Masse
SCL A5
SDA A4

Diagramm der Verbindung des Magnetometers mit dem Arduino Uno.

Programm für Arduino

Im Beispiel wurde folgender Code verwendet:

 #include  // I2C-Bibliothek

#define address 0x1E // Adresse des HMC5883L-Moduls für I2C

void setup () {
  Serial.begin (9600); // Serielle Kommunikation initialisieren
  Wire.begin (); // Modulinitialisierung
  
                                       // Stellen Sie den entsprechenden Sensormodus ein
  Wire.beginTransmission (Adresse); // offene Kommunikation
  Wire.write (0x02); // Wählen Sie das Modusregister         
  Wire.write (0x00); // kontinuierlicher Messmodus
  Wire.endTransmission ();
}

Leere Schleife () {
  
  Ganzzahl x, y, z; // Variablen für drei Achsen

                                      // Setze die Adresse zum Lesen von Daten
  Wire.beginTransmission (Adresse);
  Wire.write (0x03); // Registerauswahl 3, MSB-Register der X-Achse
  Wire.endTransmission ();
  
 
                                     // Daten für jede Achse lesen, zwei Register für eine Achse
  Wire.requestFrom (Adresse, 6);
  if (6 <= Wire.verfügbar ()) {
    x = Wire.read () << 8; // MSB der X-Achse
    x | = Wire.read (); // LSB der X-Achse
    z = Wire.read () << 8; // MSB der Z-Achse
    mit | = Wire.read (); // LSB der Z-Achse
    y = Wire.read () << 8; // MSB der Y-Achse
    y | = Wire.read (); // LSB der Y-Achse
  }
  
                                                  // Daten auf dem seriellen Monitor anzeigen
  Serial.print ("x:");
  Serial.print (x);
  Serial.print ("y:");
  Serial.print (y);
  Serial.print ("von:");
  Serial.println (z);
  
  Verzögerung (250); // Verzögerung zwischen den Messungen 250 ms
}

Die Auswirkungen des Programms sind unten zu sehen:

Screenshot des seriellen Monitors.

Wir freuen uns auf die Zusammenarbeit mit Ihnen!