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.