Matja e fushës magnetike duke përdorur HMC5883 dhe Arduino Nano: 4 hapa
Matja e fushës magnetike duke përdorur HMC5883 dhe Arduino Nano: 4 hapa
Anonim
Image
Image

HMC5883 është një busull dixhitale e krijuar për sensimin magnetik të fushës së ulët. Kjo pajisje ka një gamë të gjerë të fushës magnetike +/- 8 Oe dhe një normë dalëse prej 160 Hz. Sensori HMC5883 përfshin drejtues automatik të rripit të degausimit, anulim të kompensuar dhe një ADC 12-bit që mundëson saktësinë e drejtimit të busullës 1 ° deri në 2 °. Të gjithë Mini Modulet I²C janë krijuar për të funksionuar në 5VDC.

Në këtë tutorial, ne do të shpjegojmë punën e detajuar të HMC5883 me Arduino nano.

Hapi 1: Kërkohet harduer:

Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer

Materialet që na duhen për të arritur qëllimin tonë përfshijnë përbërësit e mëposhtëm të harduerit:

1. HMC5883

2. Arduino Nano

3. Kabllo I2C

4. Mburoja I2C Për Arduino Nano

Hapi 2: Bashkimi i harduerit:

Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit

Seksioni i lidhjes së harduerit në thelb shpjegon lidhjet e telave të kërkuara midis sensorit dhe arduino nano. Sigurimi i lidhjeve të sakta është nevoja themelore gjatë punës në çdo sistem për daljen e dëshiruar. Pra, lidhjet e nevojshme janë si më poshtë:

HMC5883 do të funksionojë mbi I2C. Këtu është shembulli i diagramit të instalimeve elektrike, duke demonstruar se si të lidhni secilën ndërfaqe të sensorit.

Jashtë kutisë, bordi është i konfiguruar për një ndërfaqe I2C, si i tillë ne rekomandojmë përdorimin e këtij bashkimi nëse përndryshe jeni agnostik. Gjithçka që ju nevojitet janë katër tela!

Vetëm katër lidhje kërkohen kunjat Vcc, Gnd, SCL dhe SDA dhe këto janë të lidhura me ndihmën e kabllit I2C.

Këto lidhje demonstrohen në fotot e mësipërme.

Hapi 3: Kodi Arduino për të matur intensitetin e fushës magnetike:

Kodi Arduino për të matur intensitetin e fushës magnetike
Kodi Arduino për të matur intensitetin e fushës magnetike
Kodi Arduino për të matur intensitetin e fushës magnetike
Kodi Arduino për të matur intensitetin e fushës magnetike

Le të fillojmë me kodin Arduino tani.

Ndërsa përdorim modulin e sensorit me Arduino, ne përfshijmë bibliotekën Wire.h. Biblioteka "Wire" përmban funksione të cilat lehtësojnë komunikimin i2c midis sensorit dhe bordit Arduino.

I gjithë kodi Arduino është dhënë më poshtë për lehtësinë e përdoruesit:

#përfshi

// Adresa HMC5883 I2C është 0x1E (30)

#përcaktoni Addr 0x1E

void setup ()

{

// Filloni komunikimin I2C si MASTER

Wire.begin ();

// Filloni Komunikimin Serial, vendosur normën e baudit = 9600

Serial.filloj (9600);

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidh konfigurimin e regjistrit A

Wire.write (0x00);

// Vendosni konfigurimin normal të matjes, shkalla e daljes së të dhënave = 0.75Hz

Wire.write (0x60);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidh Regjistrin e modalitetit

Wire.write (0x02);

// Vendosni matjen e vazhdueshme

Wire.write (0x00);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

vonesë (300);

}

lak void ()

{

të dhëna int të panënshkruara [6];

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidh regjistrin e të dhënave

Wire.write (0x03);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 6 bajt të dhëna

Tela. Kërkohet Nga (Addr, 6);

// Lexoni 6 bajt të dhëna

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

nëse (Wire. në dispozicion () == 6)

{

të dhëna [0] = Wire.read ();

të dhëna [1] = Wire.read ();

të dhëna [2] = Wire.read ();

të dhëna [3] = Wire.read ();

të dhëna [4] = Wire.read ();

të dhëna [5] = Wire.read ();

}

vonesë (300);

// Shndërroni të dhënat

int xMag = ((të dhënat [0] * 256) + të dhënat [1]);

int zMag = ((të dhënat [2] * 256) + të dhënat [3]);

int yMag = ((të dhënat [4] * 256) + të dhënat [5]);

// Dalja e të dhënave në monitorin serik

Serial.print ("Fusha magnetike në boshtin X:");

Serial.println (xMag);

Serial.print ("Fusha magnetike në Boshtin Y:");

Serial.println (yMag);

Serial.print ("Fusha magnetike në boshtin Z:");

Serial.println (zMag);

vonesë (300);

}

Në bibliotekën Wire.write () dhe Wire.read () përdoret për të shkruar komandat dhe lexuar daljen e sensorit. Pjesa e mëposhtme e kodit ilustron leximin e daljes së sensorit.

// Lexoni 6 bajt të dhënash // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if (Wire.available () == 6) {data [0] = Wire.read (); të dhëna [1] = Wire.read (); të dhëna [2] = Wire.read (); të dhëna [3] = Wire.read (); të dhëna [4] = Wire.read (); të dhëna [5] = Wire.read (); }

Serial.print () dhe Serial.println () përdoret për të shfaqur daljen e sensorit në monitorin serik të Arduino IDE.

Dalja e sensorit tregohet në figurën e mësipërme.

Hapi 4: Aplikimet:

Aplikimet
Aplikimet

HMC5883 është një modul i montuar në sipërfaqe, me shumë çipa i krijuar për sensimin magnetik të fushës së ulët me një ndërfaqe dixhitale për aplikime të tilla si busullimi me kosto të ulët dhe magnetometria. Saktësia dhe saktësia e tij një deri në dy shkallë mundëson navigimin e këmbësorëve dhe aplikimet LBS.

Recommended: