3 Ağustos 2013 Cumartesi

Arduino UNO R3 ve HC-SR04 Ultrasonic Mesafe Ölçer ile LED Yakmak

Hamza Öztaş Share:
Image Hosted by ImageShack.us
Image Hosted by ImageShack.us
Image Hosted by ImageShack.us
Image Hosted by ImageShack.us


Bu uygulama HC-SR04 sensörü ile mesafe ölçülüp, mesafe 50 cm olduğunda Arduino'nun digital 13. pinine bağlı olan LED'in yanması ve  diğer tüm durumlar için LED'in sönmesi uygulamasıdır. Buradaki amaç ölçülen mesafeye göre başka bir işlem yapmaktır. Bu uygulamayı geliştirerek çok daha farklı kendi projelerinizi geliştirebilirsiniz. Mesala basit olarak arabalardaki park sensörlerini düşünecek olursak nasıldır, araba içinde digital bir ekran vardır, geri geri gittiğinizde ekranda mesafeyi yazar ve sesli olarak uyarı verir, aynı şekilde bunu yapmak mümkündür. Kendi projelerinizde örneğin Arduino ile bir araba yaptığınızı düşünürsek arabanın arkasına ve önüne bu sensorü yerleştirdiğinizi düşünün bir engelle karşılaştığında aradaki mesafeyi ölçerek engellere çarpmadan kontrol edebilirsiniz, bir nevi engel algılayan sensor olarak kullanmış olursunuz, umarın anlatabilmişimdir aklınıza takılan bi yer olursa sayfa altına mesaj bırakabilir yada sayfanın en altında yer alan iletişim bölümünden de mesaj bırakabilirsiniz
kolay gelsin..

  • Sensor yere paralel ve dik olarak konumlandırılmalıdır.
  • +5 V ve GND Arduino üzerinden beslenmiştir.
  • Ölçümler "cm" olarak hesaplanmaktadır.
  • Echo ve Trigger pinleri Arduino'nun digital pin'lerine bağlanmıştır, dikkat ediniz digital PWM çıkışına bağlamayınız, aksi takdirde sensor çalışmaz.
  • Yazılımı attıktan sonra 15-20 saniye sonra sensor ölçüm yapmaya başlayacaktır.
  • Aşagıda kod'ta hesaplama işlemi her 50 ms'de bir gerçekleşmektedir, bu aralığı daha uzatmak, yavaş ölçüm yapmak için gecikme süresini artırmalısınız.
  • Yapılan ölçümlerin doğru olup olmadığını Arduino'nun serial monitör kısmında görüntüleyip ve metre ile ölçerek test edebilirsiniz.


Arduino Kod;

//http://www.depositericrobotic.com/

#define echoPin 7 // Echo Pin, Arduino'nun digital 7. pinine bağlanmıştır.
#define trigPin 8 // Trigger Pin, Arduino'nun digital 8. pinine bağlanmıştır.
int LED = 13;   // Arduino'nun digital 13. pinine bağlanmıştır.

long duration, distance;

void setup(){
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(LED, OUTPUT);
}

void loop(){

 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);

 distance = duration/58.2; // Mesafe cm olarak hesaplandı
 delay(50);                      // 50 ms'lik bir gecikme ( her 50 ms'de bir hesaplama işlemi yapıyor )
 if( distance == 50 ){       // Mesafe 50 cm olursa LED'i yak
   digitalWrite(LED,HIGH);}
 else{                               // Diğer durumlar için LED'i söndür
   digitalWrite(LED,LOW);}

}
Image Hosted by ImageShack.us

Tarafından Yayınlandı >> Hamza Öztaş

Hamza Öztaş'ı google plus'ta takip etmek için Google'a tıklayın;
Google+.

15
replies
  1. eğer 3 tane hcsr04 kullanıcak olursam trig bacaklarına göndereceğim sinyaller nasıl olmalı??? hangi aralıklarda olmalı???

    YanıtlaSil
  2. 3 adet HC-SR04 kullanacaksanız aynı aralıkları kullanabilirsiniz.

    **3 adet HC-SR04 sensorlerinizin +5V ve GND pinleri ile Arduino'nuzun +5V ve GND pinlerini birleştirin.
    **Sensorlerin ECHO ve TRIG pinlerini Arduino'nuzun digital pwm olmayan pinlerine bağlayın.
    **Yukarıdaki kodu aynen kullanabilirsiniz sadece 3 sensorun ECHO ve TRIG pinleri karışmaması için atıyorum 1. sensor için ECHO1,TRIG1 2. sensor için ECHO2,TRIG2 3. sensor için ECHO3, TRIG3 olarak ifade edebilirsiniz.
    **Aynı şekilde 3 ayrı distance değişkeni tanımlayın,( distance1, distance2, distance 3 gibi )
    ** Şuan 3 ayrı sensorden ölçümleri alıyorsunuz ve bunlar distance1, distance2 ve distance3 olarak tanımladığınız değişkenlerin içine atılıyor, artık buradan istediğiniz işlemleri yapabilirsiniz.
    **Atıyorum 3 sensor içinde aynı ölçümü aldığınızda bi çıkış vereceksiniz.
    **if(distance1==50 && distance2==50 && distance3==50)
    {
    // artık buraya ne gibi işlemler yapmak istiyorsanız onları belirtirsiniz
    // led yakmak
    // arabayı ileri, geri yada herhangi bir yönde hareket etmesini istemek
    }

    **3 sensorun üçünden de yapmış olduğunuz ölçüme göre üç farklı işlemde yaptırabilirsiniz.
    **Atıyorum if( distance1==50)
    {
    }
    if(distance2==40)
    {
    }
    if(distance3==30)
    {
    }
    **umarın anlatabilmişimdir, aklınıza takılan bir yer olursa yine mesaj bırakabilirsiniz.

    YanıtlaSil
  3. teşekkür ederim çok güzel anlattınız fakat benim anlamadığım nokta 3 tane trig bacağına sinyal gönderme aralığı ne olmalı bunun algoritması nasıl olmalıki sensörlere giden sinyaller karışmasın ???
    teşekkürler....
    digitalWrite(trigPin1, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin1, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin1, LOW);

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

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

    YanıtlaSil
    Yanıtlar
    1. öncelikle iyi bayramlar, adsız bey :D, sensorleriniz sıfıra sıfır yan yana olmaz ise yukarıya yazmış olduğunuz şekilde problem olacağını sanmıyorum. HC-SR04 sensoru 40 kHz frekansında sinyaller üretmektedir. Sensorun trig bacağına 10ms'lik küçük frekansta kare dalgalar gönderiyoruz ve sensor kendi içerisinde sinyal üretiyor ve üretilen bu sinyal cisme carpıp geri geliyor. Sensore veri geldiğinde sensorun echo pini lojik-1 oluyor, mesafeyi ölçme işlemide bu echo pininin kaç defa lojik-1 olduğunu bularak gerçekleşiyor.

      Sil
  4. teşekkür ederim sizede iyi bayramlar hamza bey :) sensörün kullanımında sıkıntı yok sadece yapacağım robotta sinyallerin karışmaması için uğraşıyorum :) peki newping kütüphanesini önerirmisiniz bu kütühaneyi kullanmayı düşünüyorum newping yani ultrasonic kütüphanesi....

    YanıtlaSil
    Yanıtlar
    1. tabi ki kütüphaneye bağlı kalarak çalışmak, diğer duruma göre çok daha iyi olacaktır.

      Sil
  5. çok teşekkür ederim hamza bey....

    YanıtlaSil
  6. Rica ederim, iyi calismalar.

    YanıtlaSil
  7. arduino ile mesafe sensörü yapacamda hangi entegreyi almam gerekiyor

    YanıtlaSil
    Yanıtlar
    1. ihtiyacınız olan tek sey Arduino nun kendi sensoru " ping yada hc sr04 "mesafe sensoru almanız yeterli

      Sil
  8. cok yavas tepki veriyor 10 cm den kücükse led yansın gibi bişey yazdım 1,5 saniye kadar bi geçikme var daha hızlı calişması için ne yapmalıyım

    YanıtlaSil
    Yanıtlar
    1. delay() gecikme konutundan sureyi azaltabilirsiniz, sure milisaniye dir dikkat ediniz.

      Sil
  9. dayı ben ögrenciyim bana kolay bitane yazarmısın?

    YanıtlaSil
  10. Öncelikle yaptığınız uygulama için ellerinizle sağlık.Bir proje için benim de buna benzer bir uygulama yapmam gerekmekte.Fakat tek sensor yerine iki sensorun mesafeleri kiyaslamasi gerekiyor.sensorun biri sağ tarafı, diğeri sol tarafı ölçecek ve ardunio iki motor çalıştırıp büyük olan mesafe yönündeki motor hız kesip mesafenin eşitlenmesi istenecek.Nasıl bir kod yazmalıyım.Yardımcı olabilirseniz sevinirim.İyi günler.

    YanıtlaSil
  11. merhabalar.ege ünv.arduino ile ultrasonik mesafe sensörü ile gaz ölçümü ödevi aldık(tez).sizden isteğim arduino için hız kodları.mesafeyi hıza çevirmemiz gerekiyor.yardım edebilirmisiniz.

    YanıtlaSil

Get Updates in your Email
Complete the form below, and we'll send you our best of articles.

İletişim

© >> |
TOP