Başa dön
Arduino ile HC-SR04 Ultrasonik Mesafe Sensörü Kullanımı

Arduino ile Ultrasonik Mesafe Sensörü (Hc-sr04) Kullanımı

Merhaba arkadaşlar, arduino mesafe sensörü kullanımı nasıl yapılır? Hc-sr04 ultrasonik mesafe sensörü arduino ile nasıl kullanılır beraber inceleyelim.

 

Arduino ile Ultrasonik Mesafe Sensörü Kullanımı için Gerekli Malzemeler:

 

Ultrasonik Mesafe Sensörü Nedir Ne İşe Yarar?

Hc-sr04 Ultrasonik sensör sonar (Sound Navigation and Ranging ) iletişim kullanarak karşısındaki nesneye olan mesafeyi hesaplayan bir kaynaktır. Sonar dediğimiz sistem ses dalgalarını kullanarak cismin uzaklığını hesaplamamıza yardımcı olur. Bu tür sensörlerin esin kaynağı yunuslar ve yarasalardır. Yunuslar ve yarasalarda ses dalgası göndererek karşısına çıkabilecek engellerin mesafelerini hesaplayabilmektedirler.

Hc-sr04 sensörümüzün 4 adet bacağı bulunmaktadır, bunlar:

  • Vcc = 5v kaynağı.
  • Gnd = Topraklama bacağı.
  • Trig = Sensörün ses dalgası gönderen kısmı.
  • Echo = Gönderilen ses dalgasını alan kısmı.

Hc-sr04 sensörümüz 5v elektrik akımı ile çalışmaktadır. En verimli ölçüm yaptığı mesafe 2-200 cm arasındadır. 200 cm’den fazla mesafelerde verimli bir şekilde ölçüm yapmamaktadır.

 

Arduino Ultrasonik Mesafe Sensörü Kullanımı Kodları

Arduino Ultrasonik Mesafe Sensörü Kullanımı Kodları

Arduino Ultrasonik Mesafe Sensörü Kullanımı Kodları

 

 

int trigPin = 2;

int echoPin = 7;

long sure;

long uzaklık;

Burada öncelikle bizim ses dalgası gönderen ve ses dalgasını alan pinlerimizin Arduino kartımız üzerindeki pinlerimizi belirliyoruz. Daha sonra süre ve uzaklık adında iki tane değişken atıyoruz.

pinMode(trigPin, OUTPUT);

pinMode(echoPin,INPUT);

Serial.begin(9600);

Burada ise trig pinimizi OUTPUT olarak belirliyoruz. Bunun sebebi ise ses dalgasını gönderen kısmımız trig pinimiz olmasından dolayı. Echo pinimiz ise gönderilen ses dalgasını aldığı için INPUT olarak belirtiyoruz ve son olarak Serial.begin ile de seri haberleşmemizi başlatıyoruz.

digitalWrite(trigPin, LOW);İlk olarak trip pinimizi low durumunda başlatıyoruz.

delayMicroseconds(5); 5 Mikrosaniye(saniyenin milyonda biri) beklemesini belirtiyoruz.

digitalWrite(trigPin, HIGH); Daha sonra pinimizin ses dalgası göndermesi için emir veriyoruz.

delayMicroseconds(10);

digitalWrite(trigPin, LOW);   Yeni ses dalgası üretebilmesi için trig pinimizi pasif durumuna getiriyoruz.

sure = pulseIn(echoPin, HIGH); Gönderilen ses dalgasının geri dönmesindeki süre ölçülüyor.

uzaklik= sure /29.1/2;Ölçütüğümüz süre uzaklığa çevriliyor.

if(uzaklik > 200) if komutu ile 200 cm ve üzeri bütün uzaklıklar 200 cm olarak yazılacak.

uzaklik = 200;

  Serial.print(“Uzaklik “); 

Serial.print(uzaklik); Ölçtüğümüz uzaklığımız bilgisayarımıza yani Arduino programımızda Araçlar>Seri Port Ekranı kısmına yazılıyor.

Serial.println(” CM “); 

  delay(100); }

 

 

Arduino Mesafe Sensörü Kullanımı Devre Şeması

Bu projemizde kullandığımız ürünleri buradan satın alabilirsiniz.

Projemizde kullandığımız kodları buradan indirebilirsiniz.

 

 

2. HC-SR04 Ultrasonik Mesafe Sensörü Kullanımı – Çalışma Prensibi Nedir?

 

Ultrasonik Mesafe Sensörü HC-SR04 Nedir?

Ultrasonik mesafe sensörü, insan işitmesinin işitilebilir sınırından daha yüksek frekanslara sahip yüksek perdeli ses dalgaları yayan, geri gelen dalganın dönüş süresine göre cime olan uzaklık mesafesini ölçen cihazdır.

Ultrasonik Frekans Aralığı Spektrumu

İnsan kulağı saniyede yaklaşık 20 kez (derin bir gürültü) ile saniyede yaklaşık 20.000 kez (yüksek tiz bir ıslık) titreşen ses dalgalarını duyabilir. Bununla birlikte, ultrasonik ses dalga boyları 20.000 Hz’den daha fazla frekanslara sahiptir. Ancak 20.000 den daha yüksek frekansları insan kulağı duyamaz.

 

HC-SR04 Genel Bakış

HC-SR04 Ultrasonik mesafe sensörü iki ultrasonik dönüştürücüden oluşur. Dönüştürücüler (alıcı-verici), elektrik sinyalini 40 KHz ultrasonik ses darbelerine dönüştüren bir verici görevi görür. Alıcı, iletilen darbeleri dinler. Gelen dalgaların dönüş süresine göre mesafeyi ölçer.

Hc-sr04 küçüktür, herhangi bir arduino projesinde kullanımı kolaydır ve 3 mm aralıklarla 2 cm ile 400 cm arasında ölçüm hassasiyetine sahiptir. 5 volt ile çalıştığı için doğrudan bir Arduino ya da diğer 5V mantıksal mikrodenetleyicilere bağlanabilir.

 

HC-SR04 Teknik Özellikleri:

Çalışma GerilimiDC 5V
Çalışma Akımı15mA
Çalışma Frekansı40KHz
Maksimum Ölçüm4m
Minimum Ölçüm2cm
Ölçüm Aralığı3mm
Ölçüm Açısı15 derece
Tetikleyici Giriş Sinyali10µS TTL
Boyut45 x 20 x 15 mm

HC-SR04 Ultrasonik Sensör Pinout

VCC Arduino’ya 5V pin bağladığımız HC-SR04 Ultrasonik mesafe sensörü için güç kaynağıdır.

Trig (Trigger) pini, ultrasonik ses sinyallerini tetiklemek için kullanılır.

ECHO pini, yansıtılan sinyal alındığında bir BPM üretir. Pulse uzunluğu, iletilen sinyalin algılanması için geçen süre ile orantılıdır.

GND Arduino topraklarına bağlanmalıdır.

HC-SR04 Ultrasonik Mesafe Sensörü Nasıl Çalışır?

Bütün süreç, Trigger pinine en az 10 µS (10 mikrosaniye) süreli bir pulse uygulandığında başlar. Buna yanıt olarak, sensör 40 KHz’de 8 darbeden oluşan bir ses patlaması iletir. Bu 8 darbe, cihazın benzersiz ses imzası ile çıkar ve alıcının gelen özel ses dalgalarını, ortam gürültüsünden ayırt etmesini sağlar.

8 ultrasonik ses darbesi vericiden çıktıktan ve cisme çarpıp geri gelip ECHO pinine ulaştıktan sonra, ECHO pini sinyalin başlangıcını oluşturmaya başlamak için HIGH olur.

Giden ses dalgaları geri gelmezse, ECHO sinyali 38 mS (38 milisaniye) sonra zaman aşımına uğrar ve azalır. Böylece 38 mS’lik bir darbe sensör aralığında herhangi bir engel olmadığını gösterir. Aşağıdaki görsel de görebilirsiniz.

Bu kısım da, darbeler bir nesneye çarpıp geri gelirse, sinyal alınır alınmaz ECHOLOW olur. Bu olay, sinyalin alınması için geçen süreye bağlı olarak genişliği 150 uS ile 25 mS arasında değişen bir darbe üretir.

Alınan darbenin gidiş ve geliş süresi arasında geçen zaman, nesneye olan mesafeyi hesaplamak için kullanılır. Bu hesaplama, lise de öğrendiğimiz basit mesafe-hız-zaman denklemi kullanılarak çözülebilir. Unutmanız durumunda, mesafe, hız ve zaman denklemlerini hatırlamanın kolay bir yolu harfleri bir üçgene koymaktır.

Arduino ile HC-SR04 Ultrasonik Mesafe Sensörü Kullanımı - Formül

Arduino ile HC-SR04 Ultrasonik Mesafe Sensörü Kullanımı – Formül

Daha açık hale getirmek için bir örnek ile anlatalım. Sensörün önünde bilinmeyen bir mesafede bir nesnemiz olduğunu ve ECHO pininde 500 µS genişliğinde bir darbe aldığımızı varsayalım. Şimdi nesnenin sensörden ne kadar uzak olduğunu hesaplayalım. Aşağıdaki denklemi kullanacağız.

Mesafe = Hız x Zaman

Burada Zaman değerine yani 500 µs değerine sahibiz ve hızı biliyoruz. Neyin hızı bu hız? Sesin hızı elbette! 340 m / s. Mesafeyi hesaplamak için ses hızını cm / µs’ye dönüştürmeliyiz. “Mikrosaniye başına santimetre cinsinden ses hızı” için hızlı bir Google araması ile, 0,034 cm / µs olduğunu söyleyecektir. Matematiğini hesaplayarak bunu yapabilirsiniz, ancak google ile aramak daha kolaydır. Her neyse, bu bilgilerle mesafeyi hesaplayabiliriz!

Mesafe = 0,034 cm / µs x 500 µs

Pulse’nin sinyalin gönderilmesi ve geri yansıtılması için geçen süreyi gösterdiğini, böylece mesafeyi elde etmek için sonucunuzu ikiye bölmeniz gerektiğini unutmayın.

Mesafe = (0,034 cm / µs x 500 µs) / 2

Mesafe = 8.5 cm

Nesnenin sensörden 8.5 santimetre uzakta olduğunu basit bir formül ile kolayaca öğrendik.

Kablolama – HC-SR04’ü Arduino Uno’ya Bağlama

Artık HC-SR04 ultrasonik mesafe sensörünün nasıl çalıştığını tam olarak anladığımıza göre, onu Arduino’muza bağlamaya başlayabiliriz!

HC-SR04’ü Arduino ya bağlamak oldukça kolaydır. Sensörü breadboard’unuza yerleştirerek başlayın. VCC pinini Arduino’daki 5V pinine bağlayın ve GND pinini Arduino’daki Toprak pinine bağlayın.

İşiniz bittiğinde, aşağıda gösterilen resme benzer bir şeye sahip olmalısınız.

Şimdi ultrasonik mesafe sensörünüzü bağladığımıza göre, bir kod yazma ve test etme zamanı.

Arduino Kodu – NewPing Kütüphanesini Kullanma

Ultrasonik sensörü tetiklemek ve alınan sinyal darbe genişliğini manuel olarak ölçmek yerine özel bir kütüphane kullanacağız. Bunlardan birkaç tane var, en çok yönlü olanı “ NewPing ”.

Önce Bitbucket’ı ziyaret ederek kütüphaneyi indirin veya zip dosyasını indirmek için bu düğmeye tıklayın:

Yüklemek için Arduino IDE’yi açın, Taslak> library ekle> .ZIP Kitaplığı Ekle…‘ye gidin ve daha sonra indirdiğiniz NewPing ZIP dosyasını seçin.

NewPing kütüphanesi oldukça iyidir ve orijinal taslağımızın doğruluğunu önemli ölçüde geliştirir. Aynı anda 15 adede kadar ultrasonik sensörü destekler ve doğrudan santimetre, inç veya zaman cinsinden çıkış yapabilir.

NewPing kütüphanesini kullanmak için yeniden yazılan kodumuz:

// This uses Serial Monitor to display Range Finder distance readings

// Include NewPing Library
#include "NewPing.h"

// Hook up HC-SR04 with Trig to Arduino Pin 9, Echo to Arduino pin 10
#define TRIGGER_PIN 9
#define ECHO_PIN 10

// Maximum distance we want to ping for (in centimeters).
#define MAX_DISTANCE 400  

// NewPing setup of pins and maximum distance.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
float duration, distance;

void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  // Send ping, get distance in cm
  distance = sonar.ping_cm();
  
  // Send results to Serial Monitor
  Serial.print("Distance = ");
  
  if (distance >= 400 || distance <= 2) 
  {
    Serial.println("Out of range");
  }
  else 
  {
    Serial.print(distance);
    Serial.println(" cm");
  }
  delay(500);
}

Kod Açıklaması:

Yukarıdaki kod basittir ve iyi çalışır. 1 santimetreye kadar bir okumaya sahiptir. Ondalık nokta değerlerini geri getirmek isterseniz, NewPing’i mesafe modu yerine süre modunda kullanabilirsiniz. Bu yapabilmek için aşağıdaki satırı değiştirmeniz gerekiyor.

// Send ping, get distance in cm
distance = sonar.ping_cm();

Bu kodlarla değiştirmelisiniz.

duration = sonar.ping();
distance = (duration / 2) * 0.0343;

HC-SR04’ünüzün doğruluğunu bir üst seviyeye çıkarmak için, NewPing kütüphanesinde “iterations” adı verilen başka bir işlev daha vardır. Yinelemek(iterations), bir şeyi bir kereden fazla gözden geçirmek demektir ve yineleme modunun yaptığı da tam olarak budur. Sadece bir değil, birçok süre ölçümü alır, geçersiz okumaları atar ve kalanların ortalamasını alır. Varsayılan olarak 5 okuma alır, ancak istediğiniz şekilde artırıp, azaltabilirsiniz.

int iterations = 5;
duration = sonar.ping_median(iterations);

Arduino Projesi – Mesafe Bulucu

Basit bir ultrasonik sensörün nasıl sofistike bir temassız mesafe bulucuya dönüştürülebileceğini göstermek için hızlı bir proje oluşturalım. Bu proje de, nesneye olan mesafeyi grafik olarak alt satırda değerle temsil etmek için yatay bir Bar Graph Çubuk Led Gösterge ve görüntülemek için 16×2 Karakter LCD Display kullanacağız.

16×2 karakterli LCD’ler ile ilgili detaylı bilgi için aşağıdaki bağlantıya tıklayabilirsiniz.

 

Arduino Uno ile Öğretici Arabirim 16x2 Karakter LCD

Arduino ile 16×2 Karakter LCD Ekran kullanımı

Arduino projelerinizin durum mesajlarını veya sensör okumalarını göstermesini ister misiniz? O zaman 16×2 LCD ekranlar işiniz görecektir. Son derece yaygındır ve …