Arduino İle Mesafe Ölçümü

Arduino ile Mesafe Ölçümü 

 Arduino ile mesafe ölçümü uygulaması yapımına başlamadan önce kullanılacak malzemeleri tanıyalım.

  1. Arduino Uno: en çok tercih edilen ve piyasada kolaylıkla bulabileceğiniz Arduino modelidir. Tabi ki diğer Arduino modellerinden herhangi birini de tercih edebilirsiniz.
  2. HC-SR04: ultrasonik mesafe sensörü olarak HC-SR04 sensörünü kullanacağız. Bu sensör basit anlamda bir adet hoparlör ve bir adet mikrofondan oluşmaktadır. Yaklaşık olarakta 40Mhz’lik frekansta ses dalgası göndermektedir. 2 cm ile 400 cm arasında ölçüm yapabilmektedir.
  3. Bread board: devre bağlantılarını gerçekleştirmek için devre tahtası kullanılacaktır.

 

Devre Bağlantılarının Gerçekleştirilmesi

hc-sr04-02

Yukarıda HC-SR04 sensörün şekli görülmektedir. Sensör kartı üzerinde görülen pinlerden Vcc, Arduino Uno kart üzerinde bulunan 5V pin noktasına bağlanacaktır. Yine Gnd yazılı olan pin ise Arduino üzerinde bulunan Gnd lerden herhangi birine bağlanabilir. Bu şekilde besleme gerilimi için gerekli bağlantılar sağlanmış olur.  Sensör üzerinde bulunan Trig adlı pin ses gönderme işlemi için kullanılır ve Arduino Üzerinde 3 nolu pine bağlayabiliriz. Echo pini ise ses alma bağlantısı için kullanılan pindir. Bu pini de Arduino Uno üzerindeki 4. Pine bağlayabiliriz.(Program üzerinde tanımlamak koşuluyla digital pinlerden herhangi birine bağlantı gerçekleştirebilirsiniz.)

 

Devrenin çalışması

Devrenin çalışması, ultrasonik sensör üzerindeki hoparlör ile insan kulağının algılayamadığı ses dalgaları gönderilmektedir. Bu gönderilen ses dalgaları karşı tarafta bir cisme çarpıp geri geldiğinde mikrofon tarafından algılanmaktadır. Mesafenin ölçümü ise hoparlörden çıkan ses dalgasının çıktığı andan itibaren karşısında bulunan cisme çarpıp geri yansıması arasında geçen süreyle orantı kurularak hesaplanmaktadır. Yani hoparlörden sinyalin çıkması ve mikrofonun sinyali algılaması arasında ki süre bize ultrasonik sensörün karşısında bulunan cismin uzaklığını vermektedir. Yalnız burada dikkat edilecek bir durum vardır. Sinyalin, mesafesi ölçülecek cisme kadar gitmesi T sürede oluyorsa, gidip gelmesi 2T sürede olacaktır. Dolayısıyla sinyalin gidip gelme süresini 2’ye bölmemiz gerekecektir.

Adsız

 

Şimdi bu durumu nasıl formülize edeceğimize gelelim; 

Ses dalgasının havada yayılma hızı saniyede 343 metredir. Buradan hareketle basit bir orantı üzerinden işlemi gerçekleştirebiliriz.

cm cinsinden yazacak olursak: 34300cm/s

farklı bir ifadeyle şu şekilde de yazabiliriz:

1000000 mikro saniyede 34300 cm yol alır.

Bizim Arduino ile yapacağımız ölçümde T süresi, cisme çarpıp gelme süresi olduğundan T/2 olarak kullanılacaktır. Şimdi orantımıza geçebiliriz.

 

Adsıza

T bizim ultrasonik sensör ile yaptığımız süre ölçümü ve herhangi bir değişkene kaydedebiliriz. Bu kaydettiğimiz değeri 0,01715 ile çarptığımızda sonuç olarak cm cinsinden mesafemizi bulmuş oluruz. İşlemi biraz daha kolaylaştırmak için 1/0,01715 sayısı 58,3 sayısına eşittir. Dolayısıyla 1/58,3 sayısı da 0,01715 sayısına eşittir ve T süremizi 0,01715 sayısı ile çarpmak yerine 58,3 sayısına bölebiliriz. İşlem sonucu aynı olacaktır.

 

Arduino ile Program Kodlarının yazılması

 

#define trig 3 // Trig Pini (Ses gönderme)

#define echo 4 // Echo Pini (Ses algılama)

 

float microsaniye_sure, mesafe_cm;//değişkenler tanımlanmaktadır.

 

void setup() {

 Serial.begin (9600); // Seri iletişimi başlatmak için tanımlama yapılması

pinMode(trig, OUTPUT); //Ses gönderme pini çıkış olarak ayarlanır.

 pinMode(echo, INPUT); //Ses algılama pini giriş olarak ayarlanır.

}

void loop() {

 digitalWrite(trig, LOW); // Hoparlör 2ms beklemeye alınır.

 delayMicroseconds(2);

 

 digitalWrite(trig, HIGH); // Hoparlör ile 10ms ses dalgası gönderilir.

 delayMicroseconds(10);

 

 digitalWrite(trig, LOW); // Hoparlör tekrar durdurulur.

 microsaniye_sure = pulseIn(echo, HIGH); // Mikrofon dinlenir, yansıma süresini microsaniye_sure değişkenine kaydedilir.

 

 mesafe_cm = microsaniye_sure/58.3; //ölçülen süre 58,3’e bölünerek cm cinsinden mesafe bilgisi alınmış ve mesafe_cm değişkenine kaydedilir.

 Serial.print(mesafe_cm); //Mesafe değeri serial monitöre yazdırılır.

 Serial.println(“cm“); // yazdırılan mesafe değerinin yanına “cm” ifadesi yazdırılır.

 

 delay(50);  //50ms bekleme yapılır.

}

 

Arduino İle Mesafe Ölçümü” için 2 yorum

  • 20/05/2016 tarihinde, saat 15:37
    Permalink

    İi günler size bir sorum olacaktı. Şimdi ben mesafeyi sensör ile ölçtükten sonra mesafe bilgisine göre dc motoru hizlandirip yavaslatmak istiyorum. Onu nasıl yapabilirim. Değişen gerilime göre motor yavaslanip hizlanacak. Yani sadece sizin yazdığınız üstteki kodda nasıl bir ekleme yaparak arduino dan çıkış alıp Dc motorun olduğu devreye ekleyebilirim

    Yanıtla
    • 22/05/2016 tarihinde, saat 22:08
      Permalink

      merhaba,
      motor hız kontrolü PWM sinyali ile yapılmaktadır. pwm 0-255 arasında değişen değerlere göre motorun hızını ayarlamaktadır. ölçümünü yaptığınız mesafe aralığını 0 ile 255 aralığına dönüştürmeniz gerekiyor. yani mesafe._cm değişkeni içerisinde olan mesafe bilgisini “map” komutuyla dönüştürebilirsiniz. bu dönüşümü yaptıktan sonra bu değeri motorlara aktarmak kalıyor. bunu da analogWrite(pin, deger) komutuyla aktarabilirsiniz.

      Yanıtla

Bir Cevap Yazın

%d blogcu bunu beğendi: