HC-SR04 ile Nasıl Hassas Ölçüm Yapılır?

0
5

Arduino uygulamalarının vazgeçilmezlerinden olan, HC-SR04 Ultrasonic Sensörü‘nü kullananlar genellikle, hatta çok çok büyük bir çoğunluğu kod yazarken bu sensörün kullanımını ezberden yapmaktadır. Bu da hassas ölçümler yapmamızın önüne oturmuş bir kaya gibidir. Ama birazcık matematik ve 1-2 işlem ile, bu sensörü daha verimli kullanabilir, daha hassas ölçümler yapabiliriz.

 

Yukarıdaki örnek kodda da gördüğünüz gibi, HC-SR04 sensörü kullanılırken hep aynısı yapılır. Süre, 29.1 ‘ e bölünür. (Burada süre ilk olarak 2ye bölünmüştür çünkü, ses dalgalarının bir engele çarparken gidişi bir de dönüşü mesafesi olduğundan, bize mesafeyi hesaplamak için sadece gidişi veya dönüşü gerektiğinden 2ye bölünür) Başka bir kullanımı da direkt olarak sure/58 yazılmaktadır kolaylık açısından. Peki nereden geliyor bu 29.1?
Öncelikle sensörden biraz bahsedelim. Sensörün çalışma mantığını ve kullanımını tekrar bir hatırlatamakta fayda var. Daha önce ki yazılarımızda, HC-SR04 Sensöründen bahsetmiştik. Konu hakkında daha detaylı bilgiye buradan ulaşabilirsiniz. Ama biz yine de kısaca özetleyelim, ardından nasıl hassas ölçüm yapabileceğimize geçelim. Sensörün datasheet bilgilerine göre:
Çalışma Voltajı: DC 5 Volt
Çektiği Akım: 15 mA’dir.
Ölçüm Aralığı: 2cm-400cm
Görme Açısı: 15 derecedir.

 


Şekil: HC-SR04 Pin Görevleri

Sensör üzerinde 4 adet bacak bulunmaktadır. Her sensörde olduğu gibi bunlardan iki tanesi + ve uçlardır. Kalan diğer 2 bacak ise trig ve echo pinleridir. Bu pinlerden trig pini tetikleme sinyali üretirken echo pini ise yankı görevi görür. Yani, trig pininden çıkan sinyal echo pininde toplanır.
Sensörün üzerinde görülen 2 yuvarlak parçacıktan bir tanesi hoparlör görevi görürken diğeri mikrofon görevi görmektedir. Trig pininden güç verdiğimiz zaman, sensör hoparlöründen ultrasonik ses dalgaları yayacaktır. Bu ses dalgaları herhangi bir cisme çarptığında, geri yansıyarak sensörün mikrofonu tarafından algılanacak bu sayede eğer mikrofon bir ses dalgası algılarsa, echo pinine lojik 1 sinyali göndererek karşısında bir cisim olduğu bilgisini Arduino’ya iletecek.
Genel olarak HC-SR04 sensörünün çalışma mantığını özetledikten sonra, gelin şimdi nasıl hassas ölçümler yapabileceğimizi görelim:
Bir ses dalgasının 0°C’deki hızı 331 m/s ‘dir. Ultrasonik sensor de ses dalgaları göndererek çalıştığından dolayı ve ses dalgasının hızı da ortam sıcaklığına göre değiştiğinden dolayı, bizim daha hassas ölçümler yapabilmemiz için sıcaklık faktörünü göz ardı etmememiz gerekiyor. Ortam sıcaklığına göre ses hızını bulabilmek için de aşağıdaki bağıntıyı kullanacağız:

V= 331x√(1+T/273)
Bu bağıntıda, T değeri Celcius cinsinden sıcaklıktır. Diyelim ki HC-SR04 sensörünü kullanacağımız ortam da sıcaklık 30 derece olsun. Bu durumda T yerine 30 yazdığımızda sonuç, 348,71 m/s çıkacaktır. Yani ses dalgaları saniyede 348,71 m yol katedecek demektir. Fakat bu değeri direkt olarak 29.1 olarak girilen yere yazamayız. 348.71 m/s değerini programda microsecond mertebelerinde işlem yaptığımızdan, microsecond mertebelerine çevirmemiz gerekiyor. Fakat burada dikkat etmemiz gereken bir nokta var:
Mesafe=(Sure/2)/29.1
Buradaki bağıntıdan 29.1 ile Mesafe’yi yer değiştirdiğimizde, 29.1 değerinin biriminin, Zaman/Uzunluk olduğu görülecektir. Yani microsecond/cm olmuş olacaktır. Dolayısıyla, 348.71 m/s değerini bizim µs/c cinsine çevirmemiz gerekmektedir. Bu işlem yapıldığında, 28.67 değeri bulunacaktır. Yani eğer biz hassas ölçüm yapmak istiyorsak, ezberden 29.1 değilde ortamın sıcaklığı olan 30 dereceye göre hesapladığımız 28.67 değerini kullanmamız gerekmektedir. Yani Arduino IDE programında ilgili kod satırını şu şekilde değiştirmeliyiz:

Mesafe=(Sure/2)/28.67

Evet arkadaşlar, siz de eğer HC-SR04 Sensörünü daha hassas bir şekilde kullanmak istiyorsanız, öncelikle bulunduğunuz ortamın sıcaklığını bir termemetre vasıtasıyla ölçüp anlattığım işlemleri tekrarlayabilirsiniz. Hatta termometreyi de kendiniz yapabilirsiniz:)
Takıldığınız yerleri yorum olarak çekinmeden sorabilirsiniz.