Wellcome My Blogger Sapto Nugroho, E-mail : cv.sapto@gmail.com, Handphone : 08117877822

Mengukur 4 Jarak dengan sensor Ultrasonic

Pada palikasi robotika, ketika membutuhkan informasi jarak maka kita langsung berpikir sensor jarak. Yang paling terkenal adalah sensor ultrasonic. Nah apabila robot yang kita buat membutuhkan informasi 4 jarak, jarak didepan, di samping kanan, samping kiri dan belakang maka solusinya kita bisa memakai 4 sensor ultrasonic.




Saya memakai sensor ultrasonic SRF-05. Empat buah sensor SRF05 dihubungkan dengan mikrokontroler ke PORTB. ATmega8535 dengan Kristal 16 MHz. satu sensor SRF05 memerlukan 2 port, satu untuk Trigger dan satunya untuk Echo. Mengenai prinsip kerja sensor SRF05 telah kita bahas pada atrikel sebelumnya “Ultrasonic Range Meter dengan SRF05″, silahkan baca dulu bagi yang belum tahu.
Total 8 Pin (4×2), sehingga PORTB sudah cukup kita gunakan. Rangkaian mikrokontroler dengan sensor SRF05 tampak pada gambar berikut :

Nah, software dibuat dengan BASCOM-AVR :
‘******************************************
$regfile = “m8535.dat”
$crystal = 16000000
Dim Flag As Bit , I As Byte
Dim Jarak As Word
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7

Cursor Off
Cls
Lcd “4 Sensor Jarak”
Lowerline
Lcd “    SRF05 “
Wait 2
Cls
Lcd “S1=     S2=”
Lowerline
Lcd “S3=     S4=”
Ddrb = &B01010101
Config Timer1 = Timer , Prescale = 8
On Timer1 Jarak_over
Enable Interrupts                                               ‘cm
‘————————
Do
   Gosub Ukur_s1
   Locate 1 , 4
   Lcd Jarak ; ” “
   Gosub Ukur_s2
   Locate 1 , 12
   Lcd Jarak ; ” “
   Gosub Ukur_s3
   Locate 2 , 4
   Lcd Jarak ; ” “
   Gosub Ukur_s4
   Locate 2 , 12
   Lcd Jarak ; ” “
   Waitms 800
Loop
End
‘———————————
Ukur_s1:
   Flag = 1
   Waitus 100
   Portb.0 = 1
   Waitus 15
   Portb.0 = 0
   Waitus 100
   Enable Timer1
   Timer1 = 0
   Bitwait Pinb.1 , Set
   Start Timer1
   While Flag = 1
      If Pinb.1 = 0 Then
         Stop Timer1
         Jarak = Timer1
         Flag = 0
      End If
   Wend                                                     ‘
   Jarak = Jarak / 116
Return
‘———————————
Ukur_s2:
   Flag = 1
   Waitus 100
   Portb.2 = 1
   Waitus 15
   Portb.2 = 0
   Waitus 100
   Enable Timer1
   Timer1 = 0
   Bitwait Pinb.3 , Set
   Start Timer1
   While Flag = 1
      If Pinb.3 = 0 Then
         Stop Timer1
         Jarak = Timer1
         Flag = 0
      End If
   Wend                                                     ‘
   Jarak = Jarak / 116
Return
‘———————————
Ukur_s3:
   Flag = 1
   Waitus 100
   Portb.4 = 1
   Waitus 15
   Portb.4 = 0
   Waitus 100
   Enable Timer1
   Timer1 = 0
   Bitwait Pinb.5 , Set
   Start Timer1
   While Flag = 1
      If Pinb.5 = 0 Then
         Stop Timer1
         Jarak = Timer1
         Flag = 0
      End If
   Wend                                                     ‘
   Jarak = Jarak / 116
Return
‘———————————
Ukur_s4:
   Flag = 1
   Waitus 100
   Portb.6 = 1
   Waitus 15
   Portb.6 = 0
   Waitus 100
   Enable Timer1
   Timer1 = 0
   Bitwait Pinb.7 , Set
   Start Timer1
   While Flag = 1
      If Pinb.7 = 0 Then
         Stop Timer1
         Jarak = Timer1
         Flag = 0
      End If
   Wend                                                     ‘
   Jarak = Jarak / 116
Return
‘———————————
Jarak_over:
   Flag = 0
   Stop Timer1
   Timer1 = 0
   Jarak = 0
Return
Hasil percobaannya tampak pada gambar berikut :