Пълно ръководство за използване на HMC5883L с Arduino

  • Връзка на HMC5883L с Arduino чрез I2C комуникация.
  • Код за четене на осите X, Y, Z на магнитното поле.
  • Създайте цифров компас, като регулирате магнитната деклинация.

код hmc5883l arduino-3

Магнитометърът HMC5883L е сензор, широко използван в проекти на Arduino заради способността му да измерва магнитни полета в три оси. Това го прави отличен избор за създаване на цифрови компаси, навигационни системи за дронове и други автономни превозни средства. Освен че е достъпен, интегрирането му е лесно благодарение на неговия I2C интерфейс, което го прави идеален за начинаещи.

В тази статия ще разгледаме основните характеристики на HMC5883L, връзката му с различни Arduino платки и практически примери за използването му. В крайна сметка ще можете да реализирате свой собствен проект за цифров компас с Arduino, като се възползвате от пълния потенциал на този мощен сензор.

Какво представлява HMC5883L и как работи?

HMC5883L е a триосен магнитометър който измерва компонентите на магнитното поле на Земята по осите X, Y и Z. Това не само позволява да се открие наличието на магнитни полета, но също така позволява определянето на ориентацията чрез изчисления въз основа на получените измервания. Тези характеристики го правят идеален сензор за създаване на системи за ориентация, като например цифров компас.

Сензорът обикновено се намира в модули като модела GY-273, който включва и необходимата електроника за улесняване на директната му връзка с платки Arduino или други микроконтролери. Захранването му е гъвкаво и може да се захранва както с 3.3V, така и с 5V, което го прави много универсален по отношение на съвместимост с различни системи.

Arduino връзки

Свързването на HMC5883L с Arduino е наистина лесно благодарение на I2C интерфейса, който използва. Тази комуникация изисква само два пина: SDA и SCL, който трябва да бъде свързан към съответните щифтове на платката Arduino.

  • за Arduino Uno, Nano и Mini: SDA се свързва към щифт A4 и SCL към A5.
  • Ако използвате Arduino Mega или Due: SDA трябва да бъде свързан към пин 20 и SCL към пин 21.
  • В случая на Arduino Leonardo: SDA отива към пин 2, а SCL към пин 3.

Да не забравяме, че магнитометърът работи с фиксиран I2C адрес 0x1E, така че не е възможно да го промените. Този адрес е уникален за този тип сензор, което означава, че не можем да свържем множество HMC5883L устройства към една и съща I2C шина.

Отчитане на магнитно поле

Основният метод на работа на HMC5883L е четене на стойностите на магнитното поле във всичките три оси. За да получим тези стойности на Arduino, ние използваме библиотека, разработена от Jeff Rowberg. Можете да намерите тази книжарница на вашето хранилище на GitHub и го изтеглете за използване в Arduino IDE.

След като библиотеката е инсталирана, сензорът може да се инициализира и да започне да чете стойностите на магнитното поле. Ето един прост пример, който прави точно това:

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

В този код магнитометърът се инициализира и стойностите по трите оси се четат в цикъл. Всеки път, когато изпълняваме `loop()`, стойностите на магнитното поле в X, Y и Z ще се показват на серийния монитор.

Настройки за обхват и усилване

HMC5883L ви позволява да регулирате обхват на измерване на магнитното поле между ±0.88 Gauss и ±8.1 Gauss с различни нива на усилване. Диапазонът по подразбиране е ±1.3 Gauss и можете да го промените, за да отговаря на нуждите на вашия проект. Това може да стане с помощта на следния ред в кода:

magnetometro.setGain(value);

където стойност е цяло число между 0 и 7, което ще избере нивото на усилване. По-долу ви показваме таблица със съответните стойности:

доблест Rango Усилване (LSB/Гаус)
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

Изграждане на цифров компас

Едно от най-честите приложения на HMC5883L е изграждането на a цифров компас. За да направим това, трябва да изчислим ъгъла между сензора и магнитния север, като използваме показанията на осите X и Y. Това се постига с помощта на формулата:

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

Тази стойност ще ви даде ъгъла на ориентация по отношение на магнитния север. За да регулирате този ъгъл на географски север, трябва да вземете предвид магнитната деклинация на вашето местоположение, която можете да проверите на различни уебсайтове като www.ign.es или www.ngdc.noaa.gov.

Правилна магнитна деклинация

След като имате магнитната деклинация на вашата позиция, просто трябва да я извадите от получения ъгъл. Например:

angulo -= declinacion;

Когато ъгълът е отрицателен, можете да добавите 360 градуса, за да получите винаги положителна стойност, коригирана между 0 и 360 градуса:

if (angulo < 0) angulo += 360;

Тази настройка ще ви даде компас, който винаги ще сочи точно географския север.

На практика с този сензор и някои библиотеки можете да имате компас за няколко минути. Все пак, имайте предвид, че HMC5883L е сензор, чувствителен към външни смущения, като близки метали или полета, генерирани от високи токове, които могат да променят показанията.


Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.