Read more
Aplikasi Sensor jarak hc-srf04 (lebih tepat disebut sensor ultrasonik) untuk pengecekan ketinggian air berbasis mikrokontroler at mega 16 /at mega 8535 atau at mega 32 menggunakan bahasa pemrograman bascom
Aplikasi ini sebenarnya sangat sederhana, hanya mengukur ketinggian air memanfaatkan sensor ultrasonic hc-srf04, sensor ini cukup murah jika dibandingkan dengan sensor ultrasonic srf 04 buatan devantech yang pada umumnya dijual pada kisaran harga 380 rb. Kekurangan dari sensor ultrasonic hc-srf04 adalah jarak baca sensor yang rendah (1 meter saja / datasheet menyatakan jarak maksimal pengukuran adalah 5 meter), sedangkan sensor ultrasonic srf 04 buatan devantech mampu mengukur hingga jarak 3 meter (padahal datasheet menyampaikan jarak maksimal pengukurannnya adalah 11 meter)
sensor yang dipergunakan sebanyak 3 buah, disertai beberapa buah led, led ini akan dipergunakan sebagai indicator pengukuran tinggi air di dalam wadah,
source code dengan bahasa basic menggunaka software bascom adalah sebagai berikut :
$regfile = "m16def.dat"
$baud = 9600
$crystal = 12000000
'Deklarasi Timer mikrokontroler
Config Timer0 = Timer , Prescale = 256
'Config Timer1 = Timer , Prescale = 256
'Config Timer2 = Timer , Prescale = 256
'Deklarasi LCD
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2
'Deklarasi Input-Output
Config Porta = OuTput
Config Portd.7 = Output
Config Portd.6 = Output
Config Portd.5 = Output
Ddra = 255
Porta = 0
Ddrd.7 = 1
Ddrd.6 = 1
Ddrd.5 = 1
Portd.7 = 0
Portd.6 = 0
Portd.5 = 0
Config Portc.1 = Output
Config Pinc.0 = Input
Config Portc.3 = Output
Config Pinc.2 = Input
Config Portc.5 = Output
Config Pinc.4 = Input
'Sub program pembaca data sensor
Declare Sub Cek_jarak1
Declare Sub Cek_jarak2
Declare Sub Cek_jarak3
'Deklarasi variabel
Dim Data_jarak1 As word , Data_jarak2 As word , Data_jarak3 As word
Dim Data_jarak_olah1 As word , Data_jarak_olah2 As word , Data_jarak_olah3 As word
Dim Data_jarak_fix1 As word , Data_jarak_fix2 As word , Data_jarak_fix3 As word
dim tinggiair1 as Word , tinggiair2 as Word , tinggiair3 as Word
'Dim Data_min1 As Integer , Data_max1 As Integer
'Dim Data_min2 As Integer , Data_max2 As Integer
'Dim Data_min3 As Integer , Data_max3 As Integer
'Dim Tinggi1 As Integer , Tinggi2 As Integer , Tinggi3 As Integer
H1 Alias Porta.0
K1 Alias Porta.1
M1 Alias Porta.2
H2 Alias Porta.3
K2 Alias Porta.4
M2 Alias Porta.5
H3 Alias Portd.7
K3 Alias Portd.6
M3 Alias Portd.5
Triger1 Alias Portc.1
Pecho1 Alias Pinc.0
Triger2 Alias Portc.3
Pecho2 Alias Pinc.2
Triger3 Alias Portc.5
Pecho3 Alias Pinc.4
H1 = 0
H2 = 0
H3 = 0
K1 = 0
K2 = 0
K3 = 0
M1 = 0
M2 = 0
M3 = 0
'Data_min1 = 10
'Data_max1 = 20
'Data_min2 = 10
'Data_max2 = 20
'Data_min3 = 10
'Data_max3 = 20
'Tinggi maksimum wadah
'Tinggi1 = 50
'Tinggi2 = 50
'Tinggi3 = 50
Mulai:
Cls
Cursor Off
Locate 1 , 4
Lcd "Pendeteksi"
Locate 2 , 2
Lcd "Ketinggian Air"
Wait 1
Do
's1
Call Cek_jarak1
Data_jarak1 = Data_jarak1
Data_jarak_olah1 = Data_jarak1 * 100
Data_jarak_fix1 = Data_jarak_olah1 / 256
tinggiair1 = 99 - Data_jarak_fix1
If tinggiair1 < 30 then
h1 = 1
k1 = 0
m1 = 0
elseIf tinggiair1 > 50 then
h1 = 0
k1 = 1
m1 = 0
elseif tinggiair1 > 80 then
h1 = 0
k1 = 0
m1 = 1
endif
Cls
Cursor Off
Locate 1 , 1
Lcd "Jarak 1 ="
Locate 2 , 1
Lcd Data_jarak_fix1 ; " cm "
locate 2 , 10
lcd tinggiair1 , "cm"
Print "A" ; tinggiair1 ; "a" ;
Wait 1
's2
Call Cek_jarak2
Data_jarak2 = Data_jarak2
Data_jarak_olah2 = Data_jarak2 * 100
Data_jarak_fix2 = Data_jarak_olah2 / 256
tinggiair2 = 99 - Data_jarak_fix2
If tinggiair2 < 30 then
h2 = 1
k2 = 0
m2 = 0
elseIf tinggiair2 > 50 then
h2 = 0
k2 = 1
m2 = 0
elseif tinggiair2 > 80 then
h2 = 0
k2 = 0
m2 = 1
endif
Cls
Cursor Off
Locate 1 , 1
Lcd "Jarak 2 ="
Locate 2 , 1
Lcd Data_jarak_fix2 ; " cm"
locate 2 , 10
lcd tinggiair2 , "cm"
Print "B" ; tinggiair2 ; "b" ;
Wait 1
'S3
Call Cek_jarak3
Data_jarak3 = Data_jarak3
Data_jarak_olah3 = Data_jarak3 * 100
Data_jarak_fix3 = Data_jarak_olah3 / 256
tinggiair3 = 99 - Data_jarak_fix3
If tinggiair3 < 30 then
h3 = 1
k3 = 0
m3 = 0
elseIf tinggiair3 > 50 then
h3 = 0
k3 = 1
m3 = 0
elseif tinggiair3 > 80 then
h3 = 0
k3 = 0
m3 = 1
endif
Cls
Cursor Off
Locate 1 , 1
Lcd "Jarak 3 ="
Locate 2 , 1
Lcd Data_jarak_fix3 ; " cm"
locate 2 , 10
lcd tinggiair3 , "cm"
Print "C" ; tinggiair3 ; "c" ;
Wait 1
Loop
'Sub program membaca data sensor ultrasonik
Sub Cek_jarak1:
' reset trigger = trigger = 0,
Reset Triger1
Waitus 10 ' tunggu 10 us
Set Triger1 'aktifkan
Waitus 20 ' tunggu 20 us
Reset Triger1 ' matikan trigger
Tcnt0 = 0
Bitwait Pecho1 , Set
'Tunggu pin ECHO high atau 1
Start Timer0
Do
If Pecho1 = 0 Then
'Jika ECHO = 0 baca data yang dihitung pada timer
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
'Sub program membaca data sensor ultrasonik
Sub Cek_jarak2:
Reset Triger2
Waitus 10
Set Triger2
Waitus 20
Reset Triger2
Tcnt0 = 0
Bitwait Pecho2 , Set
'Tunggu pin ECHO high atau 1
Start Timer0
Do
If Pecho2 = 0 Then
'Jika ECHO = 0 baca data yang dihitung pada timer
Data_jarak2 = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak2 = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub
'Sub program membaca data sensor ultrasonik
Sub Cek_jarak3:
Reset Triger3
Waitus 10
Set Triger3
Waitus 20
Reset Triger3
Tcnt0 = 0
Bitwait Pecho3 , Set
'Tunggu pin ECHO high atau 1
Start Timer0
Do
If Pecho3 = 0 Then
'Jika ECHO = 0 baca data yang dihitung pada timer
Data_jarak3 = Tcnt0
Stop Timer0
Exit Do
End If
If Tifr.0 = 1 Then
Stop Timer0
Tifr.0 = 1
Data_jarak3 = &HFF
Exit Do
End If
Loop
Stop Timer0
Waitms 15
End Sub
Program yang dibuat terlihat begitu panjang yah..?
NB : jika membutuhkan kit mikrokontroller sebagai mana judul di atas, silakan contact ( hubungi 085743320570 / taufik adi sanjaya)
0 Reviews
Silakan dikomentari