Magneettikentän mittaus käyttäen HMC5883 ja Arduino Nano: 4 vaihetta
Magneettikentän mittaus käyttäen HMC5883 ja Arduino Nano: 4 vaihetta
Anonim
Image
Image

HMC5883 on digitaalinen kompassi, joka on suunniteltu matalan kentän magneettitunnistukseen. Tällä laitteella on laaja magneettikenttäalue +/- 8 Oe ja lähtötaajuus 160 Hz. HMC5883-anturissa on automaattiset degaussing-hihnaohjaimet, offset-peruutus ja 12-bittinen ADC, joka mahdollistaa kompassin suunnan 1 °-2 ° tarkkuuden. Kaikki I²C -minimoduulit on suunniteltu toimimaan 5 VDC: n jännitteellä.

Tässä opetusohjelmassa aiomme selittää HMC5883: n yksityiskohtaisen työskentelyn Arduino nanon kanssa.

Vaihe 1: Tarvittava laitteisto:

Tarvittava laitteisto
Tarvittava laitteisto
Tarvittava laitteisto
Tarvittava laitteisto
Tarvittava laitteisto
Tarvittava laitteisto

Tavoitteemme saavuttamiseen tarvittavat materiaalit sisältävät seuraavat laitteistokomponentit:

1. HMC5883

2. Arduino Nano

3. I2C -kaapeli

4. I2C -kilpi Arduino Nanolle

Vaihe 2: Laitteiston kytkentä:

Laitteiston kytkentä
Laitteiston kytkentä
Laitteiston kytkentä
Laitteiston kytkentä

Laitteiston kytkentäosio selittää periaatteessa anturin ja arduino nanon väliset tarvittavat johdot. Oikeiden liitosten varmistaminen on perustarve, kun työskentelet minkä tahansa järjestelmän kanssa halutun lähdön saavuttamiseksi. Tarvittavat liitännät ovat siis seuraavat:

HMC5883 toimii I2C: n yli. Tässä on esimerkki kytkentäkaaviosta, joka osoittaa, miten anturin jokainen liitäntä kytketään.

Valmis levy on konfiguroitu I2C-rajapintaa varten, joten suosittelemme käyttämään tätä kytkentää, jos olet muuten agnostikko. Tarvitset vain neljä johtoa!

Tarvitaan vain neljä liitäntää Vcc, Gnd, SCL ja SDA, ja ne on kytketty I2C -kaapelin avulla.

Nämä yhteydet on esitetty yllä olevissa kuvissa.

Vaihe 3: Arduino -koodi magneettikentän voimakkuuden mittaamiseksi:

Arduino -koodi magneettikentän voimakkuuden mittaamiseen
Arduino -koodi magneettikentän voimakkuuden mittaamiseen
Arduino -koodi magneettikentän voimakkuuden mittaamiseen
Arduino -koodi magneettikentän voimakkuuden mittaamiseen

Aloitetaan nyt Arduino -koodilla.

Kun käytät anturimoduulia Arduinon kanssa, sisällytämme Wire.h -kirjaston. "Wire" -kirjasto sisältää toiminnot, jotka helpottavat i2c -tiedonsiirtoa anturin ja Arduino -kortin välillä.

Koko Arduino -koodi on alla käyttäjän mukavuuden vuoksi:

#sisältää

// HMC5883 I2C -osoite on 0x1E (30)

#define Addr 0x1E

mitätön asennus ()

{

// Alusta I2C -viestintä MASTERiksi

Wire.begin ();

// Alusta sarjaliikenne, aseta baudinopeus = 9600

Sarja.alku (9600);

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse configure register A

Wire.write (0x00);

// Aseta normaali mittauskonfiguraatio, tiedonsiirtonopeus = 0,75 Hz

Wire.write (0x60);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse tilarekisteri

Wire.write (0x02);

// Aseta jatkuva mittaus

Wire.write (0x00);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

viive (300);

}

tyhjä silmukka ()

{

allekirjoittamattomat int -tiedot [6];

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse tietorekisteri

Wire.write (0x03);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 6 tavua dataa

Wire.requestFrom (Addr, 6);

// Lue 6 tavua dataa

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

jos (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 ();

}

viive (300);

// Muunna tiedot

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

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

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

// Tulostustiedot sarjamittarille

Serial.print ("Magneettikenttä X-akselilla:");

Sarja.println (xMag);

Serial.print ("Magneettikenttä Y-akselilla:");

Sarja.println (yMag);

Serial.print ("Z-akselin magneettikenttä:");

Sarja.println (zMag);

viive (300);

}

Johdinkirjastossa Wire.write () ja Wire.read () käytetään komentojen kirjoittamiseen ja anturilähdön lukemiseen. Koodin seuraava osa kuvaa anturin lähdön lukemista.

// Lue 6 tavua dataa // 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 () ja Serial.println () käytetään anturin lähdön näyttämiseen Arduino IDE: n sarjamonitorissa.

Anturin lähtö näkyy yllä olevassa kuvassa.

Vaihe 4: Sovellukset:

Sovellukset
Sovellukset

HMC5883 on pinta-asennettava monisirumoduuli, joka on suunniteltu matalan kentän magneettitunnistukseen ja jossa on digitaalinen käyttöliittymä sovelluksiin, kuten edulliseen kompassointiin ja magnetometriaan. Sen yhden tai kahden asteen korkea tarkkuus mahdollistaa jalankulkijoiden navigoinnin ja LBS -sovellukset.

Suositeltava: