Arduino
OKUDUĞUNUZ KONU
HC-SR04 Ultrasonik Sensör Algoritması
0

HC-SR04 Ultrasonik Sensör Algoritması

Yazar : Murat Duran7 Temmuz 2015

Arduino son yıllarda hızlı bir çıkış yakalayarak popüler bir geliştirme kartı oldu.Bunun en büyük nedenlerinden birisi modül ve sensör desteğinin inanılmaz çok olması.Hemen hemen bütün sensörlerle tam uyumlu olarak çalışabilmektedir.Gerek kütüphane desteği gerekse bu iş ile uğraşan yazılımcıların open source kültüründen gelmesi arduino yu eşsiz kılan şeydir.

Bu uygulamamızda arduino sersörlerinden HC-SR04 kodlu ultrasonik sensörü inceleyeceğiz.Bu sensör ses sinyallerini kullanarak mesafe ölçebilmektedir.

Malzeme Listesi

1- Arduino (Bu projede UNO kullanılmış)
2- HC-SR04 Ultrasonik Sensör
3- Jumper Kablo
4- Breadboard (İsteğe bağlı)

Ultrasonik sensörlerin çalışma prensipleri ise genel olarak şu şekilde;

1- 40kHz frekansta bir ses sinyali özel bir hoparlör yardımıyla ortama gönderiliyor.
2- Gönderilen sinyalin yankısı özel bir mikrofon yardımıyla alınıyor.
3- Gönderilen sinyal ile gelen sinyal arasındaki zaman farkı hesaplanıyor
4- Ölçülen zaman farkı sesin o ortamdaki hızı ile çarpıldığında ise mesafe bulunuyor.

İnsan kulağı 20Hz ile 20kHz arası frekanlardaki ses dalgalarını duyabilme yetisine sahip olduğu için bu sensörden çıkan sesleri duyamaz, hatta yaş ilerledikçe bu eşik 20kHz den aşağı düşer bu sebepten dolayı ortamda bizi rahatsız edici bir gürültü olmaz. Aşağıda bu olayı görselleştiren çizimi incelerseniz, olay daha rahat anlaşılacaktır. Aslında bu olayın su yüzeyindeki dalgalardan bir farkı yok.

Su yüzeyinde bir dalga oluşturduğumuzda, o dalga sönümlenene kadar yol alır. Eğer herhangi bir engele çarparsa yön değiştirir. Burada ise su molekülleri yerine hava molekülleri ses dalgalarını iletmekte.

Aşağıdaki kodu incelerseniz ECHO , TRİG nasıl programlanmış az çok anlaşılır.

#define trigPin 9
#define echoPin 8

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long sure, mesafe;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH);
mesafe = sure/58.2;
if (mesafe > 200 || mesafe < 0){
Serial.println("Menzil Disi");
}
else {
Serial.print(mesafe);
Serial.println(" cm");
}
delay(500);
}
SİZCE NASIL OLMUŞ?
Beğendim
67%
İlginç
0%
Eh İşte
11%
Anlamadım
0%
Kötü
0%
Berbat
22%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
YORUMLAR

YORUM YAP