ROBOTKODLA
ROBOTKODLA Genç Mucit

Eğlen, Kodla, Geleceği Tasarla

Model: HMC5883L Sensör Modülü (Breakout) Orta Seviye Üretici: Honeywell

HMC5883L 3 Eksenli Dijital Elektronik Pusula ve Manyetometre Modülü

Honeywell'in AMR teknolojisiyle Dünya'nın manyetik kutup çizgilerini algılayan, 1-2 derece doğrulukla manyetik Kuzey yönünü gösteren dijital pusuladır.

Önemli Güvenlik ve Teknik Sınırlama Bilgisi

DİKKAT: Piyasada HMC5883L adı altında satılan birçok modül aslında QMC5883L çipi taşır. QMC5883L'nin I2C adresi 0x0D iken orijinal HMC5883L adresi 0x1E'dir. İletişim kurulamazsa I2C tarayıcı çalıştırılmalıdır.

Teknik Özellikler ve Elektriksel Parametreler

Çalışma Voltajı 2.16V - 3.60V Lojik Seviye Giriş/Çıkış
Akım Tüketimi 100 µA Tipik çalışma modu
Haberleşme Arayüzü I2C (0x1E) Protokol türü
Ölçüm Aralığı ±8 Gauss (Dünya Manyetik Alanı ~0.5 Gauss) Etkili çalışma sınırı
Hassasiyet / Doğruluk1° - 2° pusula yön doğruluğuÖlçüm sapma payı
Tepki Süresi75 Hz maksimum çıkış hızıÖrnekleme hızı
Ölçüm TürüAnizotropik Manyetorezistif (AMR) 3 Eksen PusulaFiziksel büyüklük
Pin Sayısı5 PinModül header pinleri

Pin Bağlantıları ve Görevleri (Pinout)

Pin #Pin AdıSinyal TürüGörev & Açıklama
1 VCC Güç +3.3V veya +5V DC (GY-271/273 kartı)
2 GND Toprak Toprak 0V
3 SCL I2C Saat I2C Clock
4 SDA I2C Veri I2C Data
5 DRDY Kesme Data Ready kesmesi

Geliştirme Kartı Uyumluluk Durumu

Arduino Uno / Nano ✓ Uyumlu
5V Lojik

Doğrudan bağlantı ve yerleşik 5V desteği.

ESP32 (NodeMCU) ✓ Uyumlu
3.3V Lojik

3.3V ile tam uyumlu çalışır.

Raspberry Pi Pico ✓ Uyumlu
3.3V Lojik

MicroPython veya C/C++ SDK ile desteklenir.

BBC Micro:bit ✓ Uyumlu
3.3V Lojik

MakeCode blokları veya MicroPython ile uyumlu.

STM32 (BluePill) ✓ Uyumlu
3.3V (5V Tolerant)

5V tolerant GPIO pinleri doğrudan bağlanabilir.

Örnek Kaynak Kod Kütüphanesi

Arduino Uno Arduino C++ ✓ Test Edildi

HMC5883L ile 360 Derece Pusula Açısı

Gerekli Kütüphaneler: Adafruit HMC5883 Unified
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_HMC5883_U.h>

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);

void setup() {
  Serial.begin(9600);
  if(!mag.begin()) {
    Serial.println("HMC5883L bulunamadı! (QMC5883L olabilir mi?)");
    while(1);
  }
}

void loop() {
  sensors_event_t event;
  mag.getEvent(&event);

  // Baş açısı (heading) hesabı
  float heading = atan2(event.magnetic.y, event.magnetic.x);
  
  // Türkiye için yaklaşık +5.5 derece (+0.096 radyan) manyetik sapma açısı
  heading += 0.096;

  if(heading < 0) heading += 2*PI;
  if(heading > 2*PI) heading -= 2*PI;

  float headingDegrees = heading * 180/M_PI;

  Serial.print("Pusula Açısı: ");
  Serial.print(headingDegrees);
  Serial.println(" derece");

  delay(500);
}
Seri Monitör Çıktısı (Simülasyon):
Pusula Yönü: 48.5° (Kuzey-Doğu)

Çalışma Mantığı ve Fiziksel İlkeler

Elektronik Pusula ve Açık Deniz Navigasyonu

HMC5883L, yüksek hassasiyetli Anizotropik Manyetorezistif (AMR) sensör teknolojisine sahiptir.

X ve Y eksenlerindeki manyetik akı yoğunluğu okunup atan2(Y, X) trigonometrisi uygulandığında manyetik Kuzey ile yapılan açı (Heading) anında derece olarak hesaplanır. İHA'ların ve deniz otonom teknelerinin yönlerini kaybetmeden düz gitmelerini sağlar.

Artıları ve Sınırlamaları

Güçlü Yönleri (Avantajlar)
  • 1 - 2 derece pusula açısı doğruluğu
  • 100 µA ultra düşük güç tüketimi
  • Entegre 12-bit ADC ve otomatik kalibrasyon akım jeneratörü
  • Sınırlamaları (Dezavantajlar)
  • Motor kabloları ve pillerin yarattığı manyetik alandan etkilenir (kalibrasyon gerekir)
  • Sık Karşılaşılan Sorunlar ve Çözümleri

  • Manyetik sapma açısı (Magnetic Declination) şehre göre hesaba katılmazsa gerçek coğrafi kuzey yerine manyetik kuzeyi gösterir.