Innholdsfortegnelse:

Magnetisk feltmåling ved hjelp av HMC5883 og Arduino Nano: 4 trinn
Magnetisk feltmåling ved hjelp av HMC5883 og Arduino Nano: 4 trinn

Video: Magnetisk feltmåling ved hjelp av HMC5883 og Arduino Nano: 4 trinn

Video: Magnetisk feltmåling ved hjelp av HMC5883 og Arduino Nano: 4 trinn
Video: Kuantum Elektrodinamiği ve Uygulamaları | Modern Fiziğin İlkeleri 2024, Juli
Anonim
Image
Image

HMC5883 er et digitalt kompass designet for lavfelt magnetisk sansing. Denne enheten har et bredt magnetfeltområde på +/- 8 Oe og en utgangshastighet på 160 Hz. HMC5883-sensoren inkluderer automatiske degaussing-stroppdrivere, offset-kansellering og en 12-biters ADC som muliggjør 1 ° til 2 ° kompassretningsnøyaktighet. Alle I²C minimoduler er designet for å fungere på 5VDC.

I denne opplæringen skal vi forklare detaljert bruk av HMC5883 med Arduino nano.

Trinn 1: Nødvendig maskinvare:

Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves

Materialene vi trenger for å nå målet vårt inkluderer følgende maskinvarekomponenter:

1. HMC5883

2. Arduino Nano

3. I2C -kabel

4. I2C -skjold for Arduino Nano

Trinn 2: Maskinvaretilkobling:

Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling

Maskinvarekoblingsdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og arduino nano. Å sikre riktige tilkoblinger er den grunnleggende nødvendigheten mens du arbeider på et hvilket som helst system for ønsket utgang. Så de nødvendige tilkoblingene er som følger:

HMC5883 fungerer over I2C. Her er eksempel på koblingsskjema, som viser hvordan du kobler til hvert grensesnitt på sensoren.

Uten boksen er brettet konfigurert for et I2C-grensesnitt, derfor anbefaler vi å bruke denne tilkoblingen hvis du ellers er agnostiker. Alt du trenger er fire ledninger!

Bare fire tilkoblinger kreves Vcc, Gnd, SCL og SDA -pinner, og disse er koblet til ved hjelp av I2C -kabel.

Disse sammenhengene er vist på bildene ovenfor.

Trinn 3: Arduino -kode for å måle magnetfeltintensitet:

Arduino -kode for å måle magnetfeltintensitet
Arduino -kode for å måle magnetfeltintensitet
Arduino -kode for å måle magnetfeltintensitet
Arduino -kode for å måle magnetfeltintensitet

La oss begynne med Arduino -koden nå.

Mens vi bruker sensormodulen med Arduino, inkluderer vi Wire.h -biblioteket. "Wire" -biblioteket inneholder funksjonene som letter i2c -kommunikasjonen mellom sensoren og Arduino -kortet.

Hele Arduino -koden er gitt nedenfor for brukerens bekvemmelighet:

#inkludere

// HMC5883 I2C -adressen er 0x1E (30)

#define Addr 0x1E

ugyldig oppsett ()

{

// Initialiser I2C -kommunikasjon som MASTER

Wire.begin ();

// Initialize Serial Communication, set baud rate = 9600

Serial.begin (9600);

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg konfigurer register A

Wire.write (0x00);

// Angi normal målekonfigurasjon, datautgangshastighet = 0,75Hz

Wire.write (0x60);

// Stopp I2C -overføring

Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg Modusregister

Wire.write (0x02);

// Still inn kontinuerlig måling

Wire.write (0x00);

// Stopp I2C -overføring

Wire.endTransmission ();

forsinkelse (300);

}

hulrom ()

{

usignerte int -data [6];

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg dataregister

Wire.write (0x03);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 6 byte med data

Wire.requestFrom (Addr, 6);

// Les 6 byte med data

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

hvis (Wire.available () == 6)

{

data [0] = Wire.read ();

data [1] = Wire.read ();

data [2] = Wire.read ();

data [3] = Wire.read ();

data [4] = Wire.read ();

data [5] = Wire.read ();

}

forsinkelse (300);

// Konverter dataene

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

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

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

// Utdata til seriell skjerm

Serial.print ("Magnetfelt i X-akse:");

Serial.println (xMag);

Serial.print ("Magnetfelt i Y-akse:");

Serial.println (yMag);

Serial.print ("Magnetisk felt i Z-akse:");

Serial.println (zMag);

forsinkelse (300);

}

I trådbiblioteket brukes Wire.write () og Wire.read () til å skrive kommandoene og lese sensorutgangen. Følgende del av koden illustrerer lesingen av sensorutgang.

// Les 6 byte med data // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if (Wire.available () == 6) {data [0] = Wire.read (); data [1] = Wire.read (); data [2] = Wire.read (); data [3] = Wire.read (); data [4] = Wire.read (); data [5] = Wire.read (); }

Serial.print () og Serial.println () brukes til å vise sensorens utgang på den serielle skjermen til Arduino IDE.

Sensorens utgang er vist på bildet ovenfor.

Trinn 4: Søknader:

Applikasjoner
Applikasjoner

HMC5883 er en overflatemontert, multi-chip modul designet for lavfelt magnetisk sensing med et digitalt grensesnitt for applikasjoner som lavpris kompassering og magnetometri. Dens en til to graders høy nøyaktighet og presisjon muliggjør fotgjengernavigasjon og LBS -applikasjoner.

Anbefalt: