INHOUDSOPGAWE:

Magnetiese veldmeting met behulp van HMC5883 en Framboos Pi: 4 stappe
Magnetiese veldmeting met behulp van HMC5883 en Framboos Pi: 4 stappe

Video: Magnetiese veldmeting met behulp van HMC5883 en Framboos Pi: 4 stappe

Video: Magnetiese veldmeting met behulp van HMC5883 en Framboos Pi: 4 stappe
Video: Workshop EMC 2024, November
Anonim
Image
Image

Die HMC5883 is 'n digitale kompas wat ontwerp is vir magnetiese waarneming met lae veld. Hierdie toestel het 'n wye magnetiese veldbereik van +/- 8 Oe en 'n uitsetsnelheid van 160 Hz. Die HMC5883-sensor bevat outomatiese riembestuurders vir ontkoppeling, kansellering van offset en 'n 12-bis ADC wat akkuraatheid van die kompasopskrif van 1 ° tot 2 ° moontlik maak. Alle I²C -mini -modules is ontwerp om op 5VDC te werk.

In hierdie handleiding gaan ons die gedetailleerde werking van HMC5883 met Raspberry pi en die programmering daarvan verduidelik met behulp van die java -programmeertaal.

Stap 1: hardeware benodig:

Hardeware benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig
Hardeware benodig

Die hardeware wat benodig word om die taak uit te voer, is soos volg:

1. HMC5883

2. Framboos Pi

3. I2C -kabel

4. I2C -skild vir Framboos Pi

5. Ethernet -kabel

Stap 2: Hardeware -aansluiting:

Hardeware -aansluiting
Hardeware -aansluiting
Hardeware -aansluiting
Hardeware -aansluiting

Die hardeware -aansluitingsgedeelte verduidelik basies die bedradingverbindings wat tussen die sensor en die framboospi benodig word. Die korrekte noodsaaklikheid is om korrekte verbindings te verseker terwyl u aan 'n stelsel werk vir die gewenste uitset. Die vereiste verbindings is dus soos volg:

Die HMC5883 werk oor I2C. Hier is die voorbeeld -bedradingsdiagram wat demonstreer hoe om elke koppelvlak van die sensor aan te sluit.

Uit die boks is die bord gekonfigureer vir 'n I2C-koppelvlak, daarom beveel ons aan dat u hierdie aansluiting gebruik as u anders agnosties is. Al wat u nodig het, is vier drade!

Slegs vier verbindings is nodig Vcc-, Gnd-, SCL- en SDA -penne en dit word met behulp van I2C -kabel verbind.

Hierdie verbindings word getoon in die foto's hierbo.

Stap 3: Java -kode om die intensiteit van die magnetiese veld te meet:

Java -kode om magnetiese veldintensiteit te meet
Java -kode om magnetiese veldintensiteit te meet
Java -kode om magnetiese veldintensiteit te meet
Java -kode om magnetiese veldintensiteit te meet

Die voordeel van die gebruik van framboos pi is dat dit die buigsaamheid bied van die programmeertaal waarin u die bord wil programmeer om die sensor daarmee te koppel. Deur hierdie voordeel van hierdie bord te benut, demonstreer ons hier dat dit in Java programmeer. Die java -kode vir HMC5883 kan afgelaai word vanaf ons github -gemeenskap, dit is Dcube Store.

Behalwe vir die gemak van die gebruikers, verduidelik ons die kode ook hier:

As die eerste stap van kodering, moet u die pi4j -biblioteek aflaai in geval van java, want hierdie biblioteek ondersteun die funksies wat in die kode gebruik word. Om die biblioteek af te laai, kan u die volgende skakel besoek:

pi4j.com/install.html

U kan die werkende Java -kode vir hierdie sensor ook hier kopieer:

invoer com.pi4j.io.i2c. I2CBus;

voer com.pi4j.io.i2c. I2CD -toestel in;

mport com.pi4j.io.i2c. I2CFactory;

invoer java.io. IOException; publieke klas HMC5883

{

openbare statiese leegte hoof (String argumente ) gooi uitsondering

{

// Skep I2C -bus

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

// Kry I2C -toestel, HMC5883 I2C -adres is 0x1E (30)

I2CD -toestel = Bus.getDevice (0x1E);

// Kies Configuration register A

// Normale metingskonfigurasie, datatempo o/p = 0,75 Hz

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

// Kies modusregister

// Deurlopende metingsmodus

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

Draad.slaap (500);

// Lees 6 grepe data van 0x03 (3)

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

byte data = nuwe byte [6];

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

// Skakel die data om

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

as (xMag> 32767)

{

xMag -= 65536;

}

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

as (zMag> 32767)

{

zMag -= 65536;

}

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

as (yMag> 32767)

{

yMag -= 65536;

}

// Uitset data na die skerm

System.out.printf ("Magnetiese veld in X-as: %d %n", xMag);

System.out.printf ("Magnetiese veld in Y-as: %d %n", yMag);

System.out.printf ("Magnetiese veld in Z-as: %d %n", zMag);

}

}

Skryf () en lees () funksies word gebruik om onderskeidelik die opdragte te skryf en die sensoruitset te lees. Die volgende gedeelte illustreer die lees van magnetiese veldwaardes.

// Lees 6 grepe data van 0x03 (3)

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

byte data = nuwe byte [6];

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

Die uitset word in die prent hierbo getoon.

Stap 4: Aansoeke:

Aansoeke
Aansoeke

HMC5883 is 'n oppervlak-gemonteerde, multi-chip module wat ontwerp is vir lae-veld magnetiese sensing met 'n digitale koppelvlak vir toepassings soos lae koste kompasering en magnetometrie. Sy akkuraatheid en presisie van een tot twee grade maak voetgangersnavigasie en LBS -toepassings moontlik.

Aanbeveel: