HMC5883L magnetometras yra jutiklis, plačiai naudojamas Arduino projektuose, nes jis gali matuoti magnetinius laukus trijose ašyse. Dėl to jis yra puikus pasirinkimas kuriant skaitmeninius kompasus, bepiločių orlaivių navigacijos sistemas ir kitas autonomines transporto priemones. Be to, jis yra prieinamas, jį paprasta integruoti dėl I2C sąsajos, todėl jis idealiai tinka pradedantiesiems.
Šiame straipsnyje mes pasigilinsime į pagrindines HMC5883L savybes, jo ryšį su įvairiomis Arduino plokštėmis ir praktinius jo naudojimo pavyzdžius. Galų gale galėsite įgyvendinti savo skaitmeninio kompaso projektą su Arduino, išnaudodami visas šio galingo jutiklio galimybes.
Kas yra HMC5883L ir kaip jis veikia?
HMC5883L yra a trijų ašių magnetometras kuris matuoja Žemės magnetinio lauko komponentus X, Y ir Z ašyse Tai leidžia ne tik aptikti magnetinių laukų buvimą, bet ir pagal gautus matavimus nustatyti orientaciją. Dėl šių savybių jis yra idealus jutiklis kuriant orientavimo sistemas, tokias kaip skaitmeninis kompasas.
Jutiklis dažniausiai randamas tokiuose moduliuose kaip GY-273 modelis, kuriame taip pat yra reikalinga elektronika, palengvinanti jo tiesioginį ryšį su Arduino plokštėmis ar kitais mikrovaldikliais. Jo maitinimo šaltinis yra lankstus ir gali būti maitinamas tiek 3.3 V, tiek 5 V, todėl jis yra labai universalus suderinamumo su skirtingomis sistemomis požiūriu.
Arduino jungtys
HMC5883L prijungimas prie Arduino yra tikrai paprastas dėl jo naudojamos I2C sąsajos. Šiam ryšiui reikia tik dviejų kaiščių: SDA ir SCL, kuris turi būti prijungtas prie atitinkamų Arduino plokštės kaiščių.
- į Arduino Uno, Nano ir Mini: SDA jungiasi prie A4 kaiščio, o SCL – prie A5.
- Jei naudojate Arduino Mega arba Due: SDA turi būti prijungtas prie 20 kaiščio, o SCL - prie 21 kaiščio.
- „Arduino Leonardo“ atveju: SDA eina į 2 kaištį, o SCL – į 3 kaištį.
Nepamirškime, kad magnetometras veikia su fiksuotu I2C adresu 0x1E, todėl jo pakeisti neįmanoma. Šis adresas yra unikalus šio tipo jutikliams, o tai reiškia, kad negalime prijungti kelių HMC5883L įrenginių prie tos pačios I2C magistralės.
Magnetinio lauko skaitymas
Pagrindinis HMC5883L veikimo būdas yra magnetinio lauko verčių skaitymas visose trijose ašyse. Norėdami gauti šias reikšmes „Arduino“, naudojame Jeffo Rowbergo sukurtą biblioteką. Šį knygyną galite rasti adresu jūsų „GitHub“ saugykla ir atsisiųskite jį naudoti „Arduino IDE“.
Įdiegus biblioteką, jutiklį galima inicijuoti ir pradėti skaityti magnetinio lauko vertes. Štai paprastas pavyzdys, kaip tai padaryti:
#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);
}
Šiame kode magnetometras inicijuojamas ir visų trijų ašių reikšmės nuskaitomos kilpa. Kiekvieną kartą, kai vykdome „loop()“, magnetinio lauko reikšmės X, Y ir Z bus rodomos serijiniame monitoriuje.
Diapazono ir stiprinimo nustatymai
HMC5883L leidžia reguliuoti magnetinio lauko matavimo diapazonas nuo ±0.88 Gauso iki ±8.1 Gauso su skirtingais stiprinimo lygiais. Numatytasis diapazonas yra ±1.3 Gauso ir galite jį modifikuoti, kad atitiktų projekto poreikius. Tai galima padaryti naudojant šią kodo eilutę:
magnetometro.setGain(value);
Kur kainas yra sveikasis skaičius nuo 0 iki 7, kuris parinks stiprinimo lygį. Žemiau pateikiame lentelę su atitinkamomis reikšmėmis:
drąsa | Rango | Gain (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 |
Skaitmeninio kompaso kūrimas
Vienas iš labiausiai paplitusių HMC5883L naudojimo būdų yra pastatymas a skaitmeninis kompasas. Norėdami tai padaryti, turime apskaičiuoti kampą tarp jutiklio ir magnetinės šiaurės, naudodami X ir Y ašių rodmenis. Tai pasiekiama naudojant formulę:
float angulo = atan2(my, mx) * 180 / M_PI;
Ši vertė parodys orientacijos kampą magnetinės šiaurės atžvilgiu. Norėdami sureguliuoti šį kampą iki geografinė šiaurė, turite atsižvelgti į savo vietos magnetinę deklinaciją, kurią galite sužinoti įvairiose svetainėse, pvz., www.ign.es arba www.ngdc.noaa.gov.
Teisinga magnetinė deklinacija
Kai turėsite savo padėties magnetinį nuokrypį, tereikia jį atimti iš gauto kampo. Pavyzdžiui:
angulo -= declinacion;
Kai kampas yra neigiamas, galite pridėti 360 laipsnių, kad visada gautumėte teigiamą vertę, reguliuojamą nuo 0 iki 360 laipsnių:
if (angulo < 0) angulo += 360;
Šis nustatymas suteiks jums kompasą, kuris visada tiksliai nurodys geografinę šiaurę.
Praktiškai su šiuo jutikliu ir kai kuriomis bibliotekomis kompasą galite turėti per kelias minutes. Tačiau atkreipkite dėmesį, kad HMC5883L yra jutiklis, jautrus išoriniams trukdžiams, pvz., šalia esantiems metalams ar laukams, kuriuos sukuria didelės srovės, kurie gali pakeisti rodmenis.