Daha önceleri projelerinde mesafe ölçümü ya da cisim algılama işlemi için  ınfrared sensör kullanan arkadaşlar, infrared sensörün güneşe çıktığında sapıttığını ve farklı renklere göre farklı mesafeler gösterdiğini bilirler. Çünkü güneş ışınlarının içerisinde infrared elektromanyetik dalgalar da vardır. Ve infrared elektromanyetik dalgalar koyu renkler tarafından daha fazla abzorbe edilirler.  Bu sebeple ınfrared sensörün analog çıkışından farklı durumlarda beklenmeyen değerler gözükecektir.  Yani eğer gün ışığında çalışabilecek ve renk ayrımı yapmayan bir proje geliştirmek isterseniz infrared sensör kullanmanın sizi hüsrana uğratacağını bilmeniz gerekir.  Bu durumda karşınıza iki seçenek çıkıyor.  Lazer sensörler yahut ultrasonik sensörler…

Ultrasonik Sensör

Lazer sensörler genelde çok pahalıdır. Bence bu durumda ultrasonik sensör seçmek en mantıklısı gibi gözüküyor.  HC-SR04 ultrasonik sensör, isminden de anlaşılacağı gibi mesafe saptamak için ses dalgalarını kullanan bir sensörüdür.  Sensörün titreşmeye meyilli iki modülü vardır.  Bu iki modülden birisine elektrik sinyali kullanarak titreştirilir ve böylece modül etrafa bir ses dalgası yayar(Trigger), diğeri ise etraftaki titreşimler yani ses dalgaları sayesinde kendiliğinden titreşerek çıkışında bir elektrik sinyali oluşturur(Echo).  Bu durumda üretilen dalganın ilerleyiş güzergahındaki herhangi bir cisme çarpıp geri gelmesi süresince geçen zaman hesaplanarak aradaki mesafe saptanabilir. HC-SR04 2 cm ile 400 cm arasında mesafe ölçümü yapabilmektedir. Fakat burada önemli bir kaç nokta vardır.  Ses dalgasının herhangi bir cisme çarpıp geri gelmesi gerekmektedir fakat bazı açılarda üretilen dalga echho modülüne geri yansımayabilir.  Ayrıca ses dalgası yuöuşak bir yüzeye çarptığında geri yansıması zordur. Doğal olarak yumuşak cisimleri algılamak ultrasonik sensörler için zordur.

 

UltrasonicSensor-Operation

SensorSignalDeflection

 

 

 

 

 

 

 

 

Bu durumda sensörün,  düz ve sabit cisimlerin algılanmasında kullanılması en mantıklısıdır.  Sensörün 4 pini mevcuttur. Sırasıyla;

VCC=+5Volt besleme pini

TRIG= Kare dalga uygulanan ve titreşen modüle bağlı input pini

ECHO= Algılanan cismin mesafesine göre yine kare dalga olarak çıkış alınan pin

GND= 0V

 

Aynı zamanda modülün datasheet’inde şu bilgiler de verilmiş;

Modülün Cisim Algılamazken Çektiği Akım:  <2mA

Modülün Cisim Algıladığında Çektiği Akım: 15mA

Modülün Verimli Çalıştığı Açı: 15 Derece

Modülün Ölçüm Yaptığı Açı:30 Derece

Modülün Minumum algıladığı Mesafe Aralığı(Çözünürlüğü): 0.3 cm

HC-SR04 dimensiones

 

 

Sensörü kullanmak için bazı önemli dipnotlar mevcut.  Ölçümlerin belli periyotlarla yapılması gerekiyor. Çünkü dalganın sadece bir tepe noktasının cisme çarpıp gelmesi belli bir zaman(periyot)  alıyor.   Sensörün yaydığı ses dalgasının hızı 343 m/s dir.  Bu yüzden mesela 1 metre mesafe ölçümü yapabilmek için  6 milisaniyeye ihtiyacımız var. Çünkü dalganın 1 metre uzaklıktaki cisme çarpması yaklaşık 3 milisaniye ve geri gelmesi de 6 milisaniye sürüyor. Bu yüzden 1 metre mesafede  ölçüm yapmak  için her ölçüm arasında 6 milisaniye olması gerekiyor.     Sensörün datasheetinde ölçüm periyotu ve periyot zamanı optimum olarak aşağıdaki şekilde gösterilmiş.  Buna göre  her ölçüm periyotu 60 ms den büyük olması gerekiyor.

 

hc-sr04_datasheet

 

Bu diagrama göre sensörün Trig bacağına uyguladığınız 10us çevrim süresine sahip bir kare dalga, sensörün etrafa 8 adet dalga tepesine sahip olan 40 khz frekansına sahip ses dalgası yaymasına sebep oluyor.    Bu dalga cisme çarparak geri gelmesi ve Echo modülüne çarparak bir kare dalga oluşturması belli bir süre sürüyor.  Dalga Echo modülüne çarpıp titeştirdiğinde echo pini belli bir süreliğine aktif 5 Volt olur. Bu süre cisim mesafe ile doğru orantılıdır.    Aradaki mesafeyi hesaplamak için echo pininin 5 volt olduğu süre hesaplanıp 58’e bölünür ve aradaki mesafe cm cisminden bulunur. 

Buunla ilgili kısa bir ardunio programı şu şekilde;

void Eyes_measurement() {
  digitalWrite(Eyes_Trigger,LOW);        // trig pininin başlangıçta 0 volt olmasından emin olunmak için yazılmış kod
  delayMicroseconds(2);
  digitalWrite(Eyes_Trigger,HIGH);       // Ölçüme başlanıyor
  delayMicroseconds(10);
  digitalWrite(Eyes_Trigger,LOW);        
  pulsdauer = pulseIn(Eyes_Echo,HIGH);   // echo pininin aktif olduğu süre hesaplanıyor
  distance = pulsdauer / 58;             // Zaman değeri cm ye çevriliyor.
}

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz