HMC5883L Arduino 3 Eksen Pusula Sensörü GY-273
HMC5883L 3 Eksen Pusula Sensörü, dünyanın manyetik alanını ölçerek mutlak yön tespiti yapan, yüksek hassasiyetli bir dijital pusuladan oluşur. X, Y ve Z eksenlerinde manyetik alan ölçümü yapabilme yeteneğine sahiptir.
I2C haberleşme protokolü kullanan bu sensör, Arduino ve diğer mikrodenetleyicilerle kolayca entegre edilebilir. Düşük güç tüketimi ve 1-2 derece hassasiyet sunarak pusula uygulamaları için idealdir.
GY-273 modülü üzerinde voltaj regülatörü bulunduğundan 3.3V veya 5V ile çalışabilir. 12-bit ADC ile yüksek çözünürlüklü ölçümler sağlayarak robotik, navigasyon ve hareket izleme projelerinde güvenilir yön bilgisi sunar.
Kompakt boyutu ve kolay entegrasyonu sayesinde drone, robot, AR/VR cihazları ve navigasyon sistemleri gibi yön bilgisi gerektiren projeler için mükemmel bir çözümdür. Modüller kategorimizde bulunan bu sensör, projelerinize yön bulma yeteneği kazandırmak için ideal bir seçimdir.
Teknik Özellikler
HMC5883L 3 Eksen Pusula Sensörünün detaylı teknik özellikleri aşağıda listelenmiştir.
- Sensör Tipi: 3 Eksen Manyetik Alan Sensörü (Manyetometre)
- Ölçüm Eksenleri: X, Y, Z (3 eksen)
- Hassasiyet: 1-2 derece (düzgün kalibre edildiğinde)
- Ölçüm Aralığı: ±8 Gauss
- Çözünürlük: 12-bit ADC (5 milligauss - tipik)
- Haberleşme Protokolü: I2C (400kHz'e kadar)
- I2C Adresi: 0x1E
- Örnekleme Hızı: 0.75Hz - 75Hz arası ayarlanabilir
- Çalışma Gerilimi: 3.3V - 5V DC
- Çalışma Akımı: 100μA (aktif), 2μA (uyku modu)
- Arayüz Pinleri:
- VCC: Besleme voltajı (3.3V - 5V)
- GND: Toprak
- SCL: I2C Saat hattı
- SDA: I2C Veri hattı
- DRDY: Veri hazır pini (opsiyonel)
- Modül Boyutları: 14mm x 13mm x 3mm
- Montaj Delikleri: 2 adet, 2mm çapında
- Çalışma Sıcaklığı: -30°C ile +85°C arası
- Dahili Komponentler: Voltaj regülatörü, pull-up dirençleri
Bağlantı ve Kullanım
HMC5883L 3 Eksen Pusula Sensörünün bağlantı ve kullanım talimatları aşağıda açıklanmıştır.
İpucu: Doğru ölçüm için, sensörü metal objelerden ve manyetik alan kaynaklarından (motorlar, mıknatıslar, hoparlörler) uzak tutun. Kalibrasyon yaparak daha hassas ölçümler elde edebilirsiniz.
Arduino Bağlantısı:
- VCC → Arduino 5V veya 3.3V
- GND → Arduino GND
- SDA → Arduino A4 (UNO, Nano) veya SDA pini (MEGA, DUE)
- SCL → Arduino A5 (UNO, Nano) veya SCL pini (MEGA, DUE)
- DRDY → Kullanım opsiyonel, bir dijital pine bağlanabilir
Arduino Kod Örneği:
#include
#define HMC5883L_ADDRESS 0x1E
// Kayıtlar
#define CONFIG_A 0x00
#define CONFIG_B 0x01
#define MODE 0x02
#define DATA_X_MSB 0x03
#define DATA_X_LSB 0x04
#define DATA_Z_MSB 0x05
#define DATA_Z_LSB 0x06
#define DATA_Y_MSB 0x07
#define DATA_Y_LSB 0x08
#define STATUS 0x09
#define ID_A 0x0A
#define ID_B 0x0B
#define ID_C 0x0C
void setup() {
Wire.begin();
Serial.begin(9600);
// Sensör başlangıç konfigürasyonu
Wire.beginTransmission(HMC5883L_ADDRESS);
Wire.write(CONFIG_A); // Kayıt adresi: konfigürasyon A
Wire.write(0x70); // 8-sample average, 15 Hz ölçüm, normal çalışma modu
Wire.endTransmission();
Wire.beginTransmission(HMC5883L_ADDRESS);
Wire.write(CONFIG_B); // Kayıt adresi: konfigürasyon B
Wire.write(0x20); // Kazanç: +/- 1.3 Gauss
Wire.endTransmission();
Wire.beginTransmission(HMC5883L_ADDRESS);
Wire.write(MODE); // Kayıt adresi: mod
Wire.write(0x00); // Sürekli ölçüm modu
Wire.endTransmission();
Serial.println("HMC5883L 3 Eksen Pusula Sensörü Test");
Serial.println("Sensör başlatıldı");
delay(1000);
}
void loop() {
// Veri okuma isteği
Wire.beginTransmission(HMC5883L_ADDRESS);
Wire.write(DATA_X_MSB); // İlk veri kaydından okumaya başla
Wire.endTransmission();
// 6 byte veri oku (X, Z, Y sırasında) - Her eksen için 2 byte
Wire.requestFrom(HMC5883L_ADDRESS, 6);
if(Wire.available() == 6) {
int x = (Wire.read() << 8) | Wire.read();
int z = (Wire.read() << 8) | Wire.read();
int y = (Wire.read() << 8) | Wire.read();
// Açıyı hesapla
float heading = atan2(y, x);
// Manyetik sapma düzeltmesi (opsiyonel)
// İstanbul için manyetik sapma yaklaşık 5 derece doğu
float declinationAngle = 5.0 * PI / 180.0;
heading += declinationAngle;
// Negatif açıyı düzelt
if(heading < 0)
heading += 2 * PI;
// 2*PI üzerinde açıyı düzelt
if(heading > 2 * PI)
heading -= 2 * PI;
// Açıyı radyandan dereceye dönüştür
float headingDegrees = heading * 180/PI;
// Sonuçları yazdır
Serial.print("X: "); Serial.print(x);
Serial.print(" Y: "); Serial.print(y);
Serial.print(" Z: "); Serial.print(z);
Serial.print(" Açı: "); Serial.print(headingDegrees);
Serial.println(" derece");
}
delay(500);
}
Kalibrasyon:
Doğru ölçümler için sensörün kalibre edilmesi önemlidir. Basit bir kalibrasyon yöntemi şu şekildedir:
- Sensörü düz bir yüzeye yerleştirin
- Her eksende (X, Y, Z) minimum ve maksimum değerleri kaydetmek için sensörü her yöne döndürün
- Her eksen için offset değerini hesaplayın: offset = (max + min) / 2
- Ölçüm değerlerinden offset'leri çıkararak kalibre edilmiş değerler elde edin
// Kalibrasyon değerleri örneği
int x_offset = -120;
int y_offset = 280;
int z_offset = 90;
// Kalibre edilmiş değer hesaplama
int x_calibrated = x - x_offset;
int y_calibrated = y - y_offset;
int z_calibrated = z - z_offset;
Demir Sapması Düzeltme:
Yakındaki ferromanyetik malzemeler (demir, çelik vb.) sensör ölçümlerini bozabilir. Bu etkiyi azaltmak için:
- Sensörü elektronik bileşenlerden ve metal parçalardan mümkün olduğunca uzak yerleştirin
- Gelişmiş kalibrasyon tekniklerini kullanarak sapmaları modelleyin
- Soft iron ve hard iron düzeltmelerini uygulayın (ileri seviye kalibrasyon)
Uygulama Alanları
HMC5883L 3 Eksen Pusula Sensörünün kullanılabileceği çeşitli uygulama alanları.
Robotik ve Navigasyon
- Otonom robot yönlendirme sistemleri
- Drone ve hava araçları için yön kontrolü
- RC araçlar için otomatik yönelim
- İnsansız araçlar için navigasyon desteği
Konum Tabanlı Uygulamalar
- Giyilebilir pusula cihazları
- Akıllı saat ve fitness takip cihazları
- Sanal gerçeklik başlıkları için hareket izleme
- GPS destekli navigasyon sistemleri
Ölçüm ve İzleme
- Elektronik pusula uygulamaları
- Yön bulma cihazları
- Araç konumlandırma sistemleri
- Manyetik alan anomali dedektörleri
Eğitim ve Hobi Projeleri
- STEM eğitim kitleri
- DIY hava durumu istasyonları
- Elektronik pusulalar
- Manyetik alan görselleştirme projeleri
Proje Örnekleri
HMC5883L 3 Eksen Pusula Sensörü kullanılarak yapılabilecek proje örnekleri.
Arduino Elektronik Pusula
Bu projede, HMC5883L sensörü ve bir OLED ekran kullanarak taşınabilir bir elektronik pusula yapabilirsiniz. Arduino Nano, sensörden aldığı verileri işleyerek pusula yönünü hesaplar. OLED ekranda hem sayısal açı değeri hem de görsel pusula iğnesi gösterilir. Manyetik sapma açısı kodda ayarlanarak bulunduğunuz bölge için doğru kuzey gösterimi sağlanır. Pusula iğnesinin stabilizasyonu için hareketli ortalama filtresi kullanılır. Proje kutusu 3D yazıcı ile basılarak kompakt bir tasarım elde edilir. Opsiyonel olarak bir LiPo pil ve şarj devresi eklenerek taşınabilirlik arttırılabilir. Bu pusula, doğa yürüyüşleri, oryantiring veya amatör navigasyon için kullanışlı bir cihazdır.
Otonom Robot Yönlendirme Sistemi
HMC5883L sensörünü kullanarak bir robotun yönelimini kontrol eden sistem yapabilirsiniz. Arduino veya ESP32 mikrodenetleyici, sensörden aldığı pusula verilerini kullanarak robotun hangi yöne baktığını belirler. İki DC motoru kontrol eden sürücü devresi ile robotun istenen yöne dönmesi sağlanır. Hedefe yönelik navigasyon için, hedef koordinatlar ve mevcut yönelim karşılaştırılarak motor hızları ayarlanır. Kodda PID kontrol algoritması kullanılarak hassas dönüşler ve düzgün bir rota takibi sağlanır. Ultrasonik sensörler eklenerek engellere çarpmadan hedefe ulaşma yeteneği kazandırılabilir. Bu sistem, malzeme taşıma robotları, ev temizlik robotları veya eğitim amaçlı robot kitleri için ideal bir çözümdür.
Manyetik Alan Haritalama Aracı
HMC5883L sensörü kullanarak çevredeki manyetik alanları haritalayan bir cihaz geliştirebilirsiniz. Arduino ve SD kart modülü ile birlikte, belirli bir alandaki manyetik alan şiddetini ve yönünü ölçen portatif bir tarayıcı oluşturabilirsiniz. X, Y ve Z eksenlerinde manyetik alan verilerini CSV formatında kaydederek sonradan analiz edilebilir. Bluetooth modülü eklenerek gerçek zamanlı veri aktarımı ve görselleştirme yapılabilir. Enkoder veya GPS modülü ile konum bilgisi eklenerek her ölçüm noktasının tam konumu belirlenebilir. Bu araç, elektromanyetik kirlilik ölçümleri, gizli metal nesnelerin tespiti, yer altı kablo ve boru hatlarının konumlandırılması veya jeolojik araştırma çalışmaları için kullanılabilir.
Sorun Giderme ve İpuçları
HMC5883L 3 Eksen Pusula Sensörü kullanırken karşılaşabileceğiniz sorunlar ve çözüm önerileri.
Yaygın Sorunlar ve Çözümleri
- Sensör Algılanmıyor: I2C bağlantı sorunları en yaygın problemlerden biridir. SDA ve SCL pinlerinin doğru bağlandığını kontrol edin. I2C pull-up dirençlerinin (4.7kΩ) bağlı olduğundan emin olun. I2C adresi doğru olmalıdır (0x1E). Başka bir I2C cihazı ile adres çakışması olmadığını teyit edin. I2C hattının uzunluğunu kontrol edin, çok uzunsa sinyal zayıflayabilir. Arduino'nun I2C tarama koduyla sensörü arayın.
- Yanlış veya Kararsız Ölçümler: Manyetik alan ölçümleri çevresel faktörlerden kolayca etkilenir. Sensörü elektronik cihazlardan, hoparlörlerden, motorlardan ve diğer manyetik alan kaynaklarından uzak tutun. Sensör düz yüzeyde olmalıdır. Kalibrasyon eksikliği büyük hata kaynağıdır, offset değerlerini düzgün hesaplayın. Soft iron ve hard iron düzeltmelerini uygulayın. Sinyal gürültü oranını artırmak için birden fazla ölçüm alıp ortalamasını hesaplayın.
- Doğruluk Sorunları: HMC5883L sensörü tipik olarak 1-2 derece hassasiyete sahiptir ancak kalibrasyon sorunları daha büyük hatalara yol açabilir. Doğruluk için kapsamlı kalibrasyon yapın (X, Y, Z eksenleri için minimum ve maksimum değerleri bulun). Manyetik sapma (declination) açısını bölgenize göre ayarlayın. Eğim (tilt) kompanzasyonu için bir IMU ile birlikte kullanılabilir. Pusula sensörleri düz zemin üzerinde en iyi sonucu verir.
- Sıcaklığa Bağlı Sapmalar: Manyetometre ölçümleri sıcaklık değişimlerinden etkilenebilir. Çalışma ortam sıcaklığında kalibrasyonu yeniden yapın. Çok farklı sıcaklıklarda çalışılacaksa, sıcaklık kompanzasyonu için bir sıcaklık sensörü ekleyin. Bazı programlama teknikleri ile farklı sıcaklıklardaki ölçüm değerlerini düzeltebilirsiniz. Isınma süresinin tamamlanmasına izin verin, ilk açılışta sensör kararlı duruma gelene kadar birkaç dakika bekleyin.
- Manyetik Girişim: Komponentlerden veya ortamdan kaynaklanan manyetik girişimler en zorlayıcı sorunlardır. HMC5883L modülünü PCB'nin diğer elektronik bileşenlerinden izole edin. Metal muhafazalardan uzak tutun. Motorlar, güç kaynakları, rölelerin sensörden uzak yerleştirilmesini sağlayın. Gürültü azaltma teknikleri uygulayın (dijital filtreleme, veri ortalama). Beklenmeyen manyetik alan kaynakları (elektrik kabloları, çelik yapılar) yakınında kullanmaktan kaçının.
Performans İpuçları
- Sensörü her kullanımdan önce 8 şeklinde hareket ettirerek kalibrasyon yapın
- Daha yüksek hassasiyet için AHRS (Attitude and Heading Reference System) algoritmaları kullanın
- Eksen yönelimlerini projenizdeki referans yönlerine göre ayarlayın
- Sabit montaj için sensörü titreşim azaltıcı malzemeler üzerine yerleştirin
- Farklı çevresel koşullarda test ederek sensörün limitlerini anlayın
- Başlangıçta sensörün ısınmasına izin vererek kararlı ölçümler elde edin
İlgili Ürün Kategorilerimiz
HMC5883L sensörünü Arduino kartlarıyla kullanarak robotik, navigasyon ve konum tabanlı projeler geliştirebilirsiniz.
Ürünleri İncele →
Projelerinizi geliştirmek için ekran modülleri, motor sürücüler, GPS modülleri ve diğer tamamlayıcı elektronik bileşenleri keşfedin.
Ürünleri İncele →
Neden Voltaj.Net'ten Almalısınız?
Voltaj.Net, elektronik komponent ve sensör ürünleri konusunda Türkiye'nin güvenilir tedarikçisidir.
- Kalite Güvencesi: Test edilmiş ve onaylanmış güvenilir ürünler
- Teknik Destek: Ürün kullanımı konusunda uzman yardımı
- Hızlı Teslimat: Stoktan hızlı ve güvenli kargo
- Tamamlayıcı Ürünler: Projeleriniz için gerekli tüm bileşenler
- Uygun Fiyatlar: Kaliteli ürünler rekabetçi fiyatlarla
- Güvenilir Alışveriş: Kolay sipariş ve iade süreci
Ürün Hakkında Sıkça Sorulan Sorular
HMC5883L sensörünün hassasiyeti nedir?
Doğru kalibre edildiğinde 1-2 derece hassasiyet sunar. Çevresel manyetik girişimler ve uygun olmayan kalibrasyon hassasiyeti düşürebilir.
Sensörü nasıl kalibre edebilirim?
Sensörü tüm eksenlerde (8 şekli çizerek) döndürüp her eksende minimum ve maksimum değerlerini kaydedin. Offset = (max + min) / 2 formülüyle hesaplayın.
Manyetik sapma (declination) nedir, neden önemlidir?
Manyetik kuzey ile gerçek kuzey arasındaki açı farkıdır. Hassas navigasyon için bulunduğunuz bölgenin sapma değerini hesaplamanıza eklemelisiniz.
Sensör metal nesnelerden etkilenir mi?
Evet, yakındaki metal nesneler ve elektronik cihazlar ölçümleri bozabilir. Sensörü manyetik alanlardan ve metalik malzemelerden uzak tutun.
Sensörü Raspberry Pi ile kullanabilir miyim?
Evet, Raspberry Pi'nin I2C pinlerine bağlayabilirsiniz. Gerekli Python kütüphanelerini (smbus) kullanarak veri okuyabilir ve işleyebilirsiniz.
HMC5883L ile QMC5883L arasındaki fark nedir?
QMC5883L, HMC5883L'nin alternatif versiyonudur. Benzer işlevsellik sunar ancak farklı I2C adresi ve register haritasına sahiptir. Kütüphaneler genellikle uyumlu değildir.
Sensör eğimli durumdayken doğru ölçüm yapabilir mi?
Eğimli konumda hassasiyet düşer. Doğru ölçüm için jiroskop ve ivmeölçer ekleyerek tilt kompanzasyonu yapmanız gerekir (IMU entegrasyonu).
Aynı projede birden fazla HMC5883L kullanabilir miyim?
Doğrudan I2C adresi değiştirilemediğinden, çoğaltıcı (multiplexer) modülü veya farklı I2C busları kullanmanız gerekir. Her sensör için ayrı bir I2C hattı kullanılabilir.