Satura rādītājs:

Magnētiskā lauka mērīšana, izmantojot HMC5883 un Arduino Nano: 4 soļi
Magnētiskā lauka mērīšana, izmantojot HMC5883 un Arduino Nano: 4 soļi
Anonim
Image
Image

HMC5883 ir digitālais kompass, kas paredzēts zema lauka magnētiskajai uztveršanai. Šai ierīcei ir plašs magnētiskā lauka diapazons +/- 8 Oe un izejas ātrums 160 Hz. HMC5883 sensora komplektā ietilpst automātiskie atdalīšanas siksnu draiveri, nobīdes atcelšana un 12 bitu ADC, kas nodrošina 1 līdz 2 ° kompasa virziena precizitāti. Visi I²C mini moduļi ir paredzēti darbam pie 5 V līdzstrāvas.

Šajā apmācībā mēs izskaidrosim detalizētu HMC5883 darbību ar Arduino nano.

1. darbība. Nepieciešamā aparatūra:

Nepieciešamā aparatūra
Nepieciešamā aparatūra
Nepieciešamā aparatūra
Nepieciešamā aparatūra
Nepieciešamā aparatūra
Nepieciešamā aparatūra

Materiāli, kas nepieciešami mūsu mērķa sasniegšanai, ietver šādas aparatūras sastāvdaļas:

1. HMC5883

2. Arduino Nano

3. I2C kabelis

4. I2C vairogs Arduino Nano

2. darbība. Aparatūras savienošana:

Aparatūras savienojums
Aparatūras savienojums
Aparatūras savienojums
Aparatūras savienojums

Aparatūras savienošanas sadaļa pamatā izskaidro nepieciešamos vadu savienojumus starp sensoru un arduino nano. Pareizu savienojumu nodrošināšana ir pamatvajadzība, strādājot pie jebkuras sistēmas vēlamajam rezultātam. Tātad nepieciešamie savienojumi ir šādi:

HMC5883 darbosies, izmantojot I2C. Šeit ir elektroinstalācijas shēmas piemērs, kas parāda, kā savienot katru sensora saskarni.

Izņemot komplektu, tāfele ir konfigurēta I2C saskarnei, tāpēc mēs iesakām izmantot šo savienojumu, ja esat citādi agnostiķis. Viss, kas Jums nepieciešams, ir četri vadi!

Nepieciešami tikai četri savienojumi Vcc, Gnd, SCL un SDA, un tie ir savienoti, izmantojot I2C kabeli.

Šie savienojumi ir parādīti iepriekš redzamajos attēlos.

3. darbība: Arduino kods magnētiskā lauka intensitātes mērīšanai:

Arduino kods magnētiskā lauka intensitātes mērīšanai
Arduino kods magnētiskā lauka intensitātes mērīšanai
Arduino kods magnētiskā lauka intensitātes mērīšanai
Arduino kods magnētiskā lauka intensitātes mērīšanai

Sāksim ar Arduino kodu tūlīt.

Izmantojot sensoru moduli ar Arduino, mēs iekļaujam Wire.h bibliotēku. "Wire" bibliotēkā ir funkcijas, kas atvieglo i2c komunikāciju starp sensoru un Arduino plati.

Viss Arduino kods lietotāja ērtībai ir norādīts zemāk:

#iekļaut

// HMC5883 I2C adrese ir 0x1E (30)

#define Addr 0x1E

anulēts iestatījums ()

{

// Inicializēt I2C komunikāciju kā MASTER

Wire.begin ();

// Inicializēt seriālo komunikāciju, iestatīt pārraides ātrumu = 9600

Sērijas sākums (9600);

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet konfigurēt reģistru A

Wire.write (0x00);

// Iestatiet normālu mērījumu konfigurāciju, datu izvades ātrums = 0,75 Hz

Wire.write (0x60);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Izvēlieties režīma reģistru

Wire.write (0x02);

// Iestatīt nepārtrauktu mērīšanu

Wire.write (0x00);

// Apturēt I2C pārraidi

Wire.endTransmission ();

kavēšanās (300);

}

tukša cilpa ()

{

neparakstīti int dati [6];

// Sākt I2C pārraidi

Wire.beginTransmission (Addr);

// Atlasiet datu reģistru

Wire.write (0x03);

// Apturēt I2C pārraidi

Wire.endTransmission ();

// Pieprasīt 6 baitus datu

Wire.requestFrom (Addr, 6);

// Lasīt 6 baitus datu

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

ja (Wire.available () == 6)

{

dati [0] = Wire.read ();

dati [1] = Wire.read ();

dati [2] = Wire.read ();

dati [3] = Wire.read ();

dati [4] = Wire.read ();

dati [5] = Wire.read ();

}

kavēšanās (300);

// Konvertēt datus

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

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

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

// Izvadiet datus uz seriālo monitoru

Serial.print ("Magnētiskais lauks X-asī:");

Serial.println (xMag);

Serial.print ("Magnētiskais lauks Y-asī:");

Serial.println (yMag);

Serial.print ("Magnētiskais lauks Z-asī:");

Serial.println (zMag);

kavēšanās (300);

}

Vadu bibliotēkā Wire.write () un Wire.read () tiek izmantotas komandu rakstīšanai un sensora izejas nolasīšanai. Sekojošā koda daļa ilustrē sensora izejas nolasījumu.

// Lasīt 6 baitus datu // xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb if (Wire.available () == 6) {data [0] = Wire.read (); dati [1] = Wire.read (); dati [2] = Wire.read (); dati [3] = Wire.read (); dati [4] = Wire.read (); dati [5] = Wire.read (); }

Serial.print () un Serial.println () tiek izmantoti, lai parādītu sensora izvadi Arduino IDE sērijas monitorā.

Sensora izeja ir parādīta attēlā iepriekš.

4. darbība. Lietojumprogrammas:

Lietojumprogrammas
Lietojumprogrammas

HMC5883 ir uz virsmas piestiprināms vairāku mikroshēmu modulis, kas paredzēts zema lauka magnētiskai uztveršanai ar digitālo interfeisu tādiem lietojumiem kā zemu izmaksu kompasēšana un magnetometrija. Tā viena līdz divu grādu augsta līmeņa precizitāte un precizitāte nodrošina gājēju navigāciju un LBS lietojumprogrammas.

Ieteicams: