Kompletní průvodce používáním HMC5883L s Arduinem

  • Propojení HMC5883L s Arduinem přes I2C komunikaci.
  • Kód pro čtení os X, Y, Z magnetického pole.
  • Vytvořte digitální kompas úpravou magnetické deklinace.

kód hmc5883l arduino-3

Magnetometr HMC5883L je senzor široce používaný v projektech Arduino pro jeho schopnost měřit magnetická pole ve třech osách. Díky tomu je vynikající volbou pro vytváření digitálních kompasů, navigačních systémů pro drony a další autonomní vozidla. Kromě toho, že je cenově dostupný, jeho integrace je jednoduchá díky rozhraní I2C, takže je ideální pro začátečníky.

V tomto článku se podíváme na hlavní vlastnosti HMC5883L, jeho propojení s různými deskami Arduino a praktické příklady jeho použití. Nakonec budete moci realizovat svůj vlastní projekt digitálního kompasu s Arduinem a využít tak plný potenciál tohoto výkonného senzoru.

Co je HMC5883L a jak funguje?

HMC5883L je a tříosý magnetometr který měří složky magnetického pole Země v osách X, Y a Z To umožňuje nejen detekovat přítomnost magnetických polí, ale také umožňuje určit orientaci pomocí výpočtů na základě získaných měření. Tyto vlastnosti z něj dělají ideální snímač pro vytváření orientačních systémů, jako je digitální kompas.

Senzor se obvykle nachází v modulech, jako je model GY-273, který také obsahuje potřebnou elektroniku pro usnadnění jeho přímého propojení s deskami Arduino nebo jinými mikrokontroléry. Jeho napájecí zdroj je flexibilní a lze jej napájet jak 3.3V, tak 5V, díky čemuž je velmi univerzální z hlediska kompatibility s různými systémy.

Připojení Arduino

Propojení HMC5883L s Arduinem je opravdu jednoduché díky I2C rozhraní, které používá. Tato komunikace vyžaduje pouze dva piny: SDA a SCL, který musí být připojen k odpovídajícím pinům na desce Arduino.

  • na Arduino Uno, Nano a Mini: SDA se připojuje ke kolíku A4 a SCL k A5.
  • Pokud používáte Arduino Mega nebo Due: SDA musí být připojeno ke kolíku 20 a SCL ke kolíku 21.
  • V případě Arduino Leonardo: SDA jde na pin 2 a SCL na pin 3.

Nezapomeňme, že magnetometr pracuje s pevnou I2C adresou 0x1E, není tedy možné ji měnit. Tato adresa je pro tento typ senzoru jedinečná, což znamená, že nemůžeme připojit více zařízení HMC5883L na stejnou sběrnici I2C.

Čtení magnetického pole

Hlavním způsobem provozu HMC5883L je čtení hodnot magnetického pole ve všech třech osách. K získání těchto hodnot na Arduinu používáme knihovnu vyvinutou Jeffem Rowbergem. Toto knihkupectví najdete na vaše úložiště GitHub a stáhněte si jej pro použití v Arduino IDE.

Jakmile je knihovna nainstalována, lze senzor inicializovat a začít číst hodnoty magnetického pole. Zde je jednoduchý příklad, jak to udělat:

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

V tomto kódu je magnetometr inicializován a hodnoty na všech třech osách jsou čteny ve smyčce. Pokaždé, když spustíme `loop()`, hodnoty magnetického pole v X, Y a Z se zobrazí na sériovém monitoru.

Nastavení rozsahu a zisku

HMC5883L vám umožňuje nastavit rozsah měření magnetického pole mezi ±0.88 Gauss a ±8.1 Gauss s různými úrovněmi zisku. Výchozí rozsah je ±1.3 Gauss a můžete jej upravit tak, aby vyhovoval potřebám vašeho projektu. To lze provést pomocí následujícího řádku v kódu:

magnetometro.setGain(value);

kde hodnota je celé číslo mezi 0 a 7, které vybere úroveň zisku. Níže vám ukážeme tabulku s odpovídajícími hodnotami:

chrabrost Rango Zisk (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

Stavba digitálního kompasu

Jedním z nejběžnějších použití HMC5883L je budování a digitální kompas. K tomu musíme vypočítat úhel mezi senzorem a magnetickým severem pomocí hodnot os X a Y Toho je dosaženo pomocí vzorce:

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

Tato hodnota vám dá úhel orientace vzhledem k magnetickému severu. Chcete-li nastavit tento úhel geografický sever, musíte vzít v úvahu magnetickou deklinaci vaší polohy, kterou můžete konzultovat na různých webových stránkách, jako jsou www.ign.es nebo www.ngdc.noaa.gov.

Správná magnetická deklinace

Jakmile budete mít magnetickou deklinaci vaší polohy, stačí ji odečíst od získaného úhlu. Například:

angulo -= declinacion;

Když je úhel záporný, můžete přidat 360 stupňů, abyste vždy získali kladnou hodnotu upravenou mezi 0 a 360 stupni:

if (angulo < 0) angulo += 360;

Toto nastavení vám poskytne kompas, který bude vždy přesně ukazovat na zeměpisný sever.

V praxi s tímto senzorem a některými knihovnami můžete mít kompas za pár minut. Mějte však prosím na paměti, že HMC5883L je senzor citlivý na vnější rušení, jako jsou blízké kovy nebo pole generovaná vysokými proudy, které mohou měnit hodnoty.


Začněte konverzaci

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.