Hc-Sr 04 Mesafe Sensörü Kullanımı ve Park Sensörü Yapımı

Hc-Sr 04 Mesafe Sensörü arduino da sıklıkla kullanılan sensörlerden birisidir. Özellikle engelden kaçan robot yapımı ve sonar projelerinde sıklıkla tercih edilir. Biz bu uygulamamızda park sensörü yapacağız.

İlk olarak Hc-Sr 04 ultrasonik mesafe sensörünü tanımakla başlayalım. Oldukça basit bir mantıkla çalışıyor. 4 adet pini var. Bunlar;

5V 

GND (Toprak),

Trigger Echo Pinleri.

5V ile çalıştırılan Trigger pininden çıkan ses dalgaları herhangi bir engele çarptığı zaman geri dönerek echo pinine ulaşır ve bu sırada da ölçüm yapılmış olur.

Hc-Sr 04 mesafe sensörünün özelliklerine bakacak olursak;

-5v ile çalışır

-2 cm ile 4 m arası ölçüm yapar

-15 mA ile çalışır

-Arduino üzerindeki digital pinler ile çalışma yapar. 

Ayrıca bu sensörün kullanımı sırasında şu bilgileri de bilmenizde fayda var.

**1 saniye 1000 milisaniye (ms)

**1 milisaniye=1000 mikrosaniye(us)

Bizim klasik delay komutunda kullandığımız değerler milisaniye değeri. Mesela delay(5000) dediğimiz zaman 5 saniye diyoruz. Burada yer alan kodlar içerisinde delayMicroseconds(1000) 1000 mikrosaniye yani 1 milisaniye kadar bekletme yapmamıza yarıyor. Bu kod parçacığını eğer kullanmazsak sensör doğru ölçümler vermiyor.

Ayrıca pulse in echo pinini takip ediyor ve HIGH olduğu an kronemetre başlatıp sure değişkenine atıyor. Bu şekilde sesin dalgasının ne kadar sürede gidip geldiğini takip edebiliyoruz. Ayrıca kod içerisinde yer alan 29.1 değeri sesin şu an benim odamda bulunan sıcaklıktaki yayılma hızı. Genel olarak 29.1 değeri kullanılır ama  küçük bir hesaplama ile kendi oda sıcaklığına göre değeri ayarlayabilirsiniz.




Park sensörü arduino kodları:

int ledk = 11; // Kırmızı led
int ledm = 10;//mavi led
int ledy = 9;//yeşil led
int buzzer = 8; //buzzer
int trigger = 3;
int echo_pin = 2;
int mesafe;
int sure;
void setup() {
  pinMode(ledm, OUTPUT);
  pinMode(ledk, OUTPUT);
  pinMode(ledy, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(trigger, OUTPUT);
  pinMode(echo_pin, INPUT);
  Serial.begin(9600);
}
void loop() {
digitalWrite(trigger,HIGH);
delayMicroseconds(1000);//sensörün çalışması için burada kısa bir süre bekletmemiz gerekiyor.
digitalWrite(trigger,LOW);
sure=pulseIn(echo_pin, HIGH);
//pulse in echo pinini takip ediyor ve HIGH olduğu an kronemetre başlatıp sure değişkenine atıyor.
mesafe=(sure/2)/29.1;//29.1 sesin şu an bulunduğum sıcaklıktaki yayılma hızı.Bunun ayrı bir hesaplama yöntemi var. Genelde 29.1 kullanılır.
Serial.println(mesafe);//
//Yukarıdaki kodlar mesafe sensörünün çalışmasını sağlayan kodlar

if(mesafe<=10)
{
  digitalWrite(ledk,HIGH);
  digitalWrite(buzzer,HIGH);
  delay(50);
  digitalWrite(ledk,LOW);
  digitalWrite(buzzer,LOW);
  delay(250);
  }
  else if(mesafe<=30)
{
  digitalWrite(ledy,HIGH);
  digitalWrite(buzzer,HIGH);
  delay(50);
  digitalWrite(ledy,LOW);
  digitalWrite(buzzer,LOW);
  delay(500);
  }
   else
{
  digitalWrite(ledm,HIGH);
  delay(50);
  digitalWrite(ledm,LOW);
  delay(750);
  }
}
    Yorum Yap

1 yorum: