HMC5883L'yi Arduino ile kullanmaya ilişkin eksiksiz kılavuz

  • HMC5883L'nin Arduino ile I2C iletişimi yoluyla bağlantısı.
  • Manyetik alanın X, Y, Z eksenlerini okuyabilecek kod.
  • Manyetik sapmayı ayarlayarak dijital bir pusula oluşturun.

kod hmc5883l arduino-3

HMC5883L manyetometre, manyetik alanları üç eksende ölçebilme yeteneği nedeniyle Arduino projelerinde yaygın olarak kullanılan bir sensördür. Bu, onu dijital pusulalar, dronlar için navigasyon sistemleri ve diğer otonom araçlar oluşturmak için mükemmel bir seçim haline getiriyor. Uygun fiyatlı olmasının yanı sıra, I2C arayüzü sayesinde entegrasyonu basittir ve bu da onu yeni başlayanlar için ideal kılar.

Bu yazıda HMC5883L'nin temel özelliklerini, çeşitli Arduino kartlarıyla bağlantısını ve kullanımına yönelik pratik örnekleri inceleyeceğiz. Sonunda, bu güçlü sensörün tüm potansiyelinden yararlanarak kendi dijital pusula projenizi Arduino ile hayata geçirebileceksiniz.

HMC5883L nedir ve nasıl çalışır?

Ürün bulunamadı.

HMC5883L bir üç eksenli manyetometre Dünyanın manyetik alanının X, Y ve Z eksenlerindeki bileşenlerini ölçen bu sistem, hem manyetik alanların varlığının tespit edilmesine hem de elde edilen ölçümlere dayalı hesaplamalar yoluyla yönelimin belirlenmesine olanak tanıyor. Bu özellikler onu dijital pusula gibi yönlendirme sistemleri yapmak için ideal sensör haline getirir.

Sensör genellikle GY-273 modeli gibi modüllerde bulunur; bu modüller aynı zamanda Arduino kartları veya diğer mikrokontrolörlerle doğrudan bağlantısını kolaylaştırmak için gerekli elektronikleri de içerir. Güç kaynağı esnektir ve hem 3.3V hem de 5V ile çalıştırılabilir, bu da onu farklı sistemlerle uyumluluk açısından çok yönlü kılar.

Arduino Bağlantıları

Ürün bulunamadı.

HMC5883L'nin Arduino'ya bağlanması, kullandığı I2C arayüzü sayesinde gerçekten basittir. Bu iletişim yalnızca iki pin gerektirir: SDA ve SCLArduino kartındaki ilgili pinlere bağlanması gereken.

  • Daha Arduino Uno, Nano ve Mini: SDA, A4 pinine ve SCL, A5 pinine bağlanır.
  • Arduino Mega veya Due kullanıyorsanız: SDA pin 20'ye ve SCL pin 21'e bağlanmalıdır.
  • Arduino Leonardo durumunda: SDA pin 2'ye ve SCL pin 3'e gider.

Manyetometrenin 2x0E sabit I1C adresiyle çalıştığını, dolayısıyla değiştirilmesinin mümkün olmadığını unutmayalım. Bu adres, bu tip sensör için benzersizdir; bu, birden fazla HMC5883L cihazını aynı I2C veriyoluna bağlayamayacağımız anlamına gelir.

Manyetik Alan Okuması

HMC5883L'nin ana çalışma yöntemi, her üç eksendeki manyetik alan değerlerini okumaktır. Bu değerleri Arduino üzerinde elde etmek için Jeff Rowberg tarafından geliştirilen bir kütüphane kullanıyoruz. Bu kitapçıyı şu adreste bulabilirsiniz: GitHub deponuz ve Arduino IDE'de kullanmak için indirin.

Kitaplık kurulduktan sonra sensör başlatılabilir ve manyetik alan değerlerini okumaya başlayabilir. İşte bunu yapan basit bir örnek:

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

Bu kodda manyetometre başlatılır ve üç eksendeki değerler bir döngü halinde okunur. Döngüyü her çalıştırdığımızda, X, Y ve Z'deki manyetik alanın değerleri seri monitörde görüntülenecektir.

Menzil ve Kazanç Ayarları

HMC5883L, manyetik alan ölçüm aralığı ±0.88 Gauss ile ±8.1 Gauss arasında farklı kazanç seviyeleriyle. Varsayılan aralık ±1.3 Gauss'tur ve bunu proje ihtiyaçlarınıza uyacak şekilde değiştirebilirsiniz. Bu, koddaki aşağıdaki satırı kullanarak yapılabilir:

magnetometro.setGain(value);

nerede değer kazanç seviyesini seçecek olan 0 ile 7 arasında bir tam sayıdır. Aşağıda size karşılık gelen değerleri içeren bir tablo gösteriyoruz:

değer Rango Kazanç (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

Dijital pusula oluşturma

HMC5883L'nin en yaygın kullanımlarından biri bir Dijital pusula. Bunu yapmak için, X ve Y eksenlerinin okumalarını kullanarak sensör ile manyetik kuzey arasındaki açıyı hesaplamamız gerekir. Bu, aşağıdaki formül kullanılarak elde edilir.

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

Bu değer size manyetik Kuzeye göre yönelim açısını verecektir. Bu açıyı ayarlamak için coğrafi kuzeywww.ign.es veya www.ngdc.noaa.gov gibi farklı web sitelerinden danışabileceğiniz konumunuzun manyetik sapmasını dikkate almalısınız.

Doğru manyetik sapma

Konumunuzun manyetik sapmasını elde ettiğinizde, onu elde edilen açıdan çıkarmanız yeterlidir. Örneğin:

angulo -= declinacion;

Açı negatif olduğunda, her zaman 360 ile 0 ​​derece arasında ayarlanmış pozitif bir değer elde etmek için 360 derece ekleyebilirsiniz:

if (angulo < 0) angulo += 360;

Bu ayar size her zaman coğrafi Kuzey'i doğru bir şekilde gösterecek bir pusula verecektir.

Pratikte bu sensör ve bazı kütüphanelerle birkaç dakika içinde pusulaya sahip olabilirsiniz. Bununla birlikte, HMC5883L'nin, yakındaki metaller veya yüksek akımların oluşturduğu alanlar gibi, okumaları değiştirebilecek harici parazitlere karşı duyarlı bir sensör olduğunu lütfen unutmayın.


Google'da tercih edilen kaynak olarak ekleyin.