Arduino İle Mesafe Ölçümü
Your ads will be inserted here by
Easy Plugin for AdSense.
Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.
Arduino ile Mesafe Ölçümü
Arduino ile mesafe ölçümü uygulaması yapımına başlamadan önce kullanılacak malzemeleri tanıyalım.
- Arduino Uno: en çok tercih edilen ve piyasada kolaylıkla bulabileceğiniz Arduino modelidir. Tabi ki diğer Arduino modellerinden herhangi birini de tercih edebilirsiniz.
- HC-SR04: ultrasonik mesafe sensörü olarak HC-SR04 sensörünü kullanacağız. Bu sensör basit anlamda bir adet hoparlör ve bir adet mikrofondan oluşmaktadır. Yaklaşık olarakta 40Mhz’lik frekansta ses dalgası göndermektedir. 2 cm ile 400 cm arasında ölçüm yapabilmektedir.
- Bread board: devre bağlantılarını gerçekleştirmek için devre tahtası kullanılacaktır.
Devre Bağlantılarının Gerçekleştirilmesi
Yukarıda HC-SR04 sensörün şekli görülmektedir. Sensör kartı üzerinde görülen pinlerden Vcc, Arduino Uno kart üzerinde bulunan 5V pin noktasına bağlanacaktır. Yine Gnd yazılı olan pin ise Arduino üzerinde bulunan Gnd lerden herhangi birine bağlanabilir. Bu şekilde besleme gerilimi için gerekli bağlantılar sağlanmış olur. Sensör üzerinde bulunan Trig adlı pin ses gönderme işlemi için kullanılır ve Arduino Üzerinde 3 nolu pine bağlayabiliriz. Echo pini ise ses alma bağlantısı için kullanılan pindir. Bu pini de Arduino Uno üzerindeki 4. Pine bağlayabiliriz.(Program üzerinde tanımlamak koşuluyla digital pinlerden herhangi birine bağlantı gerçekleştirebilirsiniz.)
Devrenin çalışması
Devrenin çalışması, ultrasonik sensör üzerindeki hoparlör ile insan kulağının algılayamadığı ses dalgaları gönderilmektedir. Bu gönderilen ses dalgaları karşı tarafta bir cisme çarpıp geri geldiğinde mikrofon tarafından algılanmaktadır. Mesafenin ölçümü ise hoparlörden çıkan ses dalgasının çıktığı andan itibaren karşısında bulunan cisme çarpıp geri yansıması arasında geçen süreyle orantı kurularak hesaplanmaktadır. Yani hoparlörden sinyalin çıkması ve mikrofonun sinyali algılaması arasında ki süre bize ultrasonik sensörün karşısında bulunan cismin uzaklığını vermektedir. Yalnız burada dikkat edilecek bir durum vardır. Sinyalin, mesafesi ölçülecek cisme kadar gitmesi T sürede oluyorsa, gidip gelmesi 2T sürede olacaktır. Dolayısıyla sinyalin gidip gelme süresini 2’ye bölmemiz gerekecektir.
Şimdi bu durumu nasıl formülize edeceğimize gelelim;
Ses dalgasının havada yayılma hızı saniyede 343 metredir. Buradan hareketle basit bir orantı üzerinden işlemi gerçekleştirebiliriz.
cm cinsinden yazacak olursak: 34300cm/s
farklı bir ifadeyle şu şekilde de yazabiliriz:
1000000 mikro saniyede 34300 cm yol alır.
Bizim Arduino ile yapacağımız ölçümde T süresi, cisme çarpıp gelme süresi olduğundan T/2 olarak kullanılacaktır. Şimdi orantımıza geçebiliriz.
T bizim ultrasonik sensör ile yaptığımız süre ölçümü ve herhangi bir değişkene kaydedebiliriz. Bu kaydettiğimiz değeri 0,01715 ile çarptığımızda sonuç olarak cm cinsinden mesafemizi bulmuş oluruz. İşlemi biraz daha kolaylaştırmak için 1/0,01715 sayısı 58,3 sayısına eşittir. Dolayısıyla 1/58,3 sayısı da 0,01715 sayısına eşittir ve T süremizi 0,01715 sayısı ile çarpmak yerine 58,3 sayısına bölebiliriz. İşlem sonucu aynı olacaktır.
Arduino ile Program Kodlarının yazılması
#define trig 3 // Trig Pini (Ses gönderme)
#define echo 4 // Echo Pini (Ses algılama)
Your ads will be inserted here by
Easy Plugin for AdSense.
Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.
float microsaniye_sure, mesafe_cm;//değişkenler tanımlanmaktadır.
void setup() {
Serial.begin (9600); // Seri iletişimi başlatmak için tanımlama yapılması
pinMode(trig, OUTPUT); //Ses gönderme pini çıkış olarak ayarlanır.
pinMode(echo, INPUT); //Ses algılama pini giriş olarak ayarlanır.
}
void loop() {
digitalWrite(trig, LOW); // Hoparlör 2ms beklemeye alınır.
delayMicroseconds(2);
digitalWrite(trig, HIGH); // Hoparlör ile 10ms ses dalgası gönderilir.
delayMicroseconds(10);
digitalWrite(trig, LOW); // Hoparlör tekrar durdurulur.
microsaniye_sure = pulseIn(echo, HIGH); // Mikrofon dinlenir, yansıma süresini microsaniye_sure değişkenine kaydedilir.
mesafe_cm = microsaniye_sure/58.3; //ölçülen süre 58,3’e bölünerek cm cinsinden mesafe bilgisi alınmış ve mesafe_cm değişkenine kaydedilir.
Serial.print(mesafe_cm); //Mesafe değeri serial monitöre yazdırılır.
Serial.println(“cm“); // yazdırılan mesafe değerinin yanına “cm” ifadesi yazdırılır.
delay(50); //50ms bekleme yapılır.
}
İi günler size bir sorum olacaktı. Şimdi ben mesafeyi sensör ile ölçtükten sonra mesafe bilgisine göre dc motoru hizlandirip yavaslatmak istiyorum. Onu nasıl yapabilirim. Değişen gerilime göre motor yavaslanip hizlanacak. Yani sadece sizin yazdığınız üstteki kodda nasıl bir ekleme yaparak arduino dan çıkış alıp Dc motorun olduğu devreye ekleyebilirim
merhaba,
motor hız kontrolü PWM sinyali ile yapılmaktadır. pwm 0-255 arasında değişen değerlere göre motorun hızını ayarlamaktadır. ölçümünü yaptığınız mesafe aralığını 0 ile 255 aralığına dönüştürmeniz gerekiyor. yani mesafe._cm değişkeni içerisinde olan mesafe bilgisini “map” komutuyla dönüştürebilirsiniz. bu dönüşümü yaptıktan sonra bu değeri motorlara aktarmak kalıyor. bunu da analogWrite(pin, deger) komutuyla aktarabilirsiniz.
merhabalar arduino pro miniyle HC-sr04 ultrasonıc mesafe sensörünü kullanarak mesafe ölçer yaptım. gayet sağlıklı çalışıyor. yalnız sensörün ölçtüğü veriyi 4-20 mA’e cevirmek istiyorum bunu pwm çıkışlarını kullanarak mı yapmalıyım. Ya da nasıl yapabilirim.
merhabalar
sensörün ölçtüğü veriyi analog çıkışlardan 0-5 volt aralığında çıkış olarak alın daha sonra op-amp devresi kullanarak 0-5 voltu 4-20mA’e çevirin, başka şekilde olması mümkün değil bildiğim kadarıyla… op-amp devresi için de netten araştırma yaparak bulabilirsiniz..
mesafayi hep 0 gösteriyor.Ne yapmam gerek