
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.