Umhlahlandlela ophelele wokusebenzisa i-HMC5883L nge-Arduino

  • Ukuxhumana kwe-HMC5883L ne-Arduino ngokuxhumana kwe-I2C.
  • Ikhodi yokufunda izimbazo ze-X, Y, Z zenkundla kazibuthe.
  • Dala ikhampasi yedijithali ngokulungisa ukwehla kazibuthe.

ikhodi ye-hmc5883l arduino-3

I-HMC5883L magnetometer iyinzwa esetshenziswa kabanzi kumaphrojekthi we-Arduino ngekhono layo lokukala izinkambu kazibuthe ngezimbazo ezintathu. Lokhu kukwenza kube ukukhetha okuhle kakhulu ekudaleni amakhampasi edijithali, amasistimu wokuzulazula wama-drones, nezinye izimoto ezizimele. Ngaphezu kokuthengeka, ukuhlanganiswa kwayo kulula ngenxa ye-interface yayo ye-I2C, okuyenza ilungele abaqalayo.

Kulesi sihloko sizocubungula izici eziyinhloko ze-HMC5883L, ukuxhumana kwayo namabhodi e-Arduino ahlukahlukene kanye nezibonelo ezingokoqobo zokusetshenziswa kwayo. Ekugcineni, uzokwazi ukusebenzisa iphrojekthi yakho yekhampasi yedijithali nge-Arduino, usebenzisa amandla aphelele ale nzwa enamandla.

Iyini i-HMC5883L futhi isebenza kanjani?

Ayikho imikhiqizo etholakele.

Idatha ye-HMC5883L i-magnetometer ye-eksisi emithathu elikala izingxenye zensimu kazibuthe Yomhlaba kuma-ax X, Y kanye no-Z Lokhu akuvumeli nje kuphela ukuba khona kwezinkundla kazibuthe, kodwa futhi kuvumela umumo ukuthi unqunywe ngezibalo ezisekelwe ezilinganisweni ezitholiwe. Lezi zici ziyenza ibe inzwa ekahle yokwenza amasistimu wokuma, njengekhampasi yedijithali.

Inzwa ivamise ukutholakala kumamojula afana nemodeli ye-GY-273, ehlanganisa nezinto zikagesi ezidingekayo ukuze kube lula ukuxhumana kwayo ngqo namabhodi e-Arduino noma amanye ama-microcontrollers. Ukunikezwa kwamandla kwayo kuyavumelana nezimo, futhi kunganikwa amandla ngazo zombili i-3.3V kanye ne-5V, okuyenza ibe nezinto ezihlukahlukene kakhulu mayelana nokuhambisana nezinhlelo ezahlukene.

Izixhumanisi ze-Arduino

Ayikho imikhiqizo etholakele.

Ukuxhuma i-HMC5883L ne-Arduino kulula ngempela sibonga isixhumi esibonakalayo se-I2C esisebenzisayo. Lokhu kuxhumana kudinga kuphela izikhonkwane ezimbili: I-SDA ne-SCL, okumele ixhunywe nezikhonkwane ezihambisanayo ebhodini le-Arduino.

  • para Arduino Uno, i-Nano ne-Mini: I-SDA ixhuma ukuphina i-A4 ne-SCL ku-A5.
  • Uma usebenzisa i-Arduino Mega noma i-Due: I-SDA kufanele ixhunywe ku-pin 20 kanye ne-SCL ukuze iphine u-21.
  • Endabeni ye-Arduino Leonardo: I-SDA iya ku-pin 2 kanye ne-SCL ukuze iphine u-3.

Singakhohlwa ukuthi i-magnetometer isebenza nekheli le-I2C elingaguquki le-0x1E, ngakho-ke akunakwenzeka ukuyishintsha. Leli kheli lihlukile kulolu hlobo lwenzwa, okusho ukuthi asikwazi ukuxhuma amadivayisi amaningi e-HMC5883L ebhasini elifanayo le-I2C.

I-Magnetic Field Reading

Indlela eyinhloko yokusebenza kwe-HMC5883L ukufunda amanani kazibuthe kuzo zonke izimbazo ezintathu. Ukuthola lawa magugu ku-Arduino, sisebenzisa umtapo wolwazi othuthukiswe nguJeff Rowberg. Ungathola lesi sitolo sezincwadi ku okugcina kwakho kweGitHub futhi uyilande ukuze isetshenziswe ku-Arduino IDE.

Uma umtapo wezincwadi usufakiwe, inzwa ingaqalwa futhi iqale ukufunda amanani kazibuthe. Nasi isibonelo esilula senza lokhu nje:

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

Kule khodi, i-magnetometer iyaqalwa futhi amanani kuwo womathathu ama-ax afundwa ku-loop. Ngaso sonke isikhathi uma senza `loop()`, amanani wenkundla kazibuthe ku-X, Y kanye no-Z azoboniswa kusiqapha se-serial.

Izilungiselelo Zebanga Nenzuzo

I-HMC5883L ikuvumela ukuthi ulungise i- ububanzi bokulinganisa insimu kazibuthe phakathi kuka-±0.88 Gauss kanye ne-±8.1 Gauss enamazinga ahlukene enzuzo. Ububanzi obuzenzakalelayo buyi-±1.3 Gauss, futhi ungabulungisa ukuze buhambisane nezidingo zephrojekthi yakho. Lokhu kungenziwa ngokusebenzisa umugqa olandelayo ngaphakathi kwekhodi:

magnetometro.setGain(value);

Kuphi Inani iyinombolo ephakathi kuka-0 no-7, ezokhetha izinga lokuzuza. Ngezansi sikubonisa ithebula elinamanani ahambisanayo:

I-Valor Rango Inzuzo (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

Ukwakha ikhampasi yedijithali

Enye yezinto ezisetshenziswa kakhulu i-HMC5883L ukwakha i-a ikhampasi yedijithali. Ukuze senze lokhu, sidinga ukubala i-engeli phakathi kwenzwa nenyakatho kazibuthe sisebenzisa ukufundwa kwezimbazo ze-X kanye ne-Y Lokhu kufinyelelwa kusetshenziswa ifomula.

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

Leli nani lizokunikeza i-engeli yokuma ngokuphathelene neNyakatho kazibuthe. Ukuze ulungise le engeli ukuze indawo esenyakatho, kufanele ucabangele ukwehla kazibuthe yendawo okuyo, ongayithinta kumawebhusayithi ahlukahlukene njenge-www.ign.es noma www.ngdc.noaa.gov.

Lungisa ukwehla kazibuthe

Uma usunokwehla kazibuthe kwesikhundla sakho, kufanele nje ukususe engeli etholiwe. Ngokwesibonelo:

angulo -= declinacion;

Uma i-engeli iyinegethivu, ungakwazi ukwengeza ama-degree angu-360 ukuze njalo uthole inani eliphozithivu elilungisiwe phakathi kuka-0 no-360 degrees:

if (angulo < 0) angulo += 360;

Lesi silungiselelo sizokunikeza ikhampasi ezohlala ikhomba ngokunembile endaweni yaseNyakatho.

Ngokwenza lokhu, ngale nzwa neminye imitapo yolwazi ungaba nekhampasi emizuzwini embalwa. Nokho, sicela uqaphele ukuthi i-HMC5883L iyinzwa ezwelayo ekuphazamisekeni kwangaphandle, njengezinsimbi eziseduze noma izinkambu ezikhiqizwe amaza aphezulu, ezingashintsha ukufundwa.


Engeza njengomthombo okhethwayo ku-Google