Projelerimizde şimdiye kadar kullandığımız ultrasonik mesafe sensörleri veya piezo darbe dedektörleri yüzey ve akustik dalgaları temel alırken, HB100 Doppler Radar Modülü mikrodalga (10.525 GHz) elektromanyetik dalgalar kullanarak çalışır. Hareket eden bir nesneden yansıyan dalgaların frekans kaymasını (Doppler Etkisi) ölçerek çalışan bu sensör; duvar arkasından algılama yapabilmesi, hava şartlarından etkilenmemesi ve doğrudan hız tespiti yapabilmesiyle öne çıkar. yenidir.com portalınızın modüler yapısını koruyarak, bu ileri seviye sensörü sistemimize entegre ediyoruz.


HB100 amplifikatör kartından çıkan kare dalga sinyalinin frekansı, nesnenin hızıyla doğrudan orantılıdır Fd = 2v · f0 c . Bu frekansı milisaniye kaçırmadan en hassas şekilde ölçmek için Arduino'nun donanımsal kesme (External Interrupt) pini olan Dijital 2 (veya 3) pinini frekans okuyucu olarak kullanıyoruz. A0, A1 ve A2 analog blok mimarimizi ise sistemin diğer indikatör ve kalibrasyon adımları için ayırıyoruz:
#include <Arduino.h>
/**
* @file HB100_Radar_Hiz_Olcumu.ino
* @brief HB100 Doppler Radar ile Donanımsal Kesme Tabanlı Hız Analiz Algoritması
*
* Pin Eşleşmeleri:
* - Arduino D2 -> HB100 Amplifikatör Çıkışı (OUT / TTL Kare Dalga) [Kesme Pini]
* - Arduino A0 -> Boşta / Dinamik Hassasiyet Potansiyometresi Girişi İçin Ayrıldı
* - Arduino A1 -> Boşta / Gelecek Harici Tetik Girişleri İçin Ayrıldı
* - Arduino A2 -> Boşta / Ham Analog Sinyal Takip Hattı İçin Ayrıldı
* - Arduino D9 -> Kırmızı LED (Hız Eşiği Aşıldı / Alarm Durumu)
* - Arduino D8 -> Yeşil LED (Sistem Aktif / Güvenli Mod)
* - Arduino D7 -> Buzzer (Anlık Doppler Sesi / Sesli Uyarı)
*/
// Donanımsal Pin Tanımlamaları
const int RADAR_INTERRUPT_PIN = 2; // Kesme (Interrupt 0) pini
const int kirmiziLed = 9;
const int yesilLed = 8;
const int buzzer = 7;
// Frekans ve Hız Hesaplama Değişkenleri
volatile unsigned long sinyalDarbeSayisi = 0;
unsigned long eskiZaman = 0;
double frekans = 0;
double hesaplananHiz = 0;
// Alarm Eşik Değerleri (Örnek: 10 km/s üzerindeki hareketler)
const double HIZ_ESIGI_KMS = 10.0;
// Donanımsal Kesme Fonksiyonu (Sinyal her yükseldiğinde tetiklenir)
void radarDarbeSayaci() {
sinyalDarbeSayisi++;
}
void setup() {
// Yüksek hızlı veri lojistiği için seri port başlatılıyor
Serial.begin(115200);
// İndikatör pin yönelimleri
pinMode(kirmiziLed, OUTPUT);
pinMode(yesilLed, OUTPUT);
pinMode(buzzer, OUTPUT);
// Radar sinyal giriş pini dahili pull-up ile kararlı hale getirilir
pinMode(RADAR_INTERRUPT_PIN, INPUT_PULLUP);
// D2 pinine sinyal yükselirken (RISING) çalışacak harici kesme bağlanıyor
attachInterrupt(digitalPinToInterrupt(RADAR_INTERRUPT_PIN), radarDarbeSayaci, RISING);
// İlk durum ayarlamaları
digitalWrite(yesilLed, HIGH);
digitalWrite(kirmiziLed, LOW);
digitalWrite(buzzer, LOW);
eskiZaman = millis();
Serial.println(F("[SISTEM] HB100 Doppler Radar Modulu Aktif. Dinleniyor..."));
}
void loop() {
// 1. AŞAMA: 1 SANİYELİK ZAMAN PENCERESİNDE FREKANS HESAPLAMA
unsigned long simdikiZaman = millis();
if (simdikiZaman - eskiZaman >= 1000) { // Her 1 saniyede bir hesaplama yap
// Hesaplama esnasında kesme verisinin bozulmaması için kesmeleri geçici olarak durdur
noInterrupts();
unsigned long anlikDarbe = sinyalDarbeSayisi;
sinyalDarbeSayisi = 0; // Bir sonraki saniye için sayacı sıfırla
interrupts(); // Kesmeleri tekrar aç
// 1 saniyedeki darbe sayısı doğrudan frekansı (Hz) verir
frekans = anlikDarbe;
// 2. AŞAMA: FREKANSTAN HIZA DÖNÜŞÜM (DOPPLER MATEMATİĞİ)
if (frekans > 5) { // Düşük parazit gürültülerini filtrelemek için
hesaplananHiz = frekans / 19.49;
Serial.print(F("Dopler Frekansi: "));
Serial.print(frekans);
Serial.print(F(" Hz | Hesaplanan Hiz: "));
Serial.print(hesaplananHiz);
Serial.println(F(" km/s"));
// 3. AŞAMA: HIZ SINIRI VE ALARM TETİKLEME LOGİĞİ
if (hesaplananHiz > HIZ_ESIGI_KMS) {
Serial.println(F("[ALARM] HIZ SINIRI ASILDI!"));
digitalWrite(yesilLed, LOW);
digitalWrite(kirmiziLed, HIGH);
// Hızla orantılı ton üreten buzzer tetiklemesi
tone(buzzer, 880, 200);
delay(200);
digitalWrite(kirmiziLed, LOW);
} else {
digitalWrite(yesilLed, HIGH);
digitalWrite(kirmiziLed, LOW);
noTone(buzzer);
}
} else {
// Hareket yoksa veya frekans çok düşükse değerleri sıfırla
hesaplananHiz = 0;
digitalWrite(yesilLed, HIGH);
digitalWrite(kirmiziLed, LOW);
noTone(buzzer);
}
eskiZaman = simdikiZaman;
}
}
HB100 modülünün ürettiği sinyali anlamlandırmak için kullanılan matematiksel arka plan şu şekildedir:
1. Doppler Kayma Prensibi: Modül sürekli olarak 10.525 GHz frekansında mikrodalga yayar. Karşıdan yaklaşan veya uzaklaşan bir nesne olduğunda, yansıyan dalganın frekansı değişir. Modülün üzerindeki mikser (karıştırıcı) devresi, yayılan frekans ile yansıyan frekans arasındaki farkı alarak IF çıkışından bir fark frekansı (Fd) üretir.
2. Hız Dönüşüm Katsayıları: Tasarımlarınızda kullanabileceğiniz standart HB100 dönüşüm formülleri şunlardır:
3. Gürültü Filtreleme (Deadband): Mikrodalga sensörler ortamdaki floresan lambaların kırpışmalarından, rüzgarın salladığı perdelerden veya şebeke gürültülerinden (50Hz/60Hz) etkilenebilir. Kodda yer alan if (frekans > 5) kontrolü, bu tarz küçük ortam salınımlarının ve statik gürültülerin sistemi yanlışlıkla tetiklemesini önleyen bir yazılımsal filtre görevi görür.
Henüz yorum yapılmamış. İlk yorumu siz yapın!