Arduino İle Mesafe Ölçümü

Güncelleme 15/06/2020

Devrenin çalışması, ultrasonik sensör ( HC-SR04 ) üzerindeki hoparlör ile insan kulağının algılayamadığı ses dalgaları gönderilmektedir. Bu gönderilen ses dalgaları karşı tarafta bir cisme çarpıp geri geldiğinde mikrofon tarafından algılanmaktadır. Mesafenin ölçümü ise hoparlörden çıkan ses dalgasının çıktığı andan itibaren karşısında bulunan cisme çarpıp geri yansıması arasında geçen süreyle orantı kurularak hesaplanmaktadır. Yani hoparlörden sinyalin çıkması ve mikrofonun sinyali algılaması arasında ki süre bize ultrasonik sensörün karşısında bulunan cismin uzaklığını vermektedir. Yalnız burada dikkat edilecek bir durum vardır. Sinyalin, mesafesi ölçülecek cisme kadar gitmesi T sürede oluyorsa, gidip gelmesi 2T sürede olacaktır. Dolayısıyla sinyalin gidip gelme süresini 2’ye bölmemiz gerekecektir.
AdsC4B1z 1
Şimdi bu durumu nasıl formülize edeceğimize gelelim; 

Ses dalgasının havada yayılma hızı saniyede 343 metredir. Buradan hareketle basit bir orantı üzerinden işlemi gerçekleştirebiliriz.

cm cinsinden yazacak olursak: 34300cm/s

farklı bir ifadeyle şu şekilde de yazabiliriz:

1000000 mikro saniyede 34300 cm yol alır.

Bizim Arduino ile yapacağımız ölçümde T süresi, cisme çarpıp gelme süresi olduğundan T/2 olarak kullanılacaktır. Şimdi orantımıza geçebiliriz.

AdsC4B1za 1
T bizim ultrasonik sensör ile yaptığımız süre ölçümü ve herhangi bir değişkene kaydedebiliriz. Bu kaydettiğimiz değeri 0,01715 ile çarptığımızda sonuç olarak cm cinsinden mesafemizi bulmuş oluruz. İşlemi biraz daha kolaylaştırmak için1/0,01715 sayısı 58,3 sayısına eşittir. Dolayısıyla 1/58,3 sayısı da 0,01715 sayısına eşittir ve T süremizi 0,01715 sayısı ile çarpmak yerine 58,3 sayısına bölebiliriz. İşlem sonucu aynı olacaktır.

Arduino ile Program Kodlarının yazılması


#define trig 3 // Trig Pini (Ses gönderme)

#define echo 4 // Echo Pini (Ses algılama)

float microsaniye_sure, mesafe_cm;//değişkenler tanımlanmaktadır.

void setup() {

 Serial.begin (9600); // Seri iletişimi başlatmak için tanımlama yapılması

pinMode(trig, OUTPUT); //Ses gönderme pini çıkış olarak ayarlanır.

 pinMode(echo, INPUT); //Ses algılama pini giriş olarak ayarlanır.

}

void loop() {

 digitalWrite(trig, LOW); // Hoparlör 2ms beklemeye alınır.

 delayMicroseconds(2);

 digitalWrite(trig, HIGH); // Hoparlör ile 10ms ses dalgası gönderilir.

 delayMicroseconds(10);

 digitalWrite(trig, LOW); // Hoparlör tekrar durdurulur.

 microsaniye_sure = pulseIn(echo, HIGH); // Mikrofon dinlenir, yansıma süresini microsaniye_sure değişkenine kaydedilir.

 mesafe_cm = microsaniye_sure/58.3; //ölçülen süre 58,3’e bölünerek cm cinsinden mesafe bilgisi alınmış ve mesafe_cm değişkenine kaydedilir.

 Serial.print(mesafe_cm); //Mesafe değeri serial monitöre yazdırılır.

 Serial.println(“cm“); // yazdırılan mesafe değerinin yanına “cm” ifadesi yazdırılır.

 delay(50);  //50ms bekleme yapılır.

}

Yazar: Ali Celal

5f59ca35fd9ac7f00cde62f0b0cd0d07?s=90&d=blank&r=g- Elektronik Mühendisi
- E.Ü. Tıp Fakültesi Kalibrasyon Sorumlusu Test kontrol ve kalibrasyon sorumlu müdürü (Sağ.Bak. ÜTS)
- X-Işınlı Görüntüleme Sistemleri Test Kontrol ve Kalibrasyon Uzmanı (Sağ.Bak.)
- Usta Öğretici (MEB)
- Hatalı veya kaldırılmasını istediğiniz sayfaları diyot.net@gmail.com bildirin