Arduino Devreleri #31 HC-SR04 Ultrasonik Sensör Mesafe Ölçümü

Merhabalar, bu yazımızda Arduino HC-SR04 Ultrasonik Sensör Mesafe Ölçümü uygulaması hakkında bilgi vereceğim. HC-SR04 Ultrasonic Sensor ile basit bir mesafe ölçümü nasıl yapılır? Seri Monitör ekranında mesafe nasıl görüntülenir? bunlar hakkında bilgilendirme yapacağım.

Arduino programı ayrıntılı kod kısmı, devre bağlantı şeması, devre kurulumu detaylı anlatımı ve devre çalışma videosu şu şekildedir.

Bu konuya geçmeden önce HC-SR04 Ultrasonic Sensor nedir? nasıl çalışır? Arduino bağlantı şeması nasıl kurulur? pulseIn komutu nedir? gibi soruların cevaplarını almak isterseniz aşağıdaki bağlantıya tıklayarak öğrenebilirsiniz.

https://egitim.ahmetcandemir.com.tr/hc-sr04-ultrasonik-sensor-nedir/

NOT: Kod bölümü içerisinde yer alan ve // işareti ile başlayan satırlar açıklama satırlarıdır. O satırdaki kod bloğunun ne anlama geldiği ve nasıl çalıştığı ile ilgili bilgi verir. Arduino // işaretli alanı çalıştırmaz. Kod satırından isterseniz // işaret ile başlayan açıklama satırlarını silebilirsiniz.

KOD BÖLÜMÜ:

//HC-SR04 Ultrasonik Sensör Mesafe Ölçümü
//Değişkenleri tanımlıyoruz.
const int trig =3;
const int echo= 2;int sure=0;
int mesafe=0;void setup() {
pinMode(trig, OUTPUT); //trig pinini çıkış sinyali olarak ayarlıyoruz.
pinMode(echo, INPUT); //echo pinini giriş sinyali olarak ayarlıyoruz.
Serial.begin(9600);
}void loop() {
digitalWrite(trig, HIGH); //trig pinimizin ses dalgası göndermesi için emir veriyoruz.
delayMicroseconds(1000); // Ses dalgasını kısa bir süre kesiyoruz.
digitalWrite(trig, LOW); //Yeni ses dalgası üretebilmesi için trig pinimizi pasif durumuna getiriyoruz.
sure = pulseIn(echo, HIGH); //Gönderilen ses dalgasının geri dönmesindeki süre ölçülüyor.
mesafe = (sure/2) / 29.1; //Ölçtüğümüz süre gidiş geliş olduğu için önce 2’ye, sonra 29.1 e bölerek değeri uzaklığa çeviriyoruz.
Serial.print(“Mesafe: “); // Seri monitör ekranına yazdıracağımız mesafe yazısı
Serial.print(mesafe); //// Seri monitör ekranına yazdıracağımız mesafe değeri
Serial.println(” cm”);
delay(250);
}

DEVRENİN ÇALIŞMASI:

pulseIn() Komutu:

Belirlenen bir pin üzerindeki HIGH veya LOW sürelerini okur. Yani pin üzerindeki değer HIGH ise bu değer LOW olana kadar bekler ve darbenin mikrosaniye cinsinden uzunluğunu verir. Ayrıca Timeout süresi vardır. Eğer bu süre içerisinde belirtilen pin üzerinde bir değişiklik yoksa sonucu 0 olarak gerek döndürür.

pulseIn() Kullanımı:

pulseIn(pin, deger) veya pulseIn(pin, deger, zamanAsimi) şeklindedir.

HC-SR04 sensörü kullanılırken 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 hem gidişi hem de dönüş mesafesi vardır. Mesafeyi hesaplamak için sadece gidiş veya dönüş gerektiğinden 2’ye bölünür) Başka uygulamalarda yazım kolaylığı açısından direkt olarak sure/58 yazılmaktadır. Peki nereden geliyor bu 29.1?

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:

HC-SR04 mesafe hesabı

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 21 derece olsun. Bu durumda T yerine 30 yazdığımızda sonuç, 343,50 m/s çıkacaktır. Yani ses dalgaları saniyede 343,50 m yol kat edecek demektir. Fakat bu değeri kod içerisindeki mesafe formülüne (Mesafe=(Sure/2)/29.1 ) direkt olarak 29.1 olarak yazamayız. Arduino programı içerisinde microsecond mertebelerinde işlem yaptığımızdan 343.50 m/s değerini, microsecond mertebelerine çevirmemiz gerekiyor.

Mesafe=(Sure/2)/29.1

Buradaki bağıntıdan 29.1 ile mesafeyi yer değiştirdiğimizde, 29.1 değeri biriminin, Zaman/Uzunluk olduğu görülecektir. Yani microsecond/cm olmuş olacaktır. Dolayısıyla, 343.50 m/s değerini bizim µs/cm cinsine çevirmemiz gerekmektedir. Bu işlem yapıldığında, 29.1 değeri bulunacaktır.

DEVRE BAĞLANTI ŞEMASI

HC-SR04 Ultrasonik Sensör Mesafe Ölçümü - HC-SR04 Ultrasonik Sensör devre bağlantı şeması

DEVRE KURULUMU:

Malzemeler:

Arduino Uno
Breadboard
1 adet HC-SR04 Ultrasonik Sensör
4 adet iki ucu erkek jumper kablo

Breadboard üzerine HC-SR04 Ultrasonik Sensör yerleştirilir. Sensörün Vcc pini Arduino’nun +5 Volt pinine, sensörün GND pini Arduino’nun GND pinine, sensörün Trig pini Arduino’nun 3 numaralı pinine, sensörün Echo pini, Arduino’nun 2 numaralı pinine bağlanır ve devre tamamlanır.

HC-SR04 Ultrasonik Sensör Mesafe Ölçümü

Devre hakkında yorumlarınızı aşağıdaki yorum kısmına yazabilirsiniz. Youtube kanalımızda da mBlock ve Arduino ile ilgili ders videoları bulabileceksiniz. Youtube kanalıma abone olmayı da unutmayınız.

https://www.youtube.com/@candemirahmet

Avatar photo
Yazan: Ahmet Candemir
Teknik Öğretmen - Cisco Instructor - Microsoft MCP - ECDL MS Office Advanced Expert - Adobe Eğitmeni - MEB Fatih Projesi Koordinatörü - Robotik Kodlama Eğitmeni