Translate

Mengakses Sensor Jarak SRF04 / SRF05 Menggunakan Bascom AVR

Mengakses Sensor Jarak SRF04 / SRF05 Menggunakan Bascom AVR


        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                                          
Stop Timer0
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





e. VIDEO HASILNYA












No comments:

Post a Comment