Bu yazımızda arduino ile HC-SR04 ultrasonik sensörünü kullanmayı ve mesafe ölçmeyi öğreneceğiz. Ultrasonik sensörler ultrasonik ses dalgaları yayan ve bunların engellere çarpıp geri dönmesine kadarki geçen süreyi hesaplayıp aradaki mesafeyi bulan sensörlerdir.
Yaydığı ses dalgalarının tüm katı ve sıvı cisimlerden yayılması SR04 sensörünün mesafe ölçümü, cisim agılama gibi birçok uygulamada kullanılmasını sağlamaktadır. İnsan kulağı teoride 20 Hz ile 20000 Hz arasındaki frekans aralığını işitir. Ultrasonik ses dalgaları ise 20 kHz ile 500kHz frekansları arasındadır. Frekansların yüksek olması yayılan sinyallerin enerjilerinin yüksek olmasını ve yüzeylerden daha iyi yansımasını sağlamak içindir. Ayrıca bu sayede uygulamalarda insanları rahatsız etmeyecek şekilde kullanılabilir. SR04 sensörünün çalışma frekansı ise 40Khz dir. Yani 40 Khz frekans değerinde ses dalgası üretir.
SR04 sensörü üzerinde 4 pin mevcuttur. Bunlar sırasıyla VCC, Trig, Ecgo, GND . Trig üretilen sinyalin sensöre uygulanması, Echo yansıyan sinyalin işlemciye iletilmesi için kullanılır. Sinyallerin sensör tarafından iletilmesi ve algılanması transduser tarafından sağlanır. Trig bacağına sensör datasheetine göre 10 us lojik 1 uygulanır. Bu sinyal sensöre uygulandığında sensör 40 Khz lik sinyali üretir ve gönderir.
Ses sinyallerinin boşlukta yayılma hızı 340 m/sn' dir. Sensörden ilk olarak bir ses dalgası gönderilir, yansıyan ses dalgası transducer tarafından algılanır ve tekrar gönderilir ancak gönderilmeden önce biraz beklenir. Çünkü bir önceki ses dalgasının cisim yada ortam tarafından tam anlamıyla emilmiş olması gerekir. Yansıyan sinyal echo bacağından okunur ve bu sayede mesafe ölçümü yapılabilir. Önemli olan nokta echo pininin ne kadar süre lojik 1 de kaldığıdır. Ölçülmesi gereken değer budur. Çünkü mesafenin bulunması için öncelikle zamanın hesaplanması gerekir. Ses dalgası 340 m/sn de hareket ediyorsa ve biz ölçüm aralığını 1 us de yapıyorsak 34000 cm /1000000 = 1/29 yan, zaman/29 olması gerekir. Ancak sinyalin gidiş ve gelişi göz ard edilmemelidir. Yani zaman/(29*2) =zaman/58 olur. Kod içerisinde de hesap bu şekilde yapılmıştır.
Çalışma videosu : http://www.youtube.com/watch?v=sc-hUGIu2tA
Uygulama kodu:
//ultrasonik sensör ile mesafe ölçümü
#include <LiquidCrystal.h> //okunan mesafe değerinin 16*2 lcd ekrana basıması için
//lcd ekran ktürüphanesi çağrıldı
#define backlight A3 // LCD arka aydınlatmasını kontrol etmek için A3 pini tanımlanıyor
#define trigPin 13 //sensör üzerindeki pinlerin arduino üzerine takıldığı pin numaraları
#define echoPin 12
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
void setup() {
pinMode (backlight, OUTPUT);
lcd.begin(16, 2); //lcd tipi
Serial.begin (9600); //seri haberleşme hızı=baud rate
pinMode(trigPin, OUTPUT); //sinyalin gönderildiği pin
pinMode(echoPin, INPUT); //yansıyan sinyalin alındığı pin
digitalWrite (backlight,HIGH);
lcd.print("golmuhendis.blog");
lcd.setCursor(0,1); //satır,sütün
lcd.print("spot.com.tr");
delay(3000);
}
void loop() {
lcd.clear();
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //SR04 sensörü için 10 us lik lojik 1 sinyali trigger a gönderilir.
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
Serial.println(duration);
distance = (duration/2) / 29.; //29*2=58
//340 m/sn yani 34000cm/1000000us = 1/29
Serial.print(distance);
Serial.println(" cm");
lcd.print ("Mesafe: ");
lcd.print(distance);
lcd.print(" cm");
lcd.setCursor(1,1);
lcd.print("golmuhendis");
delay(500); //500 ms de 1 ölçüm yapılır
}
Yaydığı ses dalgalarının tüm katı ve sıvı cisimlerden yayılması SR04 sensörünün mesafe ölçümü, cisim agılama gibi birçok uygulamada kullanılmasını sağlamaktadır. İnsan kulağı teoride 20 Hz ile 20000 Hz arasındaki frekans aralığını işitir. Ultrasonik ses dalgaları ise 20 kHz ile 500kHz frekansları arasındadır. Frekansların yüksek olması yayılan sinyallerin enerjilerinin yüksek olmasını ve yüzeylerden daha iyi yansımasını sağlamak içindir. Ayrıca bu sayede uygulamalarda insanları rahatsız etmeyecek şekilde kullanılabilir. SR04 sensörünün çalışma frekansı ise 40Khz dir. Yani 40 Khz frekans değerinde ses dalgası üretir.
SR04 sensörü üzerinde 4 pin mevcuttur. Bunlar sırasıyla VCC, Trig, Ecgo, GND . Trig üretilen sinyalin sensöre uygulanması, Echo yansıyan sinyalin işlemciye iletilmesi için kullanılır. Sinyallerin sensör tarafından iletilmesi ve algılanması transduser tarafından sağlanır. Trig bacağına sensör datasheetine göre 10 us lojik 1 uygulanır. Bu sinyal sensöre uygulandığında sensör 40 Khz lik sinyali üretir ve gönderir.
Ses sinyallerinin boşlukta yayılma hızı 340 m/sn' dir. Sensörden ilk olarak bir ses dalgası gönderilir, yansıyan ses dalgası transducer tarafından algılanır ve tekrar gönderilir ancak gönderilmeden önce biraz beklenir. Çünkü bir önceki ses dalgasının cisim yada ortam tarafından tam anlamıyla emilmiş olması gerekir. Yansıyan sinyal echo bacağından okunur ve bu sayede mesafe ölçümü yapılabilir. Önemli olan nokta echo pininin ne kadar süre lojik 1 de kaldığıdır. Ölçülmesi gereken değer budur. Çünkü mesafenin bulunması için öncelikle zamanın hesaplanması gerekir. Ses dalgası 340 m/sn de hareket ediyorsa ve biz ölçüm aralığını 1 us de yapıyorsak 34000 cm /1000000 = 1/29 yan, zaman/29 olması gerekir. Ancak sinyalin gidiş ve gelişi göz ard edilmemelidir. Yani zaman/(29*2) =zaman/58 olur. Kod içerisinde de hesap bu şekilde yapılmıştır.
Çalışma videosu : http://www.youtube.com/watch?v=sc-hUGIu2tA
Uygulama kodu:
//ultrasonik sensör ile mesafe ölçümü
#include <LiquidCrystal.h> //okunan mesafe değerinin 16*2 lcd ekrana basıması için
//lcd ekran ktürüphanesi çağrıldı
#define backlight A3 // LCD arka aydınlatmasını kontrol etmek için A3 pini tanımlanıyor
#define trigPin 13 //sensör üzerindeki pinlerin arduino üzerine takıldığı pin numaraları
#define echoPin 12
LiquidCrystal lcd(9, 8, 7, 6, 5, 4);
void setup() {
pinMode (backlight, OUTPUT);
lcd.begin(16, 2); //lcd tipi
Serial.begin (9600); //seri haberleşme hızı=baud rate
pinMode(trigPin, OUTPUT); //sinyalin gönderildiği pin
pinMode(echoPin, INPUT); //yansıyan sinyalin alındığı pin
digitalWrite (backlight,HIGH);
lcd.print("golmuhendis.blog");
lcd.setCursor(0,1); //satır,sütün
lcd.print("spot.com.tr");
delay(3000);
}
void loop() {
lcd.clear();
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); //SR04 sensörü için 10 us lik lojik 1 sinyali trigger a gönderilir.
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
Serial.println(duration);
distance = (duration/2) / 29.; //29*2=58
//340 m/sn yani 34000cm/1000000us = 1/29
Serial.print(distance);
Serial.println(" cm");
lcd.print ("Mesafe: ");
lcd.print(distance);
lcd.print(" cm");
lcd.setCursor(1,1);
lcd.print("golmuhendis");
delay(500); //500 ms de 1 ölçüm yapılır
}
Merhaba biz 2 arkadaş üniversite bitirme ödevi için Ardunio ile mesafe ölcüm sensörü (Park sensörü) aldık. Bağlantı şemasını ve kodlarınıda atabilir misiniz rica etsek? Şimdiden teşekkürler.
YanıtlaSililetişim : https://www.facebook.com/EMIRAKSOY7
YanıtlaSilKodlar yazının içeriisinde var zaten. Biraz incelerseniz göreceksiniz. Bağlanıyı anlatmışım orada zaten.
SilLcd bağlantısın gösteren bir şema varmı acaba?
YanıtlaSilmerhaba ben mesafe ölçerle ilgili proje aldım. internette baya bi araştırma yaptım ama kodların nasıl çalıştırıldığını yada nerde çalıştırılacağını bilmiyom yardımcı olabilir misiniz ?
YanıtlaSilarduino ide programı yüklümü bilgisayarınızda
SilMerhaba,
SilÖdevin sadece konusu beli sanırım. Proje gayet açık. İde olmadan arduinoyu nasıl programlayacaksın. Öncelikle projeyi yapmak yerine arduino hakkında bilgi öğren.
Sorduğun sorulara göre hiçbir fikre sahip değilsin bu konuda. Sana tavsiyem projeden önce yapacağın işin nasıl olacağını ve neleri bilmen gerektiğini analiz etmen ve onları öğrenmendir.
Sorularına cevap verecek olursam:
merhaba ben mesafe ölçerle ilgili proje aldım. internette baya bi araştırma yaptım ama kodların nasıl çalıştırıldığını yada nerde çalıştırılacağını bilmiyom yardımcı olabilir misiniz ?
Kodları arduino ide de çalıştıracaksın. Buradan bilgisayarına uygun olan ideyi indirip kullanabilirsin. http://www.arduino.cc/en/Main/Software
benim ödevimi acil yapmam lazım hangi malzemeleri kullanacam bana acil yardım edebilir misiniz ?
Ödevin acil olabilir ona göre önceden hazırlık yapman gerekir. Önce birşeyler araştırmak lazım, ödevleri yapabilmek için. Kullanacağın malzemeler çok açık projede: arduino uno, 16*2 lcd, hcsr04
Sana tavsiyem yapacağın işler için uzun soluklu araştırma yapman.
Kolay gelsin.
Bu yorum yazar tarafından silindi.
YanıtlaSilbenim ödevimi acil yapmam lazım hangi malzemeleri kullanacam bana acil yardım edebilir misiniz ?
YanıtlaSililetişim: behempa@gmail.com
Merhaba benim tezim nabız ölçer ile ilgili. Arduino da kodları nasıl yazacağımı bilmiyorum. Bir de bluetooth modülü ile androide aktarmam gerekiyor. Yardımcı olabilir misiniz?
YanıtlaSilbaharkaramanoglu@hotmail.com
Merhaba,
SilAndroidle ilgili paylaşımlarımı incelemeniz işinizi görecektir.
http://www.gokhangol.com/arduino/android-uygulama-gelistirme-dersleri-android-bluetooth-servo-kontrol/
Sensör olarak ne kullanıyorsunuz nasıl bi işlem yapacaksınız ?
Bahar hanım nabız ölçer ile ilgili çalışmalar yaptınızmı acaba ? Benimde elimde bir adet nabız sensörü var fakat hiç üzerine çalışmadım elinizde dökümanlar varsa paylaşabilirmisiniz ?
Silarifnaldoven@hotmail.com
merhaba gökhan bey.ben tez olarak,ultrasonik sensör ile gaz kontrolü aldım.sizce arduino ile yapabilir miyim.neler gerektiği konusunda yardımcı olur musunuz?
YanıtlaSilMerhaba,
SilKonuyu biraz daha açmanızı rica edecegim. Tam olarak yapmak istediğiniz nedir ?
Ayrıca dediginiz işlemi arduino ile rahatlıkla yapabilirsiniz. Gaz kontrolü kısmını biraz daha ararsanız malzemeler konusunda yardimci olurum.
Not: Artık paylaşımlarımı www.gokhangol.com sitesinde yapmaktayım.
merhaba gökhan bey.ben tez olarak,ultrasonik sensör ile gaz kontrolü aldım.sizce arduino ile yapabilir miyim.neler gerektiği konusunda yardımcı olur musunuz?
YanıtlaSilBu yorum yazar tarafından silindi.
YanıtlaSil