
Magnetometer HMC5883L je senzor, ki se pogosto uporablja v projektih Arduino zaradi svoje sposobnosti merjenja magnetnih polj v treh oseh. Zaradi tega je odlična izbira za ustvarjanje digitalnih kompasov, navigacijskih sistemov za drone in druga avtonomna vozila. Poleg tega, da je cenovno dostopen, je njegova integracija preprosta zahvaljujoč vmesniku I2C, zaradi česar je idealen za začetnike.
V tem članku se bomo poglobili v glavne značilnosti HMC5883L, njegovo povezavo z različnimi ploščami Arduino in praktične primere njegove uporabe. Na koncu boste lahko izvedli svoj projekt digitalnega kompasa z Arduinom in tako izkoristili ves potencial tega zmogljivega senzorja.
Kaj je HMC5883L in kako deluje?
HMC5883L je a triosni magnetometer ki meri komponente zemeljskega magnetnega polja v oseh X, Y in Z. To ne omogoča samo zaznavanja prisotnosti magnetnih polj, ampak omogoča tudi določitev orientacije z izračuni na podlagi dobljenih meritev. Zaradi teh lastnosti je idealen senzor za izdelavo orientacijskih sistemov, kot je digitalni kompas.
Senzor se običajno nahaja v modulih, kot je model GY-273, ki vključuje tudi potrebno elektroniko za lažjo neposredno povezavo s ploščami Arduino ali drugimi mikrokontrolerji. Njegov napajalnik je prilagodljiv in se lahko napaja tako s 3.3 V kot 5 V, zaradi česar je zelo vsestranski v smislu združljivosti z različnimi sistemi.
Arduino povezave
Povezovanje HMC5883L z Arduinom je zelo preprosto zahvaljujoč vmesniku I2C, ki ga uporablja. Ta komunikacija zahteva samo dva zatiča: SDA in SCL, ki mora biti priključen na ustrezne pine na plošči Arduino.
- za Arduino Uno, Nano in Mini: SDA se poveže na pin A4 in SCL na A5.
- Če uporabljate Arduino Mega ali Due: SDA mora biti priključen na pin 20 in SCL na pin 21.
- V primeru Arduino Leonardo: SDA gre na pin 2 in SCL na pin 3.
Ne pozabimo, da magnetometer deluje s fiksnim naslovom I2C 0x1E, zato ga ni mogoče spremeniti. Ta naslov je edinstven za to vrsto senzorja, kar pomeni, da ne moremo povezati več naprav HMC5883L na isto vodilo I2C.
Branje magnetnega polja
Glavna metoda delovanja HMC5883L je branje vrednosti magnetnega polja v vseh treh oseh. Za pridobitev teh vrednosti na Arduinu uporabljamo knjižnico, ki jo je razvil Jeff Rowberg. To knjigarno najdete na shrambe GitHub in ga prenesite za uporabo v Arduino IDE.
Ko je knjižnica nameščena, lahko senzor inicializirate in začnete brati vrednosti magnetnega polja. Tu je preprost primer, ki naredi prav to:
#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);
}
V tej kodi se magnetometer inicializira in vrednosti na treh oseh se berejo v zanki. Vsakič, ko izvedemo `loop()`, bodo vrednosti magnetnega polja v X, Y in Z prikazane na serijskem monitorju.
Nastavitve obsega in ojačanja
HMC5883L vam omogoča prilagajanje merilno območje magnetnega polja med ±0.88 Gaussa in ±8.1 Gaussa z različnimi stopnjami ojačanja. Privzeto območje je ±1.3 Gaussa in ga lahko spremenite tako, da ustreza vašim projektnim potrebam. To lahko storite z naslednjo vrstico v kodi:
magnetometro.setGain(value);
kjer je vrednost je celo število med 0 in 7, ki bo izbralo stopnjo ojačanja. Spodaj vam prikazujemo tabelo z ustreznimi vrednostmi:
| Valor | čin | Dobiček (LSB/Gauss) |
|---|---|---|
| 0 | ±0.88 Ga | 1370 |
| 1 | ±1.3 Ga | 1090 |
| 2 | ±1.9 Ga | 820 |
| 3 | ±2.5 Ga | 660 |
| 4 | ±4.0 Ga | 440 |
| 5 | ±4.7 Ga | 390 |
| 6 | ±5.6 Ga | 330 |
| 7 | ±8.1 Ga | 230 |
Izdelava digitalnega kompasa
Ena najpogostejših uporab HMC5883L je izdelava a digitalni kompas. Da bi to naredili, moramo izračunati kot med senzorjem in magnetnim severom z uporabo odčitkov osi X in Y. To dosežemo z uporabo formule:
float angulo = atan2(my, mx) * 180 / M_PI;
Ta vrednost vam bo dala orientacijski kot glede na magnetni sever. Če želite prilagoditi ta kot geografski sever, morate upoštevati magnetno deklinacijo vaše lokacije, ki si jo lahko ogledate na različnih spletnih mestih, kot sta www.ign.es ali www.ngdc.noaa.gov.
Pravilna magnetna deklinacija
Ko imate magnetno deklinacijo svojega položaja, jo morate samo odšteti od dobljenega kota. Na primer:
angulo -= declinacion;
Ko je kot negativen, lahko dodate 360 stopinj, da vedno dobite pozitivno vrednost, prilagojeno med 0 in 360 stopinjami:
if (angulo < 0) angulo += 360;
Ta nastavitev vam bo dala kompas, ki bo vedno natančno kazal na geografski sever.
V praksi lahko s tem senzorjem in nekaterimi knjižnicami dobite kompas v nekaj minutah. Vendar upoštevajte, da je HMC5883L senzor, občutljiv na zunanje motnje, kot so bližnje kovine ali polja, ki jih ustvarjajo visoki tokovi, kar lahko spremeni odčitke.