Arduino - HC-SR04 İle Mesafe Ölçümü - Elektrik Elektronik Projeleri

Post Top Ad

1 Aralık 2014 Pazartesi

Arduino - HC-SR04 İle Mesafe Ölçümü

Bu projemizde HC-SR04 ultrasonik ses sensörü ile mesafe ölçme uygulaması yapacağız. Bu uygulama ile HC-SR04 sensörünü de tanımış olacağız.
Projenin Devresi:

Projenin Açık Şema Çizimi:
HC-SR04:
Ultrasonik ses dalgaları üreten ve algılayan bir sensördür. Sensörün çalışması şu şekildedir: Öncelikle sensör ultrasonik ses dalgaları üretir ve ortama yayar. Yayılan ultrasonik dalgalar bir engele çarpıp tekrar sensöre döner. Sensör de bu geri gelen dalgaları algılar ve devre için değerlendirir.

Sensör 40 KHz frekansında ultrasonik ses dalgaları üretmektedir. 5V gerilimle çalışmakta ve 15mA akım çekmektedir. Sensör 2cm’den 400cm’ye kadar 3mm hassasiyetle ölçüm yapmaktadır. Ayrıca 15o görme açısına sahiptir. Sensöre trig pininden 10us’lik TTL darbesi uygulayarak ultrasonik sinyal üretmektedir.

Devremizde, öncelikle sensörümüzden ultrasonik sinyaller yaymalıyız. Bu sinyalleri yukarıda bahsettiğimiz gibi trig pinine uydulayacağımız darbe sinyali ile elde ederiz. Daha sonra sensörümüz engele çarpıp gelen sinyali algılayacak ve echo pininden bir darbe sinyali devremize gönderecektir. Biz bu echo pininden gelen sinyalin lojik 1 olma süresini bulmalıyız. Bunu arduinomuzu programlarken kullanacağımız pulseIn() fonksiyonu ile elde edeceğiz. Bu bulduğumuz süre sinyalin gidip engele çarpıp geri dönme süreleri toplamıdır. Engel ile sensör arasındaki mesafeyi bu süre üzerinden hesaplayacağız. Süremiz sinyalin gidiş geliş toplam süresi olduğundan, önce süreyi ikiye bölmeliyiz.
Daha sonra ise;
formülünü kullanacağız. Burada v sesin yayılma hızıdır. Sesin havada, deniz seviyesinde ve 21 °C sıcaklıkta yayılma hızı 343,2 m/s’dir. Bu hızı cm/us biriminde ifade edecek olursak:
Sonuç olarak mesafe hesaplayacak formülümüz:
olur.

Projenin Kaynak Kodu:
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int trigPin=2;
int echoPin=3;
float sure, uzaklik;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  lcd.begin(16,2);
}

void loop() {
  lcd.clear();
  lcd.setCursor(0,0);
 
  digitalWrite(trigPin, HIGH);
     delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  sure = pulseIn(echoPin, HIGH);
  uzaklik = (sure*0.01716);
 
  lcd.print("Uzaklik= ");
  lcd.print(uzaklik);
  lcd.print("cm");
  delay(400);  

}



Hiç yorum yok:

Yorum Gönder

Post Top Ad