Ultrasonik mesafe sensörlerinde genelde 4 ya da 5
pin bulunmaktadır. 4 pini olan sensörlerde Vcc , Trig , Echo , Gnd
pinleri bulunur. 5 pini olan sensörlerde ise ayrıca bir de OUT çıkışı
bulunmaktadır.
Ultrasonik
mesafe sensörlerinin çalışma mantığı ise şu şekildedir:
1. Vcc
+ 5V’a bağlanır ve GND gerekli topraklama pinine bağlantı yapılarak sensör
aktif hale getirilir.
2. Trig
pinine 5V’luk digital HIGH çıkışı verilir ve sensörün kulağımızın duymayacağı
frekansta ses dalgası üretmesini sağlanır.
3. Trig
pinine digital HIGH çıkışı verildiği anda Echo pininden de HIGH çıkışı alınır.
4. Gönderilen
ses dalgası herhangi bir cisme çarparak geri yansır ve yansıyan ses sensör
tarafından algılandığı anda Echo pininden ikinci bir HIGH çıkışı verilir.
HC-SR04 Zaman Çevrimi |
Ultrasonik Mesafe Sensörü Uygulama Alanları (Utrasonic Distance Sensor Application Areas)
Tüm katı ve sıvı cisimler ultrasonik dalgayı cok
iyi oranda yansıtırlar.Hem katı hemde sıvı cisimlerden ultrasonik enerjinin
%99u yansıtılır.Çok ufak oranlardaki enerji miktarı cisim tarafından emilir.
Bundan dolayı sensörü çok çeşitli uygulamarlda sorunsuz kullanabilmemiz
mümkündür.Ayrıca robotlarda da sıkça kullanımlaktadır.
Ultrasonik mesafe sensörleri çarpmalardan koruma
sağlamak için kullanılır. Sensör sürekli yakınlık-uzaklık mesafe kontrol verilerini
aktarır. Endüstriyel kullanıcılar şunlardır:
1. Otomotiv
2. Otomasyon
3. Lojistik
4. Metal İşleme
Ultrasonik mesafe sensörleri malzeme ilmeklerin
eğimi kontrol için kullanılır. Esnek
malzemeden yapılmış ilmeklerin kesintisiz çalışmasını kontrol eden algılama
sistemlerinin bileşenleridir. Endüstriyel kullanıcıları şunlardır:
1. Kağıt ve Baskı
2. Kimyasallar
3. Tekstil
4. Metal İşleme
5. Paketleme
Ultrasonik Mesafe Sensörü Uygulama Alanları |
Ultrasonik mesafe sensörleri engebeli yüzeyleri
tespit etmek ve doğru mesafe verilerini aktarmak gibi benzersiz bir yeteneği
vardır. Sensörler bir kap içindeki bir sıvının seviyesinin algılanması
gerektiği pek çok uygulamada kullanılmaktadır. Endüstriyel kullanıcıları
şunlardır:
1. Yiyecek ve içecek
2. Kimyasal
3. Su arıtma
4. Güç üretimi
Ultrasonik mesafe sensörleri tozlar, tahıl ve
diğer yarı akışkan maddelerin değişen seviyeleri tespit edebilir. Endüstriyel
kullanıcıları şunlardır:
1. Tarım
2. Kimyasallar
3. Paketleme
4. Sıvı Taşıma
Sinyal ile Mesafe Hesaplamaları (Signal and Distance Calculation)
Mikrodenetleyici 4 mhz frekansında
Timer 1 us çözünürlüğünde
Mesafe:
x = V . t (ses hızı 340m/sn)
34000 cm/1000000 us (340000/1000000=1/29) olarak bulunur
x=t/29 olarak bulunur. (Ses gidip-geldiği için 2 ile çarpılır.)
x=t/58 (29*2=58)
Mikrodenetleyici 4 mhz frekansında
Timer 1 us çözünürlüğünde
Mesafe:
x = V . t (ses hızı 340m/sn)
34000 cm/1000000 us (340000/1000000=1/29) olarak bulunur
x=t/29 olarak bulunur. (Ses gidip-geldiği için 2 ile çarpılır.)
x=t/58 (29*2=58)
Uygulama ile yapılmak istenen C# arayüzünden gönderilen ‘.’ Karakteriyle
veri gönderimi başlayacak port üzerinde mesafe değeri DevExpress GaugeCircular
kadranına değerler aktarılacaktır.
MetroFramework ile Kullanım Sayfaları |
Arduino Sketch:
long zaman, mesafe; char okunan; int echoPin = 7,trigPin = 8; // Trig ve Echo pinleri void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); //çıktı pinMode(echoPin, INPUT); //girdi } void loop() { if (Serial.available() > 0) //Veri varsa { okunan = Serial.read(); if (okunan = '.'); // okunan da '.' karakteri ise { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); mesafe = duration / 58; //hesaplaması yapılan değer Serial.println(mesafe); /*mesafeyi serial port üzerinden C# arayüzüne aktar.*/ delay(100); } } }C# Form Code:
using System; using System.Windows.Forms; using MetroFramework; using MetroFramework.Forms; using System.IO.Ports; //Önemli port kütüphanesi eklenmeli. namespace ArduinoProject { public partial class Form1 : MetroForm { SerialPort serialPort; public Form1() { InitializeComponent(); serialPort = new SerialPort(); //Serial port nesnesi oluşturuldu. serialPort.BaudRate = 9600; //Baud hızı ayarlandı } private void metroButtonPlay_Click(object sender, EventArgs e) { timerArduino.Start(); try { serialPort.PortName = metroTextBoxPort.Text; //Portu oku if (!serialPort.IsOpen) //Açık değilse serialPort.Open(); } catch (Exception ex) { MetroMessageBox.Show(this, "Birşeyler yanlış gitti.", "Hata aldınız.", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void timerArduino_Tick(object sender, EventArgs e) { try { serialPort.Write("."); //Seriale '.' yaz gönder int income = Convert.ToInt16(serialPort.ReadExisting()); //gelen değeri oku arcScaleNeedleComponent1.Value = income; // scale artar. } catch (Exception ex) { //MetroMessageBox.Show(this, "Birşeyler yanlış gitti.", "Hata aldınız.", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void metroButtonStop_Click(object sender, EventArgs e) { timerArduino.Stop(); //Veri almayı bitir. serialPort.Close(); } } }
HC-SR04 Fritzing Şeması |
Bir sonraki yazımda görüşmek üzere…