Arduino HC-SR04 Kullanımı | Arduino Mesafe Ölçümü

Arduino HC-SR04 Kullanımı | Arduino Mesafe Ölçümü

Merhaba arkadaşlar,
Mobilhanem.com için hazırladığımız Arduino Eğitimlerine ultrasonic mesafe sensörü olan HC-SR04 ile devam ediyoruz. Bu dersimizde HC-SR04‘den ve Arduino HC-SR04 kullanımından bahsedeceğiz.

Ultrasonic Mesafe Sensörü ( HC-SR04)

HC-SR04 – Ultrasonic Mesafe Ölçüm Sensörü

HC-SR04 ses dalgalarını kullanarak mesafe ölçümü işlemi için kullanılan bir aygıttır. Üzerinde ses dalgaları için bir verici ve bir alıcı bulundurur. Verici üzerinden ses dalgaları yayımlayarak bu dalgaların bir yüzeye çarpıp geri dönmesi arasında geçen süre üzerinden mesafe ölçme imkanı sunmaktadır. 2 – 400 cm aralığında ölçüm yapabilmekte ve bu ölçümü 3 mm hassasiyetinde gerçekleştirebilmektedir. 5V çalışma geriliminde  üzerinde bulunan VCC, Trigger, Echo ve GND bacaklarına yapılan bağlantılar ile kullanılır.

Trigger bacağı aktif hale getirilerek gerilim uygulanması ile birlikte verici üzerinden bir ses dalgası yayımlanmaya başlamış olur. Yayımlanan ses dalgası bir yüzeyden yansıyarak alıcı üzerine geri döndüğünde HC-SR04 Echo bacağına gerilim uygular. Ses dalgasının yayımlanması ve geri yansıması arasında geçen süre kullanılarak sensörün önündeki mesafe hesaplanır.

HC-SR04 hakkında daha fazla bilgi almak için datasheet‘ine göz atabilirsiniz.

Arduino HC-SR04 Kullanımı

Arduino ile birlikte HC-SR04 kullanabilmek için sensör üzerinde bulunan 4 bacağın örnek bağlantıları aşağıdaki şekildeki gibi olmalıdır.

Arduino - HC-SR04 Devre ŞemasıArduino – HC-SR04 Devre Şeması

Arduino ile HC-SRo4 kullanarak kodunu yazacağımız örneğimize geçmeden önce örneğimizde kullanacağımız pulseIn fonksiyonun neye yaradığını ve nasıl çalıştığını bilmemiz kodumuzu anlamamıza yardımcı olacaktır.

pulseIn () Fonksiyonu

Bu fonksiyon gözlemlenen bir pin üzerindeki gerilimin beklenen duruma gelinceye kadar mikro saniye olarak geçen süreyi unsigned long veri tipinde geri döndürür.  pulseIn fonksiyonu iki veya üç parametre ile çağrılmaktadır. ilk parametresi ilgili pin’i, ikinci parametresi gözlemlenecek olan gerilim durumunu (HIGH, LOW), isteğe bağlı olan üçüncü parametresi ise beklenen durum için mikro saniye cinsinden zaman aşımını belirtmektedir. Ayrıca ilk iki parametresi integer tipinde iken üçüncü parametresi long veri tipindedir.

Biz örneğimizde bu fonksiyonu alıcıya yansımış bir ses dalgası olmadığı sürece LOW durumda olacak olan Echo bacağının HIGH durumunu geçişi için ne kadar süre geçtiğini hesaplamak için kullanacağız.

Arduino HC-SR04 Mesafe Ölçüm Örneği

byte trigger = 10; // Sensörün Trigger bacağının bağlı olduğu pin
byte echo = 11; // Sensörün Echo bacağının bağlı olduğu pin

unsigned long sure; // Echo bacağının kac mikro saniyede aktif olduğunu saklayacak olan değişken
double toplamYol;
int aradakiMesafe;

void setup() {
pinMode(trigger, OUTPUT); // Sensörün Trigger bacağına gerilim uygulayabilmemiz için OUTPUT yapıyoruz.
pinMode(echo, INPUT); // Sensörün Echo bacağındaki gerilimi okuyabilmemiz için INPUT yapıyoruz.
Serial.begin(9600);
}
void loop()
{
/* Başlangıçta LOW durumda olan trigger bacağına gerilim uygulayıp ardından gerilimi keserek bir ses dalgası
oluşturmuş oluyoruz. Bu işlem arasında 10 mikro saniye beklenmenin sebebi HC-SR04’ün en az 10 mikro saniyelik
dalgalar ile çalışmasıdır. */
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);

// Dalga üretildikten sonra geri yansıyıp Echo bacağının HIGH duruma geçireceği süreyi pulseIn fonksiyonu ile
// kaydediyoruz.
sure = pulseIn(echo, HIGH);

// Aşağıda yapılan süre-mesafe dönüşüm işlemleri yazımızda açıklanmıştır.
toplamYol = (double)sure*0.034;
aradakiMesafe = toplamYol / 2;

Serial.print(“Ses dalgasinin geri donus suresi :”);
Serial.print(sure);
Serial.println(“mikro saniye”);

Serial.print(“Ses dalgasinin toplam kat ettigi yol :”);
Serial.print(toplamYol);
Serial.println(“cm.”);

Serial.print(“HC-SR04 ile karsisindaki yuzey arasindaki mesafe :”);
Serial.print(aradakiMesafe);
Serial.println(“cm.nn”);

delay(2000);
}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

byte trigger = 10; // Sensörün Trigger bacağının bağlı olduğu pin

byte echo = 11; // Sensörün Echo bacağının bağlı olduğu pin

 

unsigned long sure; // Echo bacağının kac mikro saniyede aktif olduğunu saklayacak olan değişken

double toplamYol;

int aradakiMesafe;

 

 

void setup() {

  pinMode(trigger, OUTPUT); // Sensörün Trigger bacağına gerilim uygulayabilmemiz için OUTPUT yapıyoruz.

  pinMode(echo, INPUT); // Sensörün Echo bacağındaki gerilimi okuyabilmemiz için INPUT yapıyoruz.

  Serial.begin(9600);

}

void loop()

{

  /* Başlangıçta LOW durumda olan trigger bacağına gerilim uygulayıp ardından gerilimi keserek bir ses dalgası

  oluşturmuş oluyoruz. Bu işlem arasında 10 mikro saniye beklenmenin sebebi HC-SR04’ün en az 10 mikro saniyelik

  dalgalar ile çalışmasıdır. */

  digitalWrite(trigger, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigger, LOW);

 

  // Dalga üretildikten sonra geri yansıyıp Echo bacağının HIGH duruma geçireceği süreyi pulseIn fonksiyonu ile

  // kaydediyoruz.

  sure = pulseIn(echo, HIGH);

 

  // Aşağıda yapılan süre-mesafe dönüşüm işlemleri yazımızda açıklanmıştır.

  toplamYol = (double)sure*0.034;

  aradakiMesafe = toplamYol / 2;

  

  Serial.print(“Ses dalgasinin geri donus suresi :”);

  Serial.print(sure);

  Serial.println(“mikro saniye”);

  

  Serial.print(“Ses dalgasinin toplam kat ettigi yol :”);

  Serial.print(toplamYol);

  Serial.println(“cm.”);

  

  Serial.print(“HC-SR04 ile karsisindaki yuzey arasindaki mesafe :”);

  Serial.print(aradakiMesafe);

  Serial.println(“cm.nn”);

 

  delay(2000);

}

Arduino - HC-SR04 Örneği Ekran ÇıktısıArduino – HC-SR04 Örneği Ekran Çıktısı

Süre – Mesafe Dönüşümü

HC-SR04 ile yayımlanan ses dalgalarının bir yüzeye çarpması ve geri dönmesi arasındaki süre kullanılarak mesafe ölçme işleminin gerçekleştirildiğinden bahsetmiştik.

Bizim örneğimizde elde ettiğimiz süre mikro saniye cinsinden olduğundan ve yaptığımız ölçümü de santimetre cinsinden göstermek istediğimiz için ses hızını kullanarak bu yönde bir dönüşüp yapmamız gerekmektedir. Saniyedeki hızı yaklaşık olarak 340 m/sn olan ses dalgalarının bir mikro saniyede aldığı yol 0.034 cm’dir. Örneğimizde pulseIn fonksiyonunu kullanarak oluşturduğumuz ses dalgasının toplam gidiş-dönüş süresini elde ediyoruz. Elde ettiğimiz süre değerini 0.034 ile çarptığımızda toplam kat edilen yolu, toplam kat edilen yolu ikiye böldüğümüzde de uzaklık değerini elde etmiş oluruz.

Bu dersimizde Arduino ile HC-SR04(Ultrasonik Mesafe Ölçüm Sensörü) kullanarak nasıl mesafe ölçme işlemini gerçekleştirebileceğimizi; HC-SR04’ü inceleyerek, pulseIn fonksiyonundan ve süreden nasıl mesafe elde edileceğinden bahsederek anlatmaya çalıştık. Konuyla ilgili yorumlarınızı konu altından yapabilir, sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz. Bir sonraki içeriğimizde Mobilhanem.com‘da görüşmek üzere.

Tüm Arduino Dersleri için tıklayınız..

9

Yorum Yap
0 Yorum yapan