Kompletan vodič za korištenje HMC5883L sa Arduinom

  • Povezivanje HMC5883L sa Arduinom putem I2C komunikacije.
  • Kod za čitanje X, Y, Z osi magnetnog polja.
  • Napravite digitalni kompas podešavanjem magnetne deklinacije.

kod hmc5883l arduino-3

Magnetometar HMC5883L je senzor koji se široko koristi u Arduino projektima zbog svoje sposobnosti mjerenja magnetnih polja u tri ose. To ga čini odličnim izborom za kreiranje digitalnih kompasa, navigacionih sistema za dronove i drugih autonomnih vozila. Osim što je pristupačna, njegova integracija je jednostavna zahvaljujući I2C interfejsu, što ga čini idealnim za početnike.

U ovom ćemo članku proučiti glavne karakteristike HMC5883L, njegovu povezanost s raznim Arduino pločama i praktične primjere za njegovu upotrebu. Na kraju, moći ćete implementirati svoj vlastiti projekt digitalnog kompasa s Arduinom, koristeći puni potencijal ovog moćnog senzora.

Šta je HMC5883L i kako radi?

Nije pronađen nijedan proizvod.

HMC5883L je a troosni magnetometar koji mjeri komponente Zemljinog magnetnog polja u osama X, Y i Z. Ovo ne samo da omogućava da se detektuje prisustvo magnetnih polja, već i da se odredi orijentacija kroz proračune na osnovu dobijenih mjerenja. Ove karakteristike ga čine idealnim senzorom za pravljenje sistema za orijentaciju, kao što je digitalni kompas.

Senzor se obično nalazi u modulima kao što je model GY-273, koji također uključuje neophodnu elektroniku za olakšavanje direktnog povezivanja s Arduino pločama ili drugim mikrokontrolerima. Njegovo napajanje je fleksibilno i može se napajati sa 3.3V i 5V, što ga čini veoma raznovrsnim u smislu kompatibilnosti sa različitim sistemima.

Arduino veze

Nije pronađen nijedan proizvod.

Povezivanje HMC5883L sa Arduinom je zaista jednostavno zahvaljujući I2C sučelju koje koristi. Ova komunikacija zahtijeva samo dvije igle: SDA i SCL, koji se mora spojiti na odgovarajuće pinove na Arduino ploči.

  • para Arduino Uno, Nano i Mini: SDA se povezuje na pin A4 i SCL na A5.
  • Ako koristite Arduino Mega ili Due: SDA mora biti spojen na pin 20, a SCL na pin 21.
  • U slučaju Arduino Leonarda: SDA ide na pin 2, a SCL na pin 3.

Ne zaboravimo da magnetometar radi sa fiksnom I2C adresom 0x1E, pa je nije moguće promijeniti. Ova adresa je jedinstvena za ovaj tip senzora, što znači da ne možemo povezati više HMC5883L uređaja na istu I2C sabirnicu.

Očitavanje magnetnog polja

Glavna metoda rada HMC5883L je očitavanje vrijednosti magnetnog polja u sve tri ose. Da bismo dobili ove vrijednosti na Arduinu, koristimo biblioteku koju je razvio Jeff Rowberg. Ovu knjižaru možete pronaći na adresi vaše GitHub spremište i preuzmite ga za upotrebu u Arduino IDE.

Kada se biblioteka instalira, senzor se može inicijalizirati i početi čitati vrijednosti magnetnog polja. Evo jednostavnog primjera koji radi upravo ovo:

#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);
}

U ovom kodu se magnetometar inicijalizira i vrijednosti na tri ose se čitaju u petlji. Svaki put kada izvršimo `loop()`, vrijednosti magnetnog polja u X, Y i Z će biti prikazane na serijskom monitoru.

Postavke dometa i pojačanja

HMC5883L vam omogućava da podesite opseg mjerenja magnetnog polja između ±0.88 Gausa i ±8.1 Gausa sa različitim nivoima pojačanja. Zadani raspon je ±1.3 Gauss i možete ga modificirati kako bi odgovarao potrebama vašeg projekta. To se može učiniti pomoću sljedeće linije unutar koda:

magnetometro.setGain(value);

Gde vrijednost je cijeli broj između 0 i 7, koji će odabrati nivo pojačanja. U nastavku vam prikazujemo tabelu sa odgovarajućim vrijednostima:

hrabrost Rango pojačanje (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

Izgradnja digitalnog kompasa

Jedna od najčešćih upotreba HMC5883L je izrada a digitalni kompas. Da bismo to učinili, moramo izračunati ugao između senzora i magnetskog sjevera koristeći očitanja X i Y osi. To se postiže pomoću formule:

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

Ova vrijednost će vam dati orijentacijski ugao u odnosu na magnetni sjever. Za podešavanje ovog ugla na geografski sjever, morate uzeti u obzir magnetnu deklinaciju vaše lokacije, koju možete konsultovati na različitim web stranicama kao što su www.ign.es ili www.ngdc.noaa.gov.

Ispravna magnetna deklinacija

Kada dobijete magnetnu deklinaciju svoje pozicije, samo je morate oduzeti od dobijenog ugla. na primjer:

angulo -= declinacion;

Kada je ugao negativan, možete dodati 360 stepeni da biste uvek dobili pozitivnu vrednost podešenu između 0 i 360 stepeni:

if (angulo < 0) angulo += 360;

Ova postavka će vam dati kompas koji će uvijek točno pokazivati ​​na geografski sjever.

U praksi, sa ovim senzorom i nekim bibliotekama možete imati kompas za nekoliko minuta. Međutim, imajte na umu da je HMC5883L senzor osjetljiv na vanjske smetnje, kao što su obližnji metali ili polja koja stvaraju velike struje, što može promijeniti očitanja.


Dodaj kao preferirani izvor na Googleu