Pilnīga rokasgrāmata par HMC5883L lietošanu ar Arduino

  • HMC5883L savienojums ar Arduino, izmantojot I2C komunikāciju.
  • Kods, lai nolasītu magnētiskā lauka X, Y, Z asis.
  • Izveidojiet digitālo kompasu, pielāgojot magnētisko deklināciju.

kods hmc5883l arduino-3

Magnetometrs HMC5883L ir sensors, ko plaši izmanto Arduino projektos, jo tas spēj izmērīt magnētiskos laukus trīs asīs. Tas padara to par lielisku izvēli digitālo kompasu, bezpilota lidaparātu navigācijas sistēmu un citu autonomu transportlīdzekļu izveidei. Papildus tam, ka tā ir pieejama par pieņemamu cenu, tā integrācija ir vienkārša, pateicoties tā I2C interfeisam, padarot to ideāli piemērotu iesācējiem.

Šajā rakstā mēs iedziļināsimies HMC5883L galvenajās iezīmēs, savienojumā ar dažādām Arduino platēm un praktiskos tā lietošanas piemēros. Galu galā jūs varēsiet īstenot savu digitālā kompasa projektu ar Arduino, pilnībā izmantojot šī jaudīgā sensora potenciālu.

Kas ir HMC5883L un kā tas darbojas?

HMC5883L ir a trīs asu magnetometrs kas mēra Zemes magnētiskā lauka komponentus X, Y un Z asīs Tas ļauj ne tikai noteikt magnētisko lauku klātbūtni, bet arī noteikt orientāciju, izmantojot aprēķinus, pamatojoties uz iegūtajiem mērījumiem. Šīs funkcijas padara to par ideālu sensoru orientācijas sistēmu, piemēram, digitālā kompasa, izveidei.

Sensors parasti ir atrodams tādos moduļos kā GY-273 modelis, kas ietver arī nepieciešamo elektroniku, lai atvieglotu tā tiešu savienojumu ar Arduino platēm vai citiem mikrokontrolleriem. Tā barošanas avots ir elastīgs, un to var darbināt gan ar 3.3 V, gan 5 V, kas padara to ļoti daudzpusīgu saderības ziņā ar dažādām sistēmām.

Arduino savienojumi

HMC5883L savienošana ar Arduino ir patiešām vienkārša, pateicoties tā izmantotajam I2C interfeisam. Šai saziņai nepieciešami tikai divi tapas: SDA un SCL, kas jāsavieno ar atbilstošajām tapām uz Arduino plates.

  • līdz Arduino Uno, Nano un Mini: SDA savieno ar tapu A4 un SCL ar A5.
  • Ja izmantojat Arduino Mega vai Due: SDA jābūt savienotam ar kontaktu 20 un SCL ar kontaktu 21.
  • Arduino Leonardo gadījumā: SDA iet uz tapu 2 un SCL uz tapu 3.

Neaizmirsīsim, ka magnetometrs darbojas ar fiksētu I2C adresi 0x1E, tāpēc to nav iespējams mainīt. Šī adrese ir unikāla šāda veida sensoram, kas nozīmē, ka mēs nevaram savienot vairākas HMC5883L ierīces vienā I2C kopnē.

Magnētiskā lauka lasīšana

Galvenā HMC5883L darbības metode ir magnētiskā lauka vērtību nolasīšana visās trīs asīs. Lai iegūtu šīs vērtības Arduino, mēs izmantojam Džefa Rouberga izstrādāto bibliotēku. Šo grāmatnīcu varat atrast vietnē jūsu GitHub krātuve un lejupielādējiet to izmantošanai Arduino IDE.

Kad bibliotēka ir instalēta, sensoru var inicializēt un sākt nolasīt magnētiskā lauka vērtības. Šeit ir vienkāršs piemērs, kā rīkoties šādi:

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

Šajā kodā magnetometrs tiek inicializēts un vērtības uz visām trim asīm tiek nolasītas cilpā. Katru reizi, kad izpildām cilpu()”, sērijas monitorā tiks parādītas magnētiskā lauka vērtības X, Y un Z.

Diapazona un pastiprinājuma iestatījumi

HMC5883L ļauj pielāgot magnētiskā lauka mērīšanas diapazons no ±0.88 Gauss līdz ±8.1 Gauss ar dažādiem pastiprinājuma līmeņiem. Noklusējuma diapazons ir ±1.3 Gauss, un jūs varat to modificēt, lai tas atbilstu jūsu projekta vajadzībām. To var izdarīt, izmantojot šādu koda rindiņu:

magnetometro.setGain(value);

Kur vērtība ir vesels skaitlis no 0 līdz 7, kas izvēlēsies pastiprinājuma līmeni. Zemāk mēs parādām tabulu ar atbilstošajām vērtībām:

varonība Rango Ieguvums (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

Digitālā kompasa izveide

Viens no visizplatītākajiem HMC5883L lietojumiem ir a digitālais kompass. Lai to izdarītu, mums jāaprēķina leņķis starp sensoru un magnētiskajiem ziemeļiem, izmantojot X un Y asu rādījumus. Tas tiek panākts, izmantojot formulu:

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

Šī vērtība sniegs orientācijas leņķi attiecībā pret magnētiskajiem ziemeļiem. Lai pielāgotu šo leņķi, lai ģeogrāfiskie ziemeļi, jums ir jāņem vērā jūsu atrašanās vietas magnētiskā deklinācija, ko varat uzzināt dažādās vietnēs, piemēram, www.ign.es vai www.ngdc.noaa.gov.

Pareiza magnētiskā deklinācija

Kad esat ieguvis savas pozīcijas magnētisko deklināciju, jums tā vienkārši ir jāatņem no iegūtā leņķa. Piemēram:

angulo -= declinacion;

Ja leņķis ir negatīvs, varat pievienot 360 grādus, lai vienmēr iegūtu pozitīvu vērtību, kas noregulēta no 0 līdz 360 grādiem:

if (angulo < 0) angulo += 360;

Šis iestatījums sniegs jums kompasu, kas vienmēr precīzi norādīs uz ģeogrāfiskajiem ziemeļiem.

Praksē ar šo sensoru un dažām bibliotēkām kompasu var iegūt dažu minūšu laikā. Tomēr, lūdzu, ņemiet vērā, ka HMC5883L ir sensors, kas ir jutīgs pret ārējiem traucējumiem, piemēram, tuvumā esošiem metāliem vai laukiem, ko rada liela strāva, kas var mainīt rādījumus.


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.