Arduino Lektion 14: 3 Achsen Lagesensor, HMC5883L

Mit dem 3 Achsen Lagesensor HMC5883L kann man sich leicht eine digitale Wasserwaage bauen aber dazu später mehr, jetzt erstmal zu dem Sensor.

Der Sensor ist nicht größer als ein 20Cent Stück und somit sehr gut für Mikroschaltungen geeignet.

3 Achsen Lagesensor HMC5883L
3 Achsen Lagesensor HMC5883L

Auch bei diesem „Bausatz“ musste man die Steckerleiste an den Sensor löten was wirklich nicht schwierig ist.

Technische Daten

  • Maße
    • Breite – 16mm
    • Höhe – 19mm
  • Stromaufnahme
    • Ruhemodus – 2 µA
    • Arbeitsmodus – 100 µA

Die Schaltung

Der Sensor verfügt über folgende PIN’s

  • VCC +5V – 5V
  • GND – GND
  • SCL – analog PIN A5
  • SDA – analog PIN A4
  • DRDY – bleibt in diesem Beispiel frei
  • 3V3 – bleibt in diesem Beispiel frei
Arduino Nano mit angeschlossenem 3 Achsen Lagesensor, HMC5883L.
Arduino Nano mit angeschlossenem 3 Achsen Lagesensor, HMC5883L.

Bibliotheken für den Sensor

Zu dem 3 Achsen Lagesensor HMC5883L gibt es eine fertige Bibliothek von Adafruit welche aus dem GutHub Repository
https://github.com/adafruit/Adafruit_HMC5883_Unified geladen werden kann.
Wie eine Bibliothek in die Arduino IDE eingebunden wird habe ich im
Tutorial Arduino IDE, Include .h Datei beschrieben.

Im nachfolgenden Code wurde auf den Einsatz der Bibliothek verzichtet da es über die Boardmittel genauso gut funktioniert.

Der Quellcode – Arduino

 

Zwischenergebnis

Wenn man jetzt das Programm auf dem Arduino startet (kompiliert und übermittelt.), kann man auf dem Seriellen Monitor folgende Ausgabe sehen.

Ausgabe des Sketches auf dem Serial Monitor der Arduino IDE
Ausgabe des Sketches auf dem Serial Monitor der Arduino IDE

Als nächsten Schritt möchte ich nun diese Werte auf einem Max7219 LED Shield darstellen.

Das Video

3 Achsen Lagesensor, HMC5883L

 ]

Download

Verwandte Beiträge

4 Kommentare

  1. Hi,
    kannst du mir helfen…
    Ich benutze deinen Code und eine Arduino Uno. Nur leider bekomme ich als Ausgabe für alle Achsen nur 0. Die I2C Adresse habe ich über einen Code ausgelesen (0x0D). Diese habe ich unter #define Address eingetragen, aber leider bekomme ich nur als Ausgabe 0 für alle Achsen.

    Danke

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*