
Магнетометар ХМЦ5883Л је сензор који се широко користи у Ардуино пројектима због своје способности да мери магнетна поља у три осе. Ово га чини одличним избором за креирање дигиталних компаса, навигационих система за дронове и других аутономних возила. Осим што је приступачна, његова интеграција је једноставна захваљујући И2Ц интерфејсу, што га чини идеалним за почетнике.
У овом чланку ћемо се упустити у главне карактеристике ХМЦ5883Л, његову везу са разним Ардуино плочама и практичне примере за његову употребу. На крају, моћи ћете да имплементирате сопствени пројекат дигиталног компаса са Ардуином, користећи пун потенцијал овог моћног сензора.
Шта је ХМЦ5883Л и како функционише?
ХМЦ5883Л је а троосни магнетометар који мери компоненте Земљиног магнетног поља у осама Кс, И и З. Ово не само да омогућава да се детектује присуство магнетних поља, већ и да се одреди оријентација кроз прорачуне на основу добијених мерења. Ове карактеристике га чине идеалним сензором за прављење система за оријентацију, као што је дигитални компас.
Сензор се обично налази у модулима као што је модел ГИ-273, који такође укључује неопходну електронику како би се олакшало његово директно повезивање са Ардуино плочама или другим микроконтролерима. Његово напајање је флексибилно и може се напајати са 3.3В и 5В, што га чини веома разноврсним у смислу компатибилности са различитим системима.
Ардуино везе
Повезивање ХМЦ5883Л са Ардуином је заиста једноставно захваљујући И2Ц интерфејсу који користи. Ова комуникација захтева само две игле: СДА и СЦЛ, који мора бити повезан са одговарајућим пиновима на Ардуино плочи.
- у Arduino Uno, Нано и Мини: СДА се повезује на пин А4 и СЦЛ на А5.
- Ако користите Ардуино Мега или Дуе: СДА мора бити повезан на пин 20, а СЦЛ на пин 21.
- У случају Ардуино Леонарда: СДА иде на пин 2, а СЦЛ на пин 3.
Не заборавимо да магнетометар ради са фиксном И2Ц адресом 0к1Е, па је није могуће променити. Ова адреса је јединствена за овај тип сензора, што значи да не можемо повезати више ХМЦ5883Л уређаја на исту И2Ц магистралу.
Очитавање магнетног поља
Главни метод рада ХМЦ5883Л је очитавање вредности магнетног поља у све три осе. Да бисмо добили ове вредности на Ардуину, користимо библиотеку коју је развио Јефф Ровберг. Ову књижару можете пронаћи на ваше ГитХуб спремиште и преузмите га за употребу у Ардуино ИДЕ.
Када се библиотека инсталира, сензор се може иницијализовати и почети да чита вредности магнетног поља. Ево једноставног примера који ради управо ово:
#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);
}
У овом коду се магнетометар иницијализује и вредности на све три осе се читају у петљи. Сваки пут када извршимо `лооп()`, вредности магнетног поља у Кс, И и З ће бити приказане на серијском монитору.
Подешавања опсега и појачања
ХМЦ5883Л вам омогућава да подесите опсег мерења магнетног поља између ±0.88 Гауса и ±8.1 Гауса са различитим нивоима појачања. Подразумевани опсег је ±1.3 Гауса и можете га модификовати тако да одговара потребама вашег пројекта. Ово се може урадити коришћењем следећег реда у коду:
magnetometro.setGain(value);
Где вредност је цео број између 0 и 7, који ће изабрати ниво појачања. У наставку вам приказујемо табелу са одговарајућим вредностима:
| храброст | ранго | појачање (ЛСБ/гаус) |
|---|---|---|
| 0 | ±0.88Га | 1370 |
| 1 | ±1.3Га | 1090 |
| 2 | ±1.9Га | 820 |
| 3 | ±2.5Га | 660 |
| 4 | ±4.0Га | 440 |
| 5 | ±4.7Га | 390 |
| 6 | ±5.6Га | 330 |
| 7 | ±8.1Га | 230 |
Изградња дигиталног компаса
Једна од најчешћих употреба ХМЦ5883Л је прављење а дигитални компас. Да бисмо то урадили, морамо израчунати угао између сензора и магнетног севера користећи очитавања Кс и И оса. Ово се постиже помоћу формуле:
float angulo = atan2(my, mx) * 180 / M_PI;
Ова вредност ће вам дати угао оријентације у односу на магнетни север. Да бисте подесили овај угао на географски север, морате узети у обзир магнетну деклинацију ваше локације, коју можете консултовати на различитим веб локацијама као што су ввв.игн.ес или ввв.нгдц.ноаа.гов.
Исправна магнетна деклинација
Када добијете магнетну деклинацију своје позиције, само морате да је одузмете од добијеног угла. на пример:
angulo -= declinacion;
Када је угао негативан, можете додати 360 степени да бисте увек добили позитивну вредност подешену између 0 и 360 степени:
if (angulo < 0) angulo += 360;
Ово подешавање ће вам дати компас који ће увек тачно показивати на географски север.
У пракси, са овим сензором и неким библиотекама можете имати компас за неколико минута. Међутим, имајте на уму да је ХМЦ5883Л сензор осетљив на спољашње сметње, као што су оближњи метали или поља која стварају велике струје, што може да промени очитавања.