Arduino Ultrasonik Mesafe Sensörü ( HC-SR04) ve Mesefa Ölçümü

Merhaba arkadaşlar,
Mobilhanem.com için hazırladığımız Arduino Eğitimlerine ultrasonic mesafe sensörü olan HC-SR04 ile devam ediyoruz. Bu dersimizde HC-SR04‘den ve Arduino HC-SR04 kullanımından bahsedeceğiz.

Ultrasonic Mesafe Sensörü ( HC-SR04)

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

HC-SR04 ses dalgalarını kullanarak mesafe ölçümü işlemi için kullanılan bir aygıttır. Üzerinde ses dalgaları için bir verici ve bir alıcı bulundurur. Verici üzerinden ses dalgaları yayımlayarak bu dalgaların bir yüzeye çarpıp geri dönmesi arasında geçen süre üzerinden mesafe ölçme imkanı sunmaktadır. 2 – 400 cm aralığında ölçüm yapabilmekte ve bu ölçümü 3 mm hassasiyetinde gerçekleştirebilmektedir. 5V çalışma geriliminde  üzerinde bulunan VCC, Trigger, Echo ve GND bacaklarına yapılan bağlantılar ile kullanılır.

Trigger bacağı aktif hale getirilerek gerilim uygulanması ile birlikte verici üzerinden bir ses dalgası yayımlanmaya başlamış olur. Yayımlanan ses dalgası bir yüzeyden yansıyarak alıcı üzerine geri döndüğünde HC-SR04 Echo bacağına gerilim uygular. Ses dalgasının yayımlanması ve geri yansıması arasında geçen süre kullanılarak sensörün önündeki mesafe hesaplanır.

HC-SR04 hakkında daha fazla bilgi almak için datasheet‘ine göz atabilirsiniz.

Arduino HC-SR04 Kullanımı

Arduino ile birlikte HC-SR04 kullanabilmek için sensör üzerinde bulunan 4 bacağın örnek bağlantıları aşağıdaki şekildeki gibi olmalıdır.

Arduino - HC-SR04 Devre Şeması
Arduino – HC-SR04 Devre Şeması

Arduino ile HC-SRo4 kullanarak kodunu yazacağımız örneğimize geçmeden önce örneğimizde kullanacağımız pulseIn fonksiyonun neye yaradığını ve nasıl çalıştığını bilmemiz kodumuzu anlamamıza yardımcı olacaktır.

pulseIn () Fonksiyonu

Bu fonksiyon gözlemlenen bir pin üzerindeki gerilimin beklenen duruma gelinceye kadar mikro saniye olarak geçen süreyi unsigned long veri tipinde geri döndürür.  pulseIn fonksiyonu iki veya üç parametre ile çağrılmaktadır. ilk parametresi ilgili pin’i, ikinci parametresi gözlemlenecek olan gerilim durumunu (HIGH, LOW), isteğe bağlı olan üçüncü parametresi ise beklenen durum için mikro saniye cinsinden zaman aşımını belirtmektedir. Ayrıca ilk iki parametresi integer tipinde iken üçüncü parametresi long veri tipindedir.

Biz örneğimizde bu fonksiyonu alıcıya yansımış bir ses dalgası olmadığı sürece LOW durumda olacak olan Echo bacağının HIGH durumunu geçişi için ne kadar süre geçtiğini hesaplamak için kullanacağız.

Arduino HC-SR04 Mesafe Ölçüm Örneği

byte trigger = 10; // Sensörün Trigger bacağının bağlı olduğu pin
byte echo = 11; // Sensörün Echo bacağının bağlı olduğu pin

unsigned long sure; // Echo bacağının kac mikro saniyede aktif olduğunu saklayacak olan değişken 
double toplamYol; 
int aradakiMesafe; 


void setup() {
  pinMode(trigger, OUTPUT); // Sensörün Trigger bacağına gerilim uygulayabilmemiz için OUTPUT yapıyoruz.
  pinMode(echo, INPUT); // Sensörün Echo bacağındaki gerilimi okuyabilmemiz için INPUT yapıyoruz.
  Serial.begin(9600); 
}
void loop()
{
  /* Başlangıçta LOW durumda olan trigger bacağına gerilim uygulayıp ardından gerilimi keserek bir ses dalgası
  oluşturmuş oluyoruz. Bu işlem arasında 10 mikro saniye beklenmenin sebebi HC-SR04'ün en az 10 mikro saniyelik 
  dalgalar ile çalışmasıdır. */
  digitalWrite(trigger, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger, LOW);

  // Dalga üretildikten sonra geri yansıyıp Echo bacağının HIGH duruma geçireceği süreyi pulseIn fonksiyonu ile 
  // kaydediyoruz. 
  sure = pulseIn(echo, HIGH);

  // Aşağıda yapılan süre-mesafe dönüşüm işlemleri yazımızda açıklanmıştır. 
  toplamYol = (double)sure*0.034;
  aradakiMesafe = toplamYol / 2;
  
  Serial.print("Ses dalgasinin geri donus suresi :");
  Serial.print(sure);
  Serial.println("mikro saniye");
  
  Serial.print("Ses dalgasinin toplam kat ettigi yol :");
  Serial.print(toplamYol);
  Serial.println("cm.");
  
  Serial.print("HC-SR04 ile karsisindaki yuzey arasindaki mesafe :");
  Serial.print(aradakiMesafe);
  Serial.println("cm.\n\n");

  delay(2000);
}
Arduino - HC-SR04 Örneği Ekran Çıktısı
Arduino – HC-SR04 Örneği Ekran Çıktısı

Süre – Mesafe Dönüşümü

HC-SR04 ile yayımlanan ses dalgalarının bir yüzeye çarpması ve geri dönmesi arasındaki süre kullanılarak mesafe ölçme işleminin gerçekleştirildiğinden bahsetmiştik.

Bizim örneğimizde elde ettiğimiz süre mikro saniye cinsinden olduğundan ve yaptığımız ölçümü de santimetre cinsinden göstermek istediğimiz için ses hızını kullanarak bu yönde bir dönüşüp yapmamız gerekmektedir. Saniyedeki hızı yaklaşık olarak 340 m/sn olan ses dalgalarının bir mikro saniyede aldığı yol 0.034 cm’dir. Örneğimizde pulseIn fonksiyonunu kullanarak oluşturduğumuz ses dalgasının toplam gidiş-dönüş süresini elde ediyoruz. Elde ettiğimiz süre değerini 0.034 ile çarptığımızda toplam kat edilen yolu, toplam kat edilen yolu ikiye böldüğümüzde de uzaklık değerini elde etmiş oluruz.

Bu dersimizde Arduino ile HC-SR04(Ultrasonik Mesafe Ölçüm Sensörü) kullanarak nasıl mesafe ölçme işlemini gerçekleştirebileceğimizi; HC-SR04’ü inceleyerek, pulseIn fonksiyonundan ve süreden nasıl mesafe elde edileceğinden bahsederek anlatmaya çalıştık. Konuyla ilgili yorumlarınızı konu altından yapabilir, sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz. Bir sonraki içeriğimizde Mobilhanem.com‘da görüşmek üzere.

Tüm Arduino Dersleri için tıklayınız..

75

Muhammed Enes Ateş

9 Yorum

  • hc sr 04 ü bread boarda takıyorum bağlantıları yapıyorum son jumperı takınca arduino kapanıyo çekince geri açılıyo sadece güç girişlerşnde oluyor sorun ne olabilir öğlen böyle bi sıkıntı yoktu

  • Çok güzel çalışma olmuş tebrik ederim. Ultrasonik mesafe ölçüm metodu ilginç bir konu. Emeği geçen arkadaşlara teşekkür ederim.

  • Bilgiler için çok teşekkürler.
    Küçük bir düzeltme: 340m/sn cm cinsine çevrilirken virgül sola kaydırılmaz, zira 2 adet “0” eklenir. yani 0,034cm/sn değil 34000cm/sn olur. anlayışınıza sığınarak düzeltmek istedim.
    saygılarımla

    • Öncelikle yorumunuzla içeriğimize katkı sunduğunuz için teşekkür ederiz.

      Elbette 340m/sn’yi cm cinsine çevirirsek 34000cm/sn olacaktır. Ancak “Saniyedeki hızı yaklaşık olarak 340 m/sn olan ses dalgalarının bir mikro saniyede aldığı yol 0.034 cm’dir. ” cümlesi ile içeriğimizde belirttiğimiz gibi bir saniyede değil bir mikro saniyede alınan yola ihtiyaç duyduğumuz için sizinde söylemiş olduğunuz dönüşüme ilaveten birde mikro saniye dönüşümü uygulanmıştır. Bu nedenlede bir mikro saniyede kat edilecek olan yol 0.034 cm olarak bulunmuştur.

      İyi günler.

  • Ses dalgasinin geri donus suresi :0mikro saniye
    Ses dalgasinin toplam kat ettigi yol :0.00cm.
    HC-SR04 ile karsisindaki yuzey arasindaki mesafe :0cm.

    Ses dalgasinin geri donus suresi :0mikro saniye
    Ses dalgasinin toplam kat ettigi yol :0.00cm.
    HC-SR04 ile karsisindaki yuzey arasindaki mesafe :0cm.

    sizce sebebi ne olabilir

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?