Selamat malam kawan2 semua, saya menulis artikel ini jam 02.20 AM (Woow). Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses sensor jarak SRF04 atau SRF05 menggunakan bahasa bascom AVR atau basic. sebenarnya alat yang akan dibuat kali ini adalah alat pengukur jarak dengan maksimal 1 meter panjangnya. jadi alat ini bisa mengukur secara digital tanpa menggunakan penggaris atau alat ukur lainnya. pada alat ini data hasil pengukuran dikirimkan ke komputer melalui RS232. untuk lebih jelasnya berikut adalah skema dan programnya.
a. Minimum System + Skema
b. Sensor Jarak SRF04
c. Program Bascom AVR Menggunakan Timer0
$regfile = "m8def.dat"
$crystal = 12000000
$baud = 9600
Config Timer0 = Timer , Prescale = 256
Config Portb.1 = Output
Config Pinb.0 = Input
Declare Sub Cek_jarak1
Dim Data_jarak1 As Word
Dim Data_jarak_olah1 As Word
Dim Data_jarak_fix1 As Word
Dim Tinggiair1 As Word
Triger1 Alias Portb.1
Pecho1 Alias Pinb.0
Mulai:
Do
Call Cek_jarak1
Data_jarak1 = Data_jarak1
Data_jarak_olah1 = Data_jarak1 * 100
Data_jarak_fix1 = Data_jarak_olah1 / 256
Print Data_jarak_fix1
Waitms 1
Loop
Sub Cek_jarak1:
Reset Triger1
Waitus 10
Set Triger1
Waitus 20
Reset Triger1
Tcnt0 = 0
Bitwait Pecho1 , Set
Start Timer0
Do
If Pecho1 = 0 Then
Data_jarak1 = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
$crystal = 12000000
$baud = 9600
Config Timer0 = Timer , Prescale = 256
Config Portb.1 = Output
Config Pinb.0 = Input
Declare Sub Cek_jarak1
Dim Data_jarak1 As Word
Dim Data_jarak_olah1 As Word
Dim Data_jarak_fix1 As Word
Dim Tinggiair1 As Word
Triger1 Alias Portb.1
Pecho1 Alias Pinb.0
Mulai:
Do
Call Cek_jarak1
Data_jarak1 = Data_jarak1
Data_jarak_olah1 = Data_jarak1 * 100
Data_jarak_fix1 = Data_jarak_olah1 / 256
Print Data_jarak_fix1
Waitms 1
Loop
Sub Cek_jarak1:
Reset Triger1
Waitus 10
Set Triger1
Waitus 20
Reset Triger1
Tcnt0 = 0
Bitwait Pecho1 , Set
Start Timer0
Do
If Pecho1 = 0 Then
Data_jarak1 = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak1 = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub
Tifr.0 = 1
Data_jarak1 = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub
d. Program Bascom AVR Menggunakan Timer1
$regfile = "m8def.dat"
$crystal = 12000000
$baud = 9600
Ddrd.0 = 0
Ddrd.1 = 1
Config Portd.0 = Input
Config Portd.1 = Output
Config Timer1 = Timer , Prescale = 64
Trigger Alias Portd.1
Echoo Alias Portd.0
Dim Data_timer As Integer
Dim Data_timer1 As Single
Dim Jarak As String * 6
Do
Gosub Ambil_data
Data_timer1 = Data_timer / 11
Jarak = Fusing(data_timer1 , "##.##")
Print "jarak =" ; Jarak
Waitms 200
Loop
Ambil_data:
Set Trigger
Waitus 10
Reset Trigger
Bitwait Echoo , Set
Data_timer = 0
Timer1 = 0
Start Timer1
Do
If Echoo = 0 Then
Data_timer = Timer1
Stop Timer1
Exit Do
End If
If Tifr.2 = 1 Then
Stop Timer1
Tifr.2 = 1
Data_timer = 0
Exit Do
End If
Loop
Stop Timer1
Return
$crystal = 12000000
$baud = 9600
Ddrd.0 = 0
Ddrd.1 = 1
Config Portd.0 = Input
Config Portd.1 = Output
Config Timer1 = Timer , Prescale = 64
Trigger Alias Portd.1
Echoo Alias Portd.0
Dim Data_timer As Integer
Dim Data_timer1 As Single
Dim Jarak As String * 6
Do
Gosub Ambil_data
Data_timer1 = Data_timer / 11
Jarak = Fusing(data_timer1 , "##.##")
Print "jarak =" ; Jarak
Waitms 200
Loop
Ambil_data:
Set Trigger
Waitus 10
Reset Trigger
Bitwait Echoo , Set
Data_timer = 0
Timer1 = 0
Start Timer1
Do
If Echoo = 0 Then
Data_timer = Timer1
Stop Timer1
Exit Do
End If
If Tifr.2 = 1 Then
Stop Timer1
Tifr.2 = 1
Data_timer = 0
Exit Do
End If
Loop
Stop Timer1
Return
e. VIDEO HASILNYA
No comments:
Post a Comment