Inhaltsverzeichnis:

Magnetfeldmessung mit HMC5883 und Raspberry Pi - Gunook
Magnetfeldmessung mit HMC5883 und Raspberry Pi - Gunook

Video: Magnetfeldmessung mit HMC5883 und Raspberry Pi - Gunook

Video: Magnetfeldmessung mit HMC5883 und Raspberry Pi - Gunook
Video: Der Hall-Effekt zur Magnetfeldmessung - mit Erklärung 2024, November
Anonim
Image
Image

Der HMC5883 ist ein digitaler Kompass, der für die magnetische Erfassung im Niederfeld entwickelt wurde. Dieses Gerät hat einen weiten Magnetfeldbereich von +/-8 Oe und eine Ausgaberate von 160 Hz. Der HMC5883-Sensor umfasst automatische Entmagnetisierungsbandtreiber, Offset-Aufhebung und einen 12-Bit-ADC, der eine Kompasskursgenauigkeit von 1° bis 2° ermöglicht. Alle I²C-Mini-Module sind für den Betrieb mit 5 VDC ausgelegt.

In diesem Tutorial erklären wir die detaillierte Funktionsweise des HMC5883 mit Raspberry Pi und seine Programmierung mit der Programmiersprache Java.

Schritt 1: Erforderliche Hardware:

Erforderliche Hardware
Erforderliche Hardware
Erforderliche Hardware
Erforderliche Hardware
Erforderliche Hardware
Erforderliche Hardware

Zur Ausführung der Aufgabe wird folgende Hardware benötigt:

1. HMC5883

2. Himbeer-Pi

3. I2C-Kabel

4. I2C-Schild für Raspberry Pi

5. Ethernet-Kabel

Schritt 2: Hardwareanschluss:

Hardware-Anschluss
Hardware-Anschluss
Hardware-Anschluss
Hardware-Anschluss

Der Abschnitt zum Hardwareanschluss erklärt im Wesentlichen die erforderlichen Kabelverbindungen zwischen dem Sensor und dem Himbeer-Pi. Die Sicherstellung korrekter Verbindungen ist die Grundvoraussetzung bei der Arbeit an jedem System für die gewünschte Ausgabe. Die erforderlichen Verbindungen sind also wie folgt:

Der HMC5883 funktioniert über I2C. Hier ist das Beispiel-Verdrahtungsdiagramm, das zeigt, wie jede Schnittstelle des Sensors verdrahtet wird.

Out-of-the-box ist das Board für eine I2C-Schnittstelle konfiguriert, daher empfehlen wir, diesen Anschluss zu verwenden, wenn Sie ansonsten agnostisch sind. Alles was Sie brauchen sind vier Drähte!

Es werden nur vier Anschlüsse benötigt Vcc, Gnd, SCL und SDA Pins und diese werden mit Hilfe von I2C Kabel verbunden.

Diese Verbindungen sind in den obigen Bildern dargestellt.

Schritt 3: Java-Code zum Messen der Magnetfeldintensität:

Java-Code zum Messen der Magnetfeldstärke
Java-Code zum Messen der Magnetfeldstärke
Java-Code zum Messen der Magnetfeldstärke
Java-Code zum Messen der Magnetfeldstärke

Der Vorteil der Verwendung von Raspberry Pi ist, dass Sie die Flexibilität der Programmiersprache haben, in der Sie das Board programmieren möchten, um den Sensor damit zu verbinden. Diesen Vorteil dieses Boards nutzend, demonstrieren wir hier seine Programmierung in Java. Der Java-Code für HMC5883 kann von unserer Github-Community, dem Dcube Store, heruntergeladen werden.

Neben der Benutzerfreundlichkeit erklären wir den Code auch hier:

Als ersten Schritt der Codierung müssen Sie im Fall von Java die pi4j-Bibliothek herunterladen, da diese Bibliothek die im Code verwendeten Funktionen unterstützt. Um die Bibliothek herunterzuladen, können Sie den folgenden Link besuchen:

pi4j.com/install.html

Sie können den funktionierenden Java-Code für diesen Sensor auch von hier kopieren:

com.pi4j.io.i2c. I2CBus importieren;

com.pi4j.io.i2c. I2CDevice importieren;

mport com.pi4j.io.i2c. I2CFactory;

import java.io. IOException;öffentliche Klasse HMC5883

{

public static void main(String args) löst Ausnahme aus

{

// I2C-Bus erstellen

I2CBus-Bus = I2CFactory.getInstance(I2CBus. BUS_1);

// I2C-Gerät abrufen, HMC5883 I2C-Adresse ist 0x1E(30)

I2CDevice-Gerät = Bus.getDevice(0x1E);

// Konfigurationsregister A. auswählen

// Normale Messkonfiguration, Datenrate o/p = 0,75 Hz

device.write(0x00, (Byte)0x60);

// Modusregister auswählen

// Kontinuierlicher Messmodus

device.write(0x02, (Byte)0x00);

Thread.sleep(500);

// 6 Byte Daten aus 0x03(3) lesen

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

Byte Daten = neues Byte[6];

device.read (0x03, Daten, 0, 6);

// Konvertieren Sie die Daten

int xMag = ((data[0] & 0xFF) * 256 + (data[1] & 0xFF));

if(xMag > 32767)

{

xMag -= 65536;

}

int zMag = ((Daten[2] & 0xFF) * 256 + (Daten[3] & 0xFF));

if(zMag > 32767)

{

zMag -= 65536;

}

int yMag = ((Daten[4] & 0xFF) * 256 + (Daten[5] & 0xFF));

if(yMag > 32767)

{

yMag –= 65536;

}

// Daten auf Bildschirm ausgeben

System.out.printf("Magnetfeld in X-Achse: %d %n", xMag);

System.out.printf("Magnetfeld in Y-Achse: %d %n", yMag);

System.out.printf("Magnetfeld in Z-Achse: %d %n", zMag);

}

}

Die Funktionen Write() und read() werden verwendet, um die Befehle zu schreiben bzw. den Sensorausgang zu lesen. Der folgende Teil veranschaulicht das Ablesen von Magnetfeldwerten.

// 6 Byte Daten aus 0x03(3) lesen

// xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb

Byte Daten = neues Byte[6];

device.read (0x03, Daten, 0, 6);

Die Ausgabe ist im Bild oben dargestellt.

Schritt 4: Anwendungen:

Anwendungen
Anwendungen

HMC5883 ist ein oberflächenmontiertes Multi-Chip-Modul, das für die magnetische Niederfeldsensorik mit einer digitalen Schnittstelle für Anwendungen wie kostengünstige Kompassmessung und Magnetometrie entwickelt wurde. Seine ein bis zwei Grad hohe Genauigkeit und Präzision ermöglicht Fußgängernavigation und LBS-Anwendungen.

Empfohlen: