Arduino İle Ultrasonik Mesafe Sensör(HC-SR04) Kullanımı

 Bu yazıda HC-SR04 ultrasonik sensörün nasıl çalıştığını ve Arduino ile nasıl kullanılacağına değineceğiz. Bu sensör, Arduino ile mesafeyi ölçmek ve engellerden kaçınan robotlar yapmak için en popüler sensördür.

HC-SR04 Donanıma Genel Bakış

HC-SR04, 2 cm ila 400 cm (yaklaşık bir inç ila 13 fit) aralığına sahip, uygun fiyatlı ve kullanımı kolay bir mesafe ölçüm sensörüdür.

Sensör, iki ultrasonik dönüştürücüden oluşur. Biri ultrasonik ses darbeleri veren verici, diğeri ise yansıyan dalgaları dinleyen alıcıdır. Temel olarak denizaltılarda su altı nesnelerini tespit etmek için kullanılan bir SONAR'dır.


İşte ana özellikleri:

Operating Voltage5V DC
Operating Current15mA
Operating Frequency40KHz
Min Range2cm / 1 inch
Max Range400cm / 13 feet
Accuracy3mm
Measuring Angle<15°
Dimension45 x 20 x 15mm

HC-SR04 Ultrasonik Sensör Pinleri

İşte sensörün pin çıkışı:



Sensörün 4 pini vardır. VCC ve GND, Arduino'daki 5V ve GND pinlerine, Trig ve Echo ise herhangi bir dijital Arduino pinine gider. Trig pinini kullanarak vericiden ultrason dalgasını göndeririz ve Echo pini ile yansıyan sinyali dinleriz.

HC-SR04 Ultrasonik Sensör Arduino Kodu

İşte HC-SR04 ultrasonik sensör ve Arduino kullanarak mesafeyi ölçmek için bir kod.

// defines pins numbers const int trigPin = 9; const int echoPin = 10; // defines variables long duration; int distance; void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input Serial.begin(9600); // Starts the serial communication } void loop() { // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance = duration * 0.034 / 2 ;
// Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); }

Kod Açıklama

Öncelikle Trig ve Echo pinlerini tanımlamamız gerekiyor. Bu durumda Arduino Board üzerindeki 9 ve 10 numaralı pinlerdir ve trigPin ve echoPin olarak adlandırılırlar. Ardından sensörden alacağımız seyahat süresi için “duration” adında bir long değişkenine ve mesafe için bir tamsayı değişkenine ihtiyacımız var.

// defines pins numbers const int trigPin = 9; const int echoPin = 10; // defines variables long duration; int distance;

Kurulumda trigPin'i çıkış olarak ve echoPin'i Giriş olarak tanımlamalı ve sonuçları seri monitörde göstermek için seri iletişimi başlatmalıyız.

void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input Serial.begin(9600); // Starts the serial communication }

Döngüde ilk önce trigPin'in temiz olduğundan emin olmalıyız, bu nedenle bu pimi sadece 2 µs için LOW Duruma ayarlamanız gerekir. Şimdi Ultra ses dalgasını oluşturmak için trigPin'i 10 µs için HIGH Duruma ayarlamamız gerekiyor.

// Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);

pulseIn() işlevini kullanarak seyahat süresini okuruz ve bu değeri “duration” değişkenine koyarız. Bu fonksiyonun 2 parametresi vardır, birincisi Echo pininin adı, ikincisi ise okuduğumuz darbenin LOW veya HIGH durumudur.

// Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH);

Mesafeyi bulmak için süreyi 0.034 ile çarpacağız ve daha önce bu denklemi açıkladığımız gibi 2'ye böleceğiz.

// Calculating the distance distance= duration*0.034/2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance);

Sonunda mesafenin değerini Seri Monitöre yazdıracağız.


Kaynak:
https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/
https://www.tutorialspoint.com/arduino/arduino_ultrasonic_sensor.htm#