Arduino ile Ultrasonik Sensör Kullanımı

Merhaba arkadaşlar!
Bu yazıda HC-SR04 Ultrasonik sensörünü kullanarak mesafe ölçmeyi göstereceğiz. Bir nesnenin size olan uzaklığını ölçmek için klasik olarak cetvel veya metre kullanabilirsiniz. Ancak 21.yy’da bu işlemi yapmak için bizlere sunulan cihazları kullanarak dijital bir cetvel geliştireceğiz. Uygulamaya geçmeden önce bu sensör hakkında bazı bilgiler vermek istiyorum.

HC-SR04 Ultrasonik sensörü, SONAR ve RADAR sistemlerinin çalışması gibi, bir nesneye olan mesafeyi ölçmeyi sağlar. Bunu yapabilmek için yüksek frekanslı ses dalgaları oluşturur. Bu sensör iki temel bileşenden oluşmaktadır. Bunlardan biri ses dalgasını göndermeyi sağlarken, diğeri de nesneden yansıtılan ses dalgasını almayı sağlar. Sensörün nasıl çalıştığını aşağıdaki resimden inceleyebilirsiniz.

Ultrasonik sensör çalışma şekli

Sensör, nesneden gelen yankının alıcıya ulaşması için gereken süreyi ölçerek mesafeyi ölçer. Mesafe ölçümü, lise hatta ortaokul sıralarına kadar giden ve hayatımız boyunca yakamızı bırakmayan hız x zaman formülü ile bulunur. Ultrasonik sensör mesafe ölçümünde sesi kullanıdığı ve ses dalgalarının hızı 343 m/s olduğu için hız olarak bu değeri alacağız. Ses dalgası yukarıdaki resimde görüleceği üzere aynı mesafeyi iki defa aştığı için mesafe aşağıdaki formül ile hesaplanır.

Ultrasonik sensör ile mesafe ölçme formülü

Formülde hız ve zaman çarpıldıktan sonra ortaya çıkan sonuç ikiye bölünmüştür. Bu sayede sensör ve nesne arasındaki kesin mesafeyi bulmuş olur.

Bu sensörün temel özellikleri şöyledir:

  • Bu sensörün en belirgin özelliği 2 cm ve 400 cm arası mesafeleri ölçebilmesidir.
  • Ortamdaki aydınlık, duman, toz ve renk gibi etmenlerden etkilenmez.
  • İçeride veya dışarıda rahatlıkla kullanılabilir.
  • Bir robotun çarpışmadan kaçınmasını sağlayabilir ve çok hızlı olmadığı sürece sık sık hareket ettirilebilir.
  • Drone ve araç uygulamalarında kullanılabilir.
  • Özellikle bir çarpışmayı engellemek için kullanışlıdır.

Ultrasonik mesafe sensörünün görünümü aşağıdaki gibidir.

Ultrasonik sensörün görünümü

Resimde görüleceği üzere bu modül 4 adet pin ile gelmektedir. Şimdi bu pinleri inceleyelim.

Ultrasonik mesafe sensörü pinleri

VCC +5V

TRIG Sensörün trigger yani tetikleyici girişi. Mikrodenetleyici, HC-SR04 ultrasonik modülüne 10 adet tetikleme atımı uygular.

ECHO Sensörün echo yani yankı çıkışıdır. Mikrodenetleyici, engeli tespit etmek veya mesafeyi bulmak için bu pimi okur.

GND Ground yani topraklama

Bu bilgileri verdikten sonra şimdi HC-SR04 Ultrasonic sensörünü kullanarak mesafe ölçmeyi sağlayabiliriz. Uygulama için ihtiyacımız olan devre elemanı aşağıdaki gibidir:

  • HC-SR04 Ultrasonic Sensörü x 1

Sensörü temin etikten sonra devremizi aşağıdaki gibi oluşturalım.

Ultrasonik sensör devre şeması

Yukarıda görülen devrede bağlantı işlemi aşağıdaki gibi yapılmıştır.

  • Sensörün VCC pini, 5V çıkışına bağlandı.
  • TRIG pini, 8 nolu pine bağlandı.
  • ECHO pini, 7 nolu pine bağlandı.
  • GND pini, GND pinine bağlandı.

Bu bilgilerden sonra devremiz aşağıdaki gibi olur.

Arduino ile Ultrasonik sensör devresi

Devremizin kodu aşağıdaki gibidir.


#define trig 8
#define echo 7
long duration, distance;

void setup() 
{
  Serial.begin (9600);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}
void loop() 
{
  
  digitalWrite(trig, LOW);        
  delayMicroseconds(2);              
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);           
  digitalWrite(trig, LOW);
  duration = pulseIn(echo, HIGH);
  distance = (duration*.0343)/2; 
  
  Serial.print(distance);
  Serial.println(" cm");
  
  delay(1000);
}

Kodların açıklaması aşağıdaki gibidir:


#define trig 8
#define echo 7

define ifadesi ile program içinde sabitler oluşturmayı sağlarız. Uygulamanın yaşamı boyunca trig pini 8 ve echo pini 7 olacağı için bu değerleri sabit olarak tanımladık. Trig ses dalgısını göndermeyi sağlarken, echo ise yankıyı almak için kullanılır.


long duration, distance;

duration değişkeni trig pini ile gönderilen ses dalgasının echo pinine kadar geçen süreyi tutmayı sağlerken, distance değişkeni ise mesafeyi tutmak için kullanılmıştır.


digitalWrite(trig, LOW);        
delayMicroseconds(2);  
            
digitalWrite(trig, HIGH);
delayMicroseconds(10);  
         
digitalWrite(trig, LOW);

Öncelikle trig pinimizi LOW durumunda başlatıyoruz yani ses dalgası göndermesini engelliyoruz. Bu bekleme işlemi 2 mikrosaniye kadar sürecek. Daha sonra trig pinini HIGH durumuna getirip ses dalgası göndermeyi sağladık. Bu işlemin 10 mikrosaniye kadar devam etmesini belirttik. Son olarak bir dahaki sefere ses dalgası üretebilmek için trig pinimizi LOW yani pasif duruma getirdik.


duration = pulseIn(echo, HIGH);

Gönderilen ses dalgasının echo pinine geri dönerken aldığı süreyi hesaplamak için pulseIn komutu kullanılır. Burada parametre olarak echo pini HIGH durumuna getirilerek bu pinden ses dalgasının alınması sağlanır.


distance = (duration*.0343)/2; 

Bu satır ile daha önce sizlere anlattığımız formülü kullanarak sensör ile nesne arasındaki mesafenin ölçülmesini sağlarız. Burada amacımız mesafeyi cm olarak almak olduğundan dolayı ses dalgasının 343 m/s olan değerini .0343 cm/s ye dönüştürmek zorunda kaldık. Yani sensör mesafeyi metre değil cm olarak ölçmeyi sağlayacaktır.


Serial.print(distance);
Serial.println(" cm");
delay(1000);

Son olarak ölçülen mesafe serial port ekranına yazılır ve 1 saniye kadar ölçme işleminin beklemesi sağlanır.

Uygulamayı bu haliyle çalıştırıp yükledikten sonra seri port ekranında aşağıdaki sonuçları görmemiz gerekiyor.

Ultrasonik mesafe sensörü ve serial port ekran çıktısı

Ultrasonic mesafe sensörü ile boy ölçmeyi ve metre kullanmadan iki nokta arasındaki mesafeyi rahatlıkla hesaplayabilirsiniz.

**Bana en büyük desteğiniz yazılarıma yorum yapmanız ve paylaşmanızdır.