HMC5883L und Arduino 3-Achsen-Magnetometer
Das Tutorial zeigt, wie man ein digitales Magnetometer mit einem Arduino betreibt.
Das Beispiel verwendet die folgenden Elemente:
- Arduino Uno
HMC5883L 3-Achsen-I2C 3,3 V / 5 V digitales Magnetometer - GY-271-Modul
- Drähte, z.B. mit Haken
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.