close
proje yenilik

Bu projemizde dinamik mesafe sensörü terimine değineceğiz. Mesafe sensörü, çok derin bir mevzudur. Konu uzun mevzu derin… Bu iğrenç espriden sonra halen kapatmadıysanız devam edelim o halde. Biz mesafe sensörüne farklı bir bakış açısı olarak dinamik mesafe sensörü şeklinde bir tanım verdik kafamızda. Yabancı kaynaklarda hc-sro4 su seviyesi ölçümünde bile kullanılıyor. Gayet hoşuma giden bir sensördür. İyi eğlenceler.

Daha önceki projelerimizde lm35, lcd (I2C) ve hc-sr04 sensörleriyle alakalı internette de bolca bulabileceğiniz klasik tanıtım tadında projeler paylaşmıştık.  Bizim amacımız internette bolca bulacağınız tanıtım tadında (çerezlik) projelerden ziyade sizi yoracak araştırmaya sevk edecek projeler yapmak. Bu projede de standart mesafe ölçer projelerinden kat kat daha hassas ve doğru sonuçlar veren dinamik mesafe sensörü yapacağız birlikte.

Siz de çok denk gelmişsinizdir. Hc-sr04’den aldığımız analog bilgiyi bir takım formüllerden geçirip sonunda 29.1 ve 2 ile bölüyoruz. Öncelikle 2 ile bölüyoruz çünkü ses gidip geliyor yani mesafe “x” ise “2x” yol kat ediyor. Bu yüzden 2 ile bölüyoruz.



Peki nedir bu 29.1 mevzusu diyecek olursanız Hc-Sr04 Nedir? yazımızda detaylı olarak ortamdaki ses hızının sıcaklığa bağlı değişimi sonucu belirli birkaç formül neticesinde türetilmiş olan bir değer olduğunu açıkladık. Bu konuda bilginiz yoksa önce makalemizi okuyup sonra dinamik mesafe sensörü projemize devam etmeniz daha uygun olur.

 Tabi yeni başlayan biriyseniz sensörlerin ne olduğunu anlattığımız Nedir? kısmından sesnsörlerle alakalı bilgiler alabilir ve çalışma mantıkları için de Arduino derslerimizden ilgili sensörlerin kodları ve devre şemalarına bakabilirsiniz.

Projemize geçecek olursak:

Lm35 sıcaklık sensörü ile arduinomuzun analog pinlerinin birinden gelen voltaj değerine göre lm35 nedir?  yazımızda açıkladığımız formüller ve dönüşümler neticesinde bir sıcaklık değeri alıyoruz. Aldığımız bu sıcaklık değeriyle ortamın sıcaklığının ses hızını etkilemesi sonucu farklı ortamlarda mesafeyi farklı ölçer diye düşündük. Yani diyelim ki devrenizdeki mesafe sensörünün önüne koyacağınız engel sabit olsun. Sonra bu sensörü bi oda sıcaklığında birde +4 derecede denemek istiyosunuz. İki ortamda da sensörün önüne koyduğunuz engelin mesafesini aynı ölçmesi lazım. Fakat mesafelerin aynı olmasına karşı sensörümüz mesafeleri farklı gösterecektir. Çünkü ses dalgalarının iletim hızları sıcaklık değerine göre değiştiği için mesafeler de değişecektir. Yani buna hc-sr04 mesafe sensörünün bugı diyebiliriz. Sonuç olarak dinamik mesafe sensörü fifkrimiz ortaya çıkıyor.



Bence hc-sr04 ultrasonik mesafe sensörüne sıcaklık ölçecek bir sensör  gerkiyor.

Biz de dedik ki madem böyle bir sensör yok. Yani ortam sıcaklığına göre dinamik bir şekilde mesafe ölçebilecek bir sensör yapmamışlar biz yapalım 🙂 ( sonra da satarız belki 🙂 ) Daha sonra ortamdaki sıcaklık değerini ölçtük ve  ölçtüğümüz sıcaklık değerini mesafe ölçümü için kullandığımız formülde ilgili yere koyduk. Böylelikle kullanmış olduğumuz lm35 sıcaklık sensörünün ölçebileceği tüm sıcaklıklarda bizim mesafe sensörümüz doğru sonucu vermiş oldu.

Malzemelerimiz:

  • 1 x Arduino Uno
  • 1 x LM35
  • 1 x Lcd (I2C)
  • 1 x Hc-SR04
  • 1 x Breadboard
  •  Çokça Jumper
  • 1 x 10 k – Potansiyometre (I2C veri yolu bağlantısının nasıl olduğunu göstermek için kullandım normalde gerek yok )
Program Kodları
1#include <LiquidCrystal_I2C.h>    // lcd kütüphanemizi ekledik
2LiquidCrystal_I2C lcd(0x27,16,2); // lcd fonksiyonumuzu tanımladık
3long sure,uzaklik;                // kullanacağımız sabitleri belirledik.
4int trigPin = 3;
5int echoPin = 2;
6float sicaklik,deger,x,y;
7void setup () {
8  Serial.begin(9600);            // seri haberleşmeyi başlattık. pek gerekli değil, siz yazmasanız da olur.
9  lcd.begin();                   // lcd’mizi başlatıyoruz
10  lcd.clear();                   // lcd ekranını temizliyoruz lcdnin kendi hafızası var o yüzden açılışta bir kere temizlemek her zaman iyidir.
11lcd.backlight();               // lcd arka plan aydınlatmasını açtık
12  pinMode(trigPin,OUTPUT);       // dinamik mesafe sensörü nün pinlerini konfigüre ettik
13  pinMode (echoPin, INPUT);
14}
15geçersiz döngü () {
16 /* sıcaklık konfigüre  */
17  deger=analogRead(A1);          // lm35’imizin çıkışını hangi analog pine bağladıysak ordan değer okuyoruz
18  deger=(deger/1023.0)*5000.0;   // okuduğumuz değeri mV’dan sıcaklık değerine çeviriyoruz
19  sicaklik=deger/10.0;
20   x=331.0*sqrt(1+sicaklik/273)*100.0; // burda sesin sıcaklığa bağlı hız fonksiyonunu tanımlıyoruz
21   y=1/(x/1000000.0);                          // sensör cm/us cinsinden değer verdiği için ses fonksiyonumuzu                                                                                                                                                                    // santim bölü mikro saniyeye çeviriyoruz
22   /*mesafe konfügüre*/
23  digitalWrite(trigPin, LOW);                           // hc-rs04 sensörümüzün
24  delayMicroseconds(5);                                       //çalışmasını konfigüre ediyoruz
25  digitalWrite (trigPin, YÜKSEK);
26delayMicroseconds (10);
27  digitalWrite (trigPin, DÜŞÜK);
28  = PulseIn (echoPin, YÜKSEK) emin olun;
29  uzaklik=(sure/2)/y;                 // y burda santim bölü mikrosaniye cinsinden sesin havadaki hızı
30  Serial.println(uzaklik);          // zaten projenin amacı da tam olarak bu kod
31  /*sonuçları görüntüleme*/
32  lcd.setCursor(0,0);                // değerleri lcd ekrana yazdırıyoruz
33lcd.print(“mesafe:”);
34  lcd.setCursor(7,0);
35  lcd.print (uzaklik);
36lcd.setCursor(0,1);
37  lcd.print ( “temperature:”);
38  lcd.setCursor(9,1);
39  lcd.print (temperature);
40Gecikme (500);
41lcd.clear ();
42}

dinamik mesafe sensörü kod kısmında son iki satırın sebebi ?

Lcd’nin kendi hafızası olduğu için son ekran görüntüsünü hafızada tutuyor. Yani mesafemiz 18 iken 18 gösteriyor bunda sorun yok. Ama 18’den atıyorum 3’e düşünce 38 olarak gösterme durumları olabiliyor. Bunun önüne geçmek için “lcd.clear()” fonksiyonunu kullanabiliyoruz.

Delay atmamızın sebebi ise delay da belirtilen süre kadar veri kalıyor sonra silinip tekrar basılıyor yani görebileceğiniz kadar ekranın lcd üzerinde kalması.

Devre Şeması:

dinamik-mesafe-sensoru
dinamik-mesafe-sensoru
Etiketler : ArduinoArduino ile hassas mesafe ölçümüArduino projeleribilgi edinmedinamik mesafe sensörühc-sr04 kullanımı

Yorum Yap