Sisukord:

Magnetvälja mõõtmine HMC5883 ja osakeste footoni abil: 4 sammu
Magnetvälja mõõtmine HMC5883 ja osakeste footoni abil: 4 sammu
Anonim
Image
Image

HMC5883 on digitaalne kompass, mis on loodud madala välja magnetvälja tuvastamiseks. Sellel seadmel on lai magnetvälja vahemik +/- 8 Oe ja väljundkiirus 160 Hz. HMC5883 andur sisaldab automaatseid degaussing rihma draivereid, nihke tühistamist ja 12-bitist ADC-d, mis võimaldab kompassi suuna täpsust 1 ° kuni 2 °. Kõik I²C minimoodulid on loodud töötama 5 V alalisvoolul.

Selles õpetuses selgitame HMC5883 üksikasjalikku tööd osakeste footoniga. Osakeste footon on tahvel, mis hõlbustab veebisaidilt andmete saatmist ja vastuvõtmist, mis toetab asjade Interneti (IoT) kõige põhilisemat funktsiooni.

Samm: vajalik riistvara:

Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara
Vajalik riistvara

Eesmärgi saavutamiseks vajalikud materjalid sisaldavad järgmisi riistvarakomponente:

1. HMC5883

2. Osakeste footon

3. I2C kaabel

4. I2C kilp osakeste footonile

2. samm: riistvara ühendamine:

Riistvara ühendamine
Riistvara ühendamine
Riistvara ühendamine
Riistvara ühendamine

Riistvara ühendamise jaotis selgitab põhimõtteliselt anduri ja osakeste footoni vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:

HMC5883 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada.

Valmis plaat on konfigureeritud I2C liidese jaoks, seega soovitame seda ühendamist kasutada, kui olete muidu agnostik. Kõik, mida vajate, on neli juhtmest!

Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil.

Neid seoseid on näidatud ülaltoodud piltidel.

3. samm: kood magnetvälja intensiivsuse mõõtmiseks:

Kood magnetvälja intensiivsuse mõõtmiseks
Kood magnetvälja intensiivsuse mõõtmiseks

Alustame nüüd osakeste koodist.

Kui kasutame andurimoodulit koos Arduinoga, lisame teeki application.h ja spark_wiring_i2c.h. Raamatukogu "application.h" ja spark_wiring_i2c.h sisaldab funktsioone, mis hõlbustavad i2c suhtlust anduri ja osakese vahel.

Kogu osakeste kood on kasutaja mugavuse huvides toodud allpool:

#kaasake

#kaasake

// HMC5883 I2C aadress on 0x1E (30)

#define Addr 0x1E

int xMag = 0, yMag = 0, zMag = 0;

tühine seadistus ()

{

// Määra muutuja

Particle.variable ("i2cdevice", "HMC5883");

Particle.variable ("xMag", xMag);

Particle.variable ("yMag", yMag);

Particle.variable ("zMag", zMag);

// Initsialiseeri I2C side kui MASTER

Wire.begin ();

// Initsialiseeri jadaühendus, määrake edastuskiirus = 9600

Seriaalne algus (9600);

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Vali seadista register A

Wire.write (0x00);

// Määra normaalne mõõtmiskonfiguratsioon, andmete väljundkiirus = 0,75 Hz

Wire.write (0x60);

// Peata I2C edastamine

Wire.endTransmission ();

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Valige režiimiregister

Wire.write (0x02);

// Määra pidev mõõtmine

Wire.write (0x00);

// Peata I2C edastamine

Wire.endTransmission ();

viivitus (300);

}

tühine tsükkel ()

{

allkirjastamata int andmed [6];

// Käivitage I2C edastamine

Wire.beginTransmission (Addr);

// Valige andmeregister

Wire.write (0x03);

// Peata I2C edastamine

Wire.endTransmission ();

// Taotlege 6 baiti andmeid

Wire.requestFrom (Addr, 6);

// Lugege 6 baiti andmeid

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

kui (Wire.available () == 6)

{

andmed [0] = Wire.read ();

andmed [1] = Wire.read ();

andmed [2] = Wire.read ();

andmed [3] = Wire.read ();

andmed [4] = Wire.read ();

andmed [5] = Wire.read ();

}

viivitus (300);

// Teisendage andmed

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

kui (xMag> 32767)

{

xMag -= 65536;

}

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

kui (zMag> 32767)

{

zMag -= 65536;

}

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

kui (yMag> 32767)

{

yMag -= 65536;

}

// Andmete väljastamine armatuurlauale

Particle.publish ("Magnetväli X-teljel:", String (xMag));

viivitus (1000);

Particle.publish ("Magnetväli Y-teljel:", string (yMag));

viivitus (1000);

Particle.publish ("Magnetväli Z-teljel:", String (zMag));

viivitus (1000);

}

Funktsioon Particle.variable () loob muutujad anduri väljundi salvestamiseks ja Particle.publish () kuvab väljundi saidi armatuurlaual.

Anduri väljund on näidatud ülaltoodud pildil.

4. samm: rakendused:

Rakendused
Rakendused

HMC5883 on pinnale paigaldatav mitme kiibiga moodul, mis on loodud madala välja magnetvälja tuvastamiseks koos digitaalse liidesega selliste rakenduste jaoks nagu odavad kompassid ja magnetomeetria. Selle ühe kuni kahe kraadi kõrge täpsus ja täpsus võimaldab jalakäijate navigeerimist ja LBS -i rakendusi.

Soovitan: