Tags

,

arduino sensor ultrasonik

Program di tulisan ini didapatkan dari http://www.trollmaker.com/article3/arduino-and-hc-sr04-ultrasonic-sensor, dan dimodifikasi agar lebih mudah dipahami.

Wiring

arduino sensor ultrasonik

Saya menambahkan pin ke 9 untuk led. Jika tidak memakai led juga tidak apa-apa.

Sensor HC-SR04 Manual

HC-SR04 Manual

Manual di atas menyebutkan bahwa kita butuh mentrigger pin ‘trigger’ selama 10 microseconds agar sensor dapat mengeluarkan 8 Cycle Sonic yang dibutuhkan oleh pin ‘echo’.

Program

Silahkan di copy program berikut -upload, kemudian buka tools-serial monitor. Hasilnya seperti ini:

serial ultrasonik arduino

/*
HC-SR04 Ping distance sensor]
VCC to arduino 5v GND to arduino GND
Echo to Arduino pin 7 Trig to Arduino pin 8
More info at: http://goo.gl/kJ8Gl
*/

int echoPin = 7;
int trigPin = 8;
int led  = 9;

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(led, OUTPUT);
}

void loop() {
float duration, distance;
digitalWrite(trigPin, LOW);
Serial.println("INISIALISASI 3 detik");
digitalWrite(led, HIGH);
delay(3000);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
// 10 micro sesuai datasheet.
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// pulseIn mentotal waktu tunggu dari echoPIn saat high
distance = (duration/2) * 0.03448;
// rumus kecepatan suara
Serial.print("Waktu Ping = ");
Serial.print(duration);
Serial.println(" micro second");
if (distance >= 200 || distance <= 0){
// Jika distance lebih besar 200 cm atau kurang dari 0 cm
Serial.println("Terlalu Jauh");
}
else {
Serial.print("Jarak sensor dengan benda = ");
Serial.print(distance);
Serial.println(" cm");
}
Serial.println("Kembali Ke Awal 2 detik");
digitalWrite(led, LOW);
delay(2000);
}

Penjelasan Program

digitalWrite(trigPin, LOW);
Serial.println("INISIALISASI 3 detik");
digitalWrite(led, HIGH); delay(3000);

Awal program memberikan trigPin nilai LOW untuk memastikan bahwa ‘trigger’ tidak on. Kemudian berikan nilai HIGH pada led, sehingga dapat dilihat oleh mata bahwa initialisasi selama 3 detik dimulai.

 digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
// 10 micro sesuai datasheet.
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);

Kemudian berikan trigPin nilai HIGH, dan berikan delay 10 microseconds sesuai datasheet, kemudian kembalikan ke LOW. Di saat yang bersamaan diberikan fungsi pulseIn pada echoPin (pulseIn akan menunggu rentang waktu echoPin dari LOW menjadi HIGH, waktu tunggu tersebut akan terstore ke dalam memory).

Sehingga arduino dapat mengetahui waktu yang dibutuhkan untuk perjalanan suara dari trigger dan kembali ke echo karena pantulan benda.


distance = (duration/2) * 0.03483;

Untuk mengetahui jarak rumusnya adalah kecepatan * waktu yang dibutuhkan. Karena duration adalah waktu bolak-balik (sensor-benda-sensor), maka perlu dibagi 2 untuk mendapatkan jarak dari sensor ke benda.

rumus kecepatan udaraDimana teta adalah suhu udara, maka

c = 331.5 + 0.606 * [suhu udara]

Jika Suhu 28 der celcius.

c = 331.5 + 0.606 * 28

c = 348.3 meter/second

Dikarenakan distance mempunyai satuan mili/s. maka convert 348.3 m/s ke micr/s. Hasilnya 348.3 * / 1000 = 0.03483 micro/s

Penetapan suhu sangat penting untuk menjaga presisi jarak dari sensor ke suatu objek, jika suhu yang dimasukan salah nilainya pun akan bergeser dari yang semestinya.

Referensi : https://en.wikipedia.org/wiki/Speed_of_sound