Išsamus HMC5883L naudojimo su Arduino vadovas

  • HMC5883L prijungimas prie Arduino per I2C ryšį.
  • Kodas magnetinio lauko X, Y, Z ašims nuskaityti.
  • Sukurkite skaitmeninį kompasą reguliuodami magnetinę deklinaciją.

kodas hmc5883l arduino-3

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.


Būkite pirmas, kuris pakomentuos

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.