İnsanlar, frekansı 16 Hz ile 20 kHz arasında olan sesleri duyabilmektedir. Ultrasonik ses, insanın
işitme sınırından daha yüksek frekanslardaki ses dalgalarıdır. Görselde ses frekans aralıkları görülmektedir.

Görseldeki HC-SR04 ultrasonik sensör ve pin yapısı görülmektedir. HC-SR04 ultrasonik sensör üzerinde alıcı ve verici olmak üzere iki yüzey bulunur. Verici yüzeyden 15 derece açıyla ortama 40 kHz frekansta ultrasonik ses dalgası salınır. Alıcı, iletilen darbeleri dinler. Yayılan ses dalgası bu alanda bulunan bir cisme çarptığında ses dalgası cismin yüzeyinden sensöre geri yansır.
Yansıyan dalganın giriş yüzeyine gelene kadar katettiği mesafenin belirlenebilmesi için genişliği
kullanılabilen bir çıkış darbesi üretilir. Üretilen bu dalganın süresi ölçülerek hız formülü yardımıyla cismin uzaklığı hesaplanır. Sensör, 2 cm ile 400 cm arasındaki uzaklıkları 3 mm hassasiyetle
ölçebilmektedir

VCC: 5 V besleme.

Trig: Ultrasonik ses darbelerini tetiklemek için kullanılır.

Echo: Yansıyan sinyal alındığında darbe üreten pindir. Darbenin uzunluğu, iletilen sinyalin algılanması içingeçen süreyle orantılıdır.

1GND: Topraklama pini.

Trig pinine en az 10 µS (10 mikrosaniye) süreli bir darbe uygulandığında sensör, 40 kHz’de sekiz
darbelik bir ses kalıbını ortama gönderir. Bu sekiz darbeli model, alıcının iletilen modeli ortamdaki ultrasonik gürültüden ayırt etmesini sağlar. Bu sinyal gönderildikten sonra Echo pini lojik 1
konumuna geçer ve gönderilen sinyalin dönmesini bekler. Eğer ses 38 milisaniye (sensörün
menzil süresi) içinde geri dönmezse engel yoktur ve işlem tekrar eder.

Darbeler geri yansıtılırsa sinyal alınır alınmaz Echo pini lojik 0 olur. Geçen süreye bağlı olarak
Echo pini tarafından genişliği 150 µs ile 25 ms arasında değişen bir darbe üretilir

Echo pinin lojik 1 seviyesinde kalma süresi ses dalgasının engele çarpıp geri dönme süresidir.
“Yol= hız x zaman” formülünde bu süre kullanılarak mesafe hesaplanır. Sesin hızı ortamdaki
nem ve sıcaklığa göre değişmektedir. 20 °C’de sesin yayılma hızı 344 m/s’dir. DHT22 gibi bir
sensör ilave edilerek ve ses hızı m/s = 331.4 + (0.606 * sıcaklık) + (0.0124 * nem) formülü programda kullanılarak ölçüm doğruluğu artırılabilir. Mesafe, süre, ortalama süre vb. değerleri veren
NewPing.h kütüphanesi HC-SR04 uygulamalarında kullanılmaktadır.

Görseldeki uygulamada kullanılan NewPing kütüphanesini kurmak için menülerden “Taslak
 Library Ekle  Kütüphaneleri Yönet” seçeneğinden arama kutusuna “NewPing” yazılır.
“NewPing” kütüphanesi bulunarak kurulur. Daha sonra “Taslak  Library Ekle  NewPing” seçilerek programın başına eklenir. Bu programın bir örneğine menülerden “Dosya  Örnekler 
NewPing  NewPingExample” adımları izlenerek de ulaşılır. NewPing kütüphanesi, trig ve echo
pinlerini aynı pin numarasında sırayla kullanarak birden fazla sensör kullanımında pin sayısından tasarruf eder

#include <NewPing.h>
const byte trig = 12, echo = 11, sinir = 100;

NewPing olcum(trig, echo, sinir); // olcum isimli nesne oluşturuldu.

void setup() {
  Serial.begin(9600);
}

void loop() {
  int uzaklik = olcum.ping_cm(); // cm cinsinden uzaklık.
  Serial.print(uzaklik);
  Serial.println(" cm");
}

const byte trig = 12, echo = 11;
unsigned long sure;
int uzaklik;

void setup() {
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(trig, 0); // Darbe sinyali gönder.
  delayMicroseconds(10);
  digitalWrite(trig, 1);
  delayMicroseconds(10);

  sure = pulseInLong(echo, 1); // Gelen sinyalin HIGH'da kalma süresini mikrosaniye cinsinden oku.
  uzaklik = (0.0343 * sure) / 2; // Mesafeyi hesapla.

  Serial.print(uzaklik);
  Serial.println(" cm");
}

const byte trig = 12, echo = 12;
unsigned long sure;
int uzaklik;

void setup() {
  Serial.begin(9600);
}

void loop() {
  pinMode(trig, OUTPUT); // 12 numaralı pini çıkış yap.
  digitalWrite(trig, 0); // Darbe sinyali gönder.
  delayMicroseconds(10);
  digitalWrite(trig, 1);
  delayMicroseconds(10);
  pinMode(echo, INPUT); // 12 numaralı pini giriş yap.

  sure = pulseInLong(echo, 1); // Gelen sinyalin HIGH'da kalma süresini oku.
  uzaklik = (0.0343 * sure) / 2; // Mesafeyi hesapla.

  Serial.print(uzaklik);
  Serial.println(" cm");
}

#include <NewPing.h>

byte sinir = 200;
NewPing sensor[3] = {   // Üç adet sensor nesnesi oluşturuldu.
  NewPing(2, 2, sinir), // Trig ve echo pinleri aynı pine bağlı.
  NewPing(3, 3, sinir),
  NewPing(4, 4, sinir)
};

void setup() {
  Serial.begin(115200); // Seri ekran  115200 baudrate'e ayarlandı.
}

void loop() {
  for (byte i = 0; i < 3; i++) { // Üç sensörün bilgileri göster.
    delay(50); // En az 29 ms beklenmeli.
    Serial.print(i);
    Serial.print("=");
    Serial.print(sensor[i].ping_cm());
    Serial.print("cm ");
  }
  Serial.println();
}

#include <NewPing.h>
const byte buzzer = 2, trig = 12, echo = 11, sinir = 200;

NewPing olcum(trig, echo, sinir); // olcum isimli nesne oluşturuldu.

void setup() {
  pinMode(buzzer, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  byte uzaklik = olcum.ping_cm(); // cm cinsinden uzaklık. (En fazla 200.)
  Serial.print(uzaklik);
  Serial.println(" cm");

  digitalWrite(buzzer, 1);
  delay(5 * uzaklik); // Mesafe azaldıkça bip sesini hızlandır.
  digitalWrite(buzzer, 0);
  delay(5 * uzaklik);
}

#include <LiquidCrystal.h>
const byte trig = 10, echo = 9;
unsigned long sure;

// LCD modülün Arduino pinlerne bağlantısı.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
  lcd.begin(16, 2); //LCD modülün satır ve sütün sayısı.
  lcd.print("Mesafe");
}

void loop() {
  digitalWrite(trig, 0); // Darbe sinyali gönder.
  delayMicroseconds(10);
  digitalWrite(trig, 1);
  delayMicroseconds(10);
  sure = pulseInLong(echo, 1); // Gelen sinyalin HIGH'da kalma süresini oku.

  lcd.setCursor(0, 1);
  lcd.print((0.0343 * sure) / 2); //Mesafeyi yazdır.
  lcd.setCursor(4, 0);
  lcd.print("cm");
}

#include <LiquidCrystal.h>
const byte trigEchoTekPin = 10; //Trig ve Echo pinleri 10 numaralı pine bağlı.
unsigned long sure;

// LCD modülün Arduino pinlerne bağlantısı.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  lcd.begin(16, 2); //LCD modülün satır ve sütün sayısı.
  lcd.print("Mesafe");
}

void loop() {
  pinMode(trigEchoTekPin, OUTPUT); // 10 numaralı pini çıkış yap.
  digitalWrite(trigEchoTekPin, 0); // Darbe sinyali gönder.
  delayMicroseconds(10);
  digitalWrite(trigEchoTekPin, 1);
  delayMicroseconds(10);
  pinMode(trigEchoTekPin, INPUT); // 10 numaralı pini giriş yap.
  sure = pulseInLong(trigEchoTekPin, 1); // Gelen sinyalin HIGH'da kalma süresini oku.

  lcd.setCursor(0, 1);
  lcd.print((0.0343 * sure) / 2); //Mesafeyi yazdır.
  lcd.setCursor(4, 0);
  lcd.print("cm");
}

Categories:

Tags:

No responses yet

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dersler