Sensor Jarak Ultrasonik
Bagaimana Ultrasonik Bekerja?
Sensor Ultrasonik ini memancar kan gelombang suara dengan frequensi 40.000Hz melalui udara, ketika gelombang suara terkena suatu objek maka gelombang suara tersebut akan kembali ke sensor, atau bagian penerima sensor tersebut. Untuk waktu perjalanan gelombang suara dan kecepatan gelombang nya, maka kita dapat hitung jarak antara sensor dengan objek yang terkena. Untuk Cara kerja nya bisa teman-teman lihat di video buatan luar ini.
Sensor Ultrasonic memiliki 4 Pin atau kaki, yaitu kaki ground, VCC, Trig dan Echo. Ground di hubungkan ke GND Arduino atau gnd power supply kemudian VCC kita hubungkan ke +5v dari Pin Arduino dalam kasus kita ini. Untuk konfigurasi PIN Arduino dengan PIN sensor ultrasonic, teman teman bisa lihat table sederhana di bawah ini.
PIN Arduino | PIN HC-SR04 |
GND | GND |
+5V | VCC |
D2 | Echo |
D3 | Trig |
Untuk menghasilkan Sinyal ultrasound kita harus setting pin trigger dalam kondisi high selama 10uS. Maka Ultrasound akan mengirim sinyal sebanyak 8 bit dengan kecepatan suara di udara dan sinyal kembali akan di terima oleh pin Echo. Pin Echo akan mengelurkan output waktu dalam micro seconds waktu perjalanan dari ultrasound ini.
Pada gambar di atas misalkan kita jarak sensor dengan objek adalah 10cm, kemudian pin Triger di trigger sehingga memancarkan sinyal ultrasound. Dari nilai kecepatan suara kita akan mendapakan waktu ( T) selama perjalanan sinyal. Jarak Aktual adalah T ( Waktu ) x V(sound)/2.
S = T ( Waktu ) x V(sound)/2.
Spesifikasi Sensor HC-SR04
Agar sensor dapat beroprasi dengan baik dan benar, ada baik nya kita lihat spesifikasi sensor ultrasonic ini, Berikut adalah spesifikasi sensor ultrasonic nya,
Electrical Parameters | HC-SR04 UltrasonicModule |
Operating Voltage | DC-5V |
Operating Current | 15mA |
Operating Frequency | 40KHZ |
FarthestRange | 4m |
Nearest Range | 2cm |
Measuring Angle | 15Degree |
InputTrigger Signal | 10usTTLpulse |
OutputEcho Signal | OutputTTLlevel signal,proportional withrange |
Dimensions | 45*20*15mm |
di atas kita lihat bahwa jarak terjauh dari sensor adalah 4m, tau 400cm, tapi setelah kami uji sendiri, sensor hanya mampu menempuh jarak lebih dari 3m saja, mungkin karena original dan tidak origanl dari suatu sensor.
Setelah kita dapat persamaan di atas dan spesifikasi dari sensor ini, bagaiamana kah coding Arduino nya untuk membaca sensor Ultrasonic tipe HC-SR04 ini? yuk kita coba
Coding Ultrasonic
Data jarak ultrasonic akan kita tampilkan di LCD 16×2, namun teman-teman coba perhatikan, kita menggunakan LCD I2C auto scan, jadi teman-teman pastikan sudah membaca tutorial, bagaimana cara menggunakan library autoscan LCD i2C, cukup tekan link di bawah ini,
Pada program ini PIN Trig akan di dirubah dari kondisi LOW menjadi High dan di tahan selama 2 uS ( micro seconds) kemudian di rubah menjadi kondisi High dan ditahan selama 10uS. Setelah itu di kembalikan kondisi Low pada PIN Trigger nya. Setelah itu PIN echo akan mengeluarkan sinyal seperti penjelasan di atas dan akan di baca oleh pin 3. Pembacaan nya menggunakan fungsi pulseIN. Sementara pulseIn adalah suatu fungsi untuk membaca pulsa.
Apakah tertarik ingin belajar Arduino dari modul belajar arduino buatan mikroavr? cukup clik tombol merah di bawah ini,
Bagaiaman kah program nya? Berikut program nya,
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(16, 2); const byte Echo = 2;//kaki ultrasonik const byte Trig = 3;//kaki ultrasonik long duration; int distance; int jarak; String line1, line2; unsigned long old_time; void setup() { lcd.autoAddress(); lcd.begin(); pinMode(Echo, INPUT); pinMode(Trig, OUTPUT); } void loop() { if( millis() - old_time >= 250 ){ get_data(); old_time = millis(); } } void baca_sensor(int trigPin, int echoPin){ digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin,LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034/2; } void get_data(){ baca_sensor(Trig,Echo); jarak = distance; line1 = "Ukur Jarak"; line2 = String("Jarak: ") + jarak + (" cm"); lcd.clear(); lcd.setCursor(0,0); lcd.print(line1); lcd.setCursor(0,1); lcd.print(line2); }
nah, bagaimana teman-teman? Mudah bukan membaca jarak dengan Sensor Ultrasonik? Yuk sekarang kita sederhanakan lagi program di atas, agar program nya bisa di kembangkan mengguanakan sensor ultrasonik yang lebih banyak, namun dengan coding yang lebih ringkas dan tidak berulang ulang.
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(16, 2); const byte Echo = 2;//kaki ultrasonik const byte Trig = 3;//kaki ultrasonik const byte Echo2 = 4;//kaki ultrasonik const byte Trig2 = 5;//kaki ultrasonik String str_jarak, str_jarak2; unsigned long old_time; void setup() { lcd.autoAddress(); lcd.begin(); pinMode(Echo, INPUT); pinMode(Trig, OUTPUT); pinMode(Echo2, INPUT); pinMode(Trig2, OUTPUT); } void loop() { if ( millis() - old_time >= 250 ) { str_jarak = String(baca_sensor(Echo, Trig)) + " Cm"; str_jarak2 = String(baca_sensor(Echo2, Trig2)) + " Cm"; lcd.clear(); lcd.setCursor(0, 0); lcd.print(str_jarak); lcd.setCursor(0, 1); lcd.print(str_jarak2); old_time = millis(); } } int baca_sensor(int trigPin, int echoPin) { long duration; int distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; return distance; }
Sekarang coba lihat program di atas, jadi lebih mudah, program hanya tambah beberapa line, padahal ada dua sensor Ultrasonik yang di tambahkan pada Arduino nya. Semoga tulisan ini bermanfaat bagi teman-teman
Thanks