Täielik juhend HMC5883L kasutamiseks koos Arduinoga

  • HMC5883L ühendamine Arduinoga I2C side kaudu.
  • Kood magnetvälja X-, Y-, Z-telgede lugemiseks.
  • Looge digitaalne kompass, reguleerides magnetilist deklinatsiooni.

kood hmc5883l arduino-3

Magnetomeeter HMC5883L on Arduino projektides laialdaselt kasutatav andur, mis võimaldab mõõta magnetvälju kolmel teljel. See teeb sellest suurepärase valiku digitaalsete kompasside, droonide navigatsioonisüsteemide ja muude autonoomsete sõidukite loomiseks. Lisaks taskukohasusele on selle integreerimine lihtne tänu I2C liidesele, mistõttu on see ideaalne algajatele.

Selles artiklis käsitleme HMC5883L põhifunktsioone, selle ühendamist erinevate Arduino plaatidega ja praktilisi näiteid selle kasutamiseks. Lõpuks saate Arduinoga ellu viia oma digitaalse kompassi projekti, kasutades ära selle võimsa anduri kogu potentsiaali.

Mis on HMC5883L ja kuidas see töötab?

HMC5883L on a kolmeteljeline magnetomeeter mis mõõdab Maa magnetvälja komponente X-, Y- ja Z-teljel See võimaldab mitte ainult tuvastada magnetväljade olemasolu, vaid võimaldab määrata ka orientatsiooni läbi arvutuste, mis põhinevad saadud mõõtmistel. Need omadused muudavad selle ideaalseks anduriks orientatsioonisüsteemide, näiteks digitaalse kompassi, loomiseks.

Tavaliselt leidub andur sellistes moodulites nagu GY-273 mudel, mis sisaldab ka vajalikku elektroonikat, et hõlbustada selle otseühendust Arduino plaatide või muude mikrokontrolleritega. Selle toiteallikas on paindlik ja seda saab toita nii 3.3 V kui ka 5 V pingega, mis muudab selle erinevate süsteemidega ühilduvuse osas väga mitmekülgseks.

Arduino ühendused

HMC5883L ühendamine Arduinoga on tänu kasutatavale I2C liidesele väga lihtne. See suhtlus nõuab ainult kahte tihvti: SDA ja SCL, mis tuleb ühendada Arduino plaadi vastavate tihvtidega.

  • et Arduino Uno, Nano ja Mini: SDA ühendub pistikuga A4 ja SCL A5-ga.
  • Kui kasutate Arduino Mega või Due: SDA peab olema ühendatud viiguga 20 ja SCL kontaktiga 21.
  • Arduino Leonardo puhul: SDA läheb viigule 2 ja SCL viigule 3.

Ärgem unustagem, et magnetomeeter töötab fikseeritud I2C aadressiga 0x1E, seega pole võimalik seda muuta. See aadress on seda tüüpi anduri jaoks ainulaadne, mis tähendab, et me ei saa ühendada mitut HMC5883L-seadet samale I2C siinile.

Magnetvälja lugemine

HMC5883L peamine töömeetod on magnetvälja väärtuste lugemine kõigil kolmel teljel. Nende väärtuste saamiseks Arduinos kasutame Jeff Rowbergi välja töötatud raamatukogu. Selle raamatupoe leiate aadressilt teie GitHubi hoidla ja laadige see alla Arduino IDE-s kasutamiseks.

Kui raamatukogu on installitud, saab anduri lähtestada ja alustada magnetvälja väärtuste lugemist. Siin on lihtne näide, mis teeb just seda:

#include "Wire.h"
#include "I2Cdev.h"
#include "HMC5883L.h"
HMC5883L magnetometro;
int16_t mx, my, mz;

void setup() {
Serial.begin(9600);
Wire.begin();
magnetometro.initialize();
}

void loop(){
magnetometro.getHeading(&mx, &my, &mz);
Serial.print("mx: "); Serial.print(mx);
Serial.print(" my: "); Serial.print(my);
Serial.print(" mz: "); Serial.println(mz);
delay(100);
}

Selles koodis initsialiseeritakse magnetomeeter ja kõigi kolme telje väärtused loetakse tsüklina. Iga kord, kui käivitame funktsiooni "loop()", kuvatakse jadamonitoril X, Y ja Z magnetvälja väärtused.

Vahemiku ja võimenduse sätted

HMC5883L võimaldab teil reguleerida magnetvälja mõõtmisvahemik vahemikus ±0.88 Gauss kuni ±8.1 Gauss erinevate võimendustasemetega. Vaikevahemik on ±1.3 Gaussi ja saate seda oma projekti vajaduste järgi muuta. Seda saab teha, kasutades koodis järgmist rida:

magnetometro.setGain(value);

Kus väärtus on täisarv vahemikus 0 kuni 7, mis valib võimenduse taseme. Allpool näitame teile vastavate väärtustega tabelit:

vaprus Rango Kasum (LSB/Gauss)
0 ±0.88Ga 1370
1 ±1.3Ga 1090
2 ±1.9Ga 820
3 ±2.5Ga 660
4 ±4.0Ga 440
5 ±4.7Ga 390
6 ±5.6Ga 330
7 ±8.1Ga 230

Digitaalse kompassi ehitamine

Üks HMC5883L levinumaid kasutusviise on a digitaalne kompass. Selleks peame arvutama nurga anduri ja magnetilise põhja vahel, kasutades X- ja Y-telgede näitu. See saavutatakse järgmise valemi abil:

float angulo = atan2(my, mx) * 180 / M_PI;

See väärtus annab teile orientatsiooninurga magnetilise põhja suhtes. Selle nurga reguleerimiseks geograafiline põhjaosa, peate arvestama oma asukoha magnetilise deklinatsiooniga, mida saate vaadata erinevatel veebisaitidel, näiteks www.ign.es või www.ngdc.noaa.gov.

Õige magnetiline deklinatsioon

Kui teil on oma asukoha magnetiline deklinatsioon, peate selle saadud nurgast lahutama. Näiteks:

angulo -= declinacion;

Kui nurk on negatiivne, saate lisada 360 kraadi, et saada alati positiivne väärtus vahemikus 0 kuni 360 kraadi:

if (angulo < 0) angulo += 360;

See seade annab teile kompassi, mis näitab alati täpselt geograafilist põhja.

Praktikas saab selle anduri ja mõne raamatukoguga kompassi kätte mõne minutiga. Pange tähele, et HMC5883L on andur, mis on tundlik väliste häirete suhtes, nagu lähedalasuvad metallid või suure voolu tekitatud väljad, mis võivad näitu muuta.


Ole esimene kommentaar

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.