1000 TL Üzeri Alışverişlerde Ücretsiz Kargo ve Türkiye'nin Her Yerine 59,90₺

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

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

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ı

 

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ı

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.

 

İ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 Gerilimi DC 5V
Çalışma Akımı 15mA
Çalışma Frekansı 40KHz
Maksimum Ölçüm 4m
Minimum Ölçüm 2cm
Ölçüm Aralığı 3mm
Ölçüm Açısı 15 derece
Tetikleyici Giriş Sinyali 10µS TTL
Boyut 45 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.

 

 

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.


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 16x2 LCD ekranlar işiniz görecektir. Son derece yaygındır ve ...

      
Kod yüklemeye ve sensörle oynamaya başlamadan önce LCDBarGraph adlı kütüphaneyi kurmamız gerekiyor. Bu kütüphane, çubuğun uzunluğuna uygun şekilde ve lcd ekran üzerinde orantılı olarak değerlerin gösterilmesine yardımcı olur.

 
 

Kitaplığı yükledikten sonra, aşağıdaki kodu deneyin.

// includes the LiquidCrystal Library
#include <LiquidCrystal.h> 

// includes the LcdBarGraph Library
#include <LcdBarGraph.h>

// Maximum distance we want to ping for (in centimeters).
#define max_distance 200

// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

LcdBarGraph lbg(&lcd, 16, 0, 1); // Creates an LCD Bargraph object.

const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;

void setup() 
{
  lcd.begin(16,2); // Initializes the interface to the LCD screen
  
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() 
{
  // Write a pulse to the HC-SR04 Trigger Pin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Measure the response from the HC-SR04 Echo Pin
  duration = pulseIn(echoPin, HIGH);
  
  // Determine distance from duration
  // Use 343 metres per second as speed of sound
  distance= duration*0.034/2;
  
  // Prints "Distance: <value>" on the first line of the LCD
  lcd.setCursor(0,0);
  lcd.print("Distance: "); 
  lcd.print(distance);
  lcd.print(" cm");

  // Draws bargraph on the second line of the LCD
  lcd.setCursor(0,1);
  lbg.drawValue(distance, max_distance);
  delay(500);
}

Kod Açıklaması:

İlk önce her zamanki gibi LiquidCrystal kütüphanesini ayarlamanız gerekir. Bundan sonra yeni oluşturulan LiquidCrystal örneğiyle LcdBarGraph örneği oluşturabilirsiniz. LcdBarGraph üç parametre daha alır. İkincisi, LCD'deki karakter sütunlarının sayısıdır (biz de 16'dır). Son iki parametre isteğe bağlıdır ve çubuğun özel konumlandırılmasına izin verir.

// creating bargraph instance
LcdBarGraph lbg(&lcd, 16, 0, 1);

Şimdi sensör mesafesini hesapladıktan sonra, çubuk grafiği görüntülemek için drawValue (değer, maxValue) işlevini kullanabiliriz. Bu, 0 ile maxValue arasında bir değere sahip bir çubuk grafik çizer.

//display bargraph
lbg.drawValue(distance, max_distance);

HC-SR04 ile 3 Telli Mod Arabirimi

3 Kablolu Mod, iki yerine tek bir Arduino dijital I / O pinine ihtiyaç duyduğunuz da işe yarar. 3 Telli modda, tek I / O pimi hem giriş hem de çıkış olarak kullanılır. Bir I / O pin gereksinimini ortadan kaldırarak Arduino'muza bir bağlantı kaydedebilir ve başka bir şey için kullanabiliriz. Ayrıca, sınırlı sayıda G / Ç pini olan ATtiny85 gibi bir yonga kullanıldığında da yararlıdır. HC-SR04 sensörünü 3 telli mod kullanarak Arduino'ya nasıl bağlayacağınız aşağıda açıklanmıştır.

[gallery columns="1" link="file" size="full" ids="7915"]

 

Tüm yapmanız gereken görebileceğiniz gibi, hem tetikleyiciyi hem de ECHO'yu Arduino pin 9'a bağlamak. Kodun geri kalanı aynı.

#define TRIGGER_PIN 9 // Trigger and Echo both on pin 9
#define ECHO_PIN 9

HC-SR04 Kullanım Hataları

Doğruluk ve genel kullanışlılık açısından, HC-SR04 ultrasonik mesafe sensörü, özellikle diğer yüksek maliyetli mesafe algılama sensörlerine kıyasla gerçekten harikadır. Harika olması, HC-SR04 sensörünün “her şeyi” ölçebileceği anlamına gelmez. Aşağıdaki diyagramlar da HC-SR04'ün ölçüm yapamadığı birkaç durum gösterilmektedir:

 

a) Sensör ile nesne / engel arasındaki mesafe 13 metreden fazla olursa ölçüm yapamaz.

 

b) Nesnenin yansıtıcı yüzeyi farklı bir yöne bakıyorsa, ses tekrar sensöre doğru yansıtılmaz, başka yöne gider.

c) Nesne, sensöre yeterince ses yansıtacak kadar küçük ise olumlu sonuç alamazsınız. Ayrıca, küçük nesnelerden ziyade zeminden yansıyan sesi algılayabilme ihtimaliniz vardır.

d) Sensörle deney yaparken, yumuşak, düzensiz yüzeylere sahip bazı nesnelerin (oyuncak ayı gibi) sesi yansıtmak yerine emdiğini ve bu nedenle HC-SR04 sensörünün algılanmasının zor olabileceğini keşfedeceksiniz.

Sıcaklığın Mesafe Ölçümü Üzerine Etkisi

 

HC-SR04, hırsız alarmı veya yakınlık alarmları gibi projelerimizin çoğu için makul derecede ideal olsa da; alışılmadık derecede sıcak veya soğuk ortama göre ayar yapılması gerekmektedir. Böyle bir durum da, havadaki ses hızının sıcaklık, hava basıncı ve neme göre değiştiğini dikkate almak isteyebilirsiniz.

HC-SR04 ile mesafe hesaplamak için (Sıcaklık (° C) ve Nem zaten biliniyorsa) aşağıdaki formülü kullanabilirsiniz.

Ses hızı m / s = 331,4 + (0,606 * Sıcaklık) + (0,0124 * Nem)

 

 

Etiketler: Arduino ile Ultrasonik Mesafe Sensörü Kullanımı , Ultrasonik Mesafe Sensörü Kullanımı
Ağustos 04, 2021
Listeye dön
cultureSettings.RegionId: 0 cultureSettings.LanguageCode: TR
Çerez Uyarısı

Alışveriş deneyiminizi iyileştirmek için yasal düzenlemelere uygun çerezler (cookies) kullanıyoruz. Detaylı bilgiye Gizlilik ve Çerez Politikası
sayfamızdan erişebilirsiniz.