S
w
it
c
h
B
a
ta
s
K
e
m
u
d
i
K
ir
i
L
C
D
2
x
1
PENGUJIAN SENSOR JARAK
1.
Pendahuluan
Sensor pendeteksi jarak pada penelitian ini menggunakan sensor Sharp
GP2D12 dan Sharp GP2D120 dengan
output
berupa tegangan analog dan bersifat
non
linear
. Karena
output
tidak
linear
maka dibutuhkan suatu metode untuk menentukan
jarak berdasarkan tegangan analog. Salah satu cara kalibrasi sensor jarak Shap ini
dengan melakukan pengukuran
output
sensor untuk setiap jarak tetap (cm).
2.
Prosedur percobaan
Pengujian sensor jarak dilakukan dengan membandingkan nilai
output
sensor
untuk setiap rintangan pada jarak tetap. Pengujian dilakukan untuk ke-lima sensor,
yaitu FL, FC, FR, BL, dan BR. Gambar SJ1 memperlihatkan rangkaian yang
digunakan dalam melakukan pengujian sensor jarak.
Pengujian dilakukan untuk mendapatkan data
output
berupa tegangan analog
yang telah dikonversi menjadi data digital dengan videlitas 10-bit sebagai pengujian
deteksi sensor terhadap objek tetap untuk jarak 10 cm s/d 80 cm dengan kelipatan
jarak deteksi 5 cm untuk sensor Sharp GP2D12 dan jarak 4 cm s/d 30 cm dengan
kelipatan jarak deteksi 2 cm untuk sensor Sharp GP2D120.
Gambar SJ1 Rangkaian pengujian sensor jarak
Program pengujian sensor jarak dalam bentuk diagram alir ditunjukkan pada
Gambar SJ2.
Keterangan Gambar SJ2:
Data : Sebuah variabel yang digunakan untuk menampung data hasil konversi
tegangan analog (
output
sensor jarak) menjadi data digital.
X
: sebuah variabel yang digunakan untuk menampung data cacahan (cacah naik
sampai nilai cacahan = 10)
Gambar SJ2 Diagram alir pengujian sensor jarak
3.
Hasil pengujian
power
dan memilih
display equation on chart
dan
display R-squared value on chart
dengan menggunakan
microsoft office excel
untuk mendapatkan sebuah persamaan
untuk memetakan nilai pada sumbu y (jarak deteksi objek tetap) berdasarkan nilai
pada sumbu x (jarak deteksi yang telah dikonversi menjadi data digital dengan
videlitas 10-bit). Gambar SJ3 menunjukkan grafik pengujian sensor FL, Gambar SJ4
menunjukkan grafik pengujian sensor FC, Gambar SJ5 menunjukkan pengujian
sensor FR, Gambar SJ6 menunjukkan pengujian sensor BL, dan Gambar SJ7
menunjukkan pengujian sensor BR.
GRAFIK SENSOR FL
OUTPUT SENSOR (DIGITAL DENGAN FIDELITAS 10 BIT)
J
GRAFIK SENSOR FC
OUTPUT SENSOR (DIGITAL DENGAN FIDELITAS 10 BIT)
J
Gambar SJ4 Hasil pengujian sensor FC
GRAFIK SENSOR FR
OUTPUT SENSOR (DIGITAL DENGAN FIDELITAS 10 BIT)
J
GRAFIK SENSOR BL
OUTPUT SENSOR (DIGITAL DENGAN FIDELITAS 10 BIT)
J
Gambar SJ6 Hasil pengujian sensor BL
GRAFIK SENSOR BR
OUTPUT SENSOR (DIGITAL DENGAN FIDELITAS 10 BIT)
J
4.
Pengolahan data
Berdasarkan hasil yang didapat dari garis
trendline
maka dapat di petakan
jarak objek yang terdeteksi sensor berdasarkan data
ouput
sensor yang telah
dikonversi menjadi data digital 10-bit yang ditampung dalam variabel hasil.
Persamaan 1 menunjukkan jarak deteksi sensor FL, persamaan 2 menunjukkan jarak
deteksi sensor FC, persamaan 3 menunjukkan jarak deteksi sensor FR, persamaan 4
menunjukkan jarak deteksi sensor FBL, dan persamaan 5 menunjukkan jarak deteksi
PENGUJIAN SUDUT KEMUDI
1.
Pendahuluan
Motor
stepper
digunakan sebagai penggerak kemudi, sehingga besarnya sudut
kemudi (
f
) dipengaruhi jumlah
step
yang diberikan motor
stepper
dari titik acuan
yang ditentukan (batas kemudi kiri). Menentukan besarnya sudut kemudi (
f
)
dilaksanakan berdasarkan eksperimen dengan memberikan sudut kemudi tetap (dalam
jumlah
step
dari titik acuan) dan memberikan kecepatan konstan, sehingga robot akan
bergerak membentuk lintasan melingkar. Dengan menggunakan alat tulis (kapur)
pada slot kapur (posisi slot kapur dan titik R
Refditunjukkan pada Gambar 3.2) maka
robot akan menggambar sebuah lingkaran pada lintasan sebagai radius referensi
(R
Ref) terhadap titik pusat rotasi P yang digunakan untuk menentukan besarnya radius
putar (R) dari titik tengah sumbu roda belakang (x,y) terhadap titik P dan menentukan
sudut kemudi (
f
) berdasarkan sudut yang dibentuk radius R
Vdan R terghadap pusat
rotasi (P) yang digunakan. Gambar SK1 menunjukkan hubungan radius putar
terhadap sudut kemudi.
Keterangan Gambar SK1:
P = Pusat rotasi radius putar
R = Radius putar dari titik (x,y) terhadap titik P
R
Ref= Radius putar dari titik A terhadap titik P
R
V= Radius putar dari titik tengah sumbu roda depan (roda virtual) terhadap
titik P.
p (overhang depan) = 3 cm
w (lebar CLMR) = 15 cm
w
D
(selisih titik (x,y) terhadap titik B = 2 cm
L (baseline) = 15 cm
f
Gambar SK1 Hubungan radius putar terhadap sudut kemudi
(a) untuk belok ke kiri ,(b)untuk belok ke kanan
Dari hasil eksperimen didapat nilai R
Refsebagai radius putar terhadap titik P
yang terbentuk saat menggunakan sudut kemudi tetap dan kecepatan konstan. Dengan
menggunakan teorema phytagoras maka didapat R seperti yang ditunjukkan pada
persamaan 1, R
VSeperti yang ditunjukkan pada persamaan 2 dan dengan
menggunakan persamaan 2.1 dan 2.2 maka didapat sudut kemudi seperti yang
ditunjukkan pada persamaan 3.
2.
Prosedur percobaan
Eksperimen dilaksanakan dengan merancang perangkat keras seperti yang
ditunjukkan pada Gambar SK2 dan perangkat lunak seperti yang ditunjukkan dalam
diagram alir pada Gambar SK3.
S
w
it
c
h
B
a
ta
s
K
e
m
u
d
i
K
ir
i
Gambar SK2 Rangkaian pengujian sudut kemudi
Dari Gambar SK2, simbol (M) yang terhubung dengan IC L293D merupakan
motor DC untuk menggerakkan roda belakang CLMR.
Dari Gambar SK3 variabel ST (Steering Target) digunakan sebagai target
kemudi yang ingin dicapai dalam jumlah
step
yang diinginkan dari titik acuan (batas
kemudi kiri). Variabel I digunakan untuk menampung data jumlah
step
yang telah
dilaksakan sistem. Pengujian dilakukan dengan memberikan nilai variabel
input
dengan nilai
output
pada Port A merupakan penjumlahan dari nilai variabel N
(variabel yang menampung data pengendalian motor stepper) dan nilai 2
4(PA.4 = 1,
sebagai tanda polaritas yang diberikan pada motor DC dalam arah maju). Kecepatan
konstan didapat dengan memberikan nilai PWM (Pulse width modulation)
dengan
nilai tetap.
Gambar SK3 Diagram alir pengujian sudut kemudi
3.
Hasil Eksperimen
Hasil yang didapat pada eksperimen pengujian sudut kemudi ini adalah radius
putar R
Refberdasarkan jumlah
step
motor
stepper
. Tabel SK1 menunjukkan hasil
Tabel SK1. Radius putar RRef terhadap jumlah step motor stepper
No Steering target (ST) RRef (cm) Keterangan
1 4 53,89 Kemudi arah kiri
2 20 74,28 Kemudi arah kiri
3 36 138,65 Kemudi arah kiri
4 52 0 Kemudi lurus
5 70 133,15 Kemudi arah kanan
6 86 70,3 Kemudi arah kanan
7 102 48,43 Kemudi arah kanan
4.
Pengolahan data
Dengan menggunakan persamaan 1 s/d 3 untuk data pada Tabel SK1, maka
akan diperoleh radius (R) dan sudut kemudi (
f
) yang selengkapnya ditunjukkan pada
Tabel SK2.
Tabel SK2. Radius putar (R) dan Sudut kemudi (
f
)ST (Steering Target) RRef (cm) R (cm)
(
)
0
f
4 53,89 51,5 16,23884
20 74,28 72 11,76829
36 138,65 136,5 6,271077
52 0 0 0
70 133,15 135 -6,340192
86 70,3 72 -11,76829
102 48,43 50 -16,69924
Untuk mendapatkan suatu persamaan dalam menghitung sudut kemudi
)
(
f
berdasarkan variabel I (jumlah
step motor stepper) maka digunakan analisa
terhadap data sudut kemudi
(
f
)
terhadap variabel ST (Steering Target). Analisa
dilakukan dengan menggunakan
Trendline
yang terdapat pada
Microsoft Excel
.
Langkah pertama yang dilakukan adalah memetakan data sudut kemudi
(
f
)
dan data
variabel ST (Steering Target) dalam bentuk grafik, sumbu x sebagai data ST dan
sumbu y sebagai sudut kemudi
(
f
)
. Kedua membuat garis
trendline
dengan
type
Grafik hubungan anatara ST dan
(
f
)
dipetakan menjadi dua Grafik, yaitu
Grafik hubungan antara ST dan
(
f
)
untuk ST
≤
52 (kemudi berputar berlawanan arah
jarum jam) yang ditunjukkan pada Gambar SK4 dan Grafik hubungan antara ST dan
)
(
f
untuk ST
≥
52 (kemudi berputar searah jarum jam) yang ditunjukkan pada
Gambar SK5.
GRAFIK KEMUDI CLMR BERLAW ANAN ARAH JARUM JAM
4, 16.23884
Gambar SK4 Grafik kemudi CLMR untuk ST < 52
GRAFIK KEMUDI CLMR SEARAH JARUM JAMAN
52, 0
Berdasarkan garis
trendline
dengan menggunakan
type linear
pada Gambar
SK4 dan Gambar SK5 maka persamaan untuk untuk mendapatkan nilai
)
(
f
berdasarkan jumlah
step
(variabel I) ditunjukkan pada persamaan 4.
ï
ï
î
ïï
í
ì
>
+
-=
<
+
-=
52
;
241
,
17
.
3347
,
0
52
;
0
52
;
057
,
18
.
3388
,
0
I
I
I
I
I
PENGUJIAN OPTOCOUPLER
1.
Pendahuluan
Pengujian
optocoupler
merupakan pengujian rangkaian
rotary encoder
untuk
meperkirakan posisi robot dengan teknik
odometry
.
Rotary encoder
yang digunakan
pada penelitian ini menggunakan
rotary encoder
jenis DI-REV1 dari depok
instrument. Rangkaian
roraty encoder
ini terdiri dari dua bagian utama, yaitu
piringan derajat yang terdiri dari 36 lubang pada kelilingnya dan rangkaian sensor
pembaca putaran piringan derajat menggunakan
optocoupler
tipe celah.
Rotasi roda belakang yang terhubung paralel terhadap rangkaian piringan
derajat mengakibatkan perubahan posisi lubang piringan derajat yang menghalangi /
meneruskan cahaya
infra red
terhadap
phototransistor
dikonversi menjadi informasi
digital “0” dan “1”. Data digital yang dihasilkan
optocoupler
selanjutnya digunakan
sebagai
trigger
interupsi pada mikrokontroler. Setiap terjadi intrerupsi maka sebuah
variabel akan dicacah naik (sebagai tanda jumlah lubang piringan derajat yang
terdeteksi). Berdasarkan informasi jumlah interupsi yang terjadi dan total jumlah
lubang
encoder
, maka dapat diketahui jarak tempuh robot dengan menggunakan
persamaan 1.
r
.
.
2
encoder
lubang
jumlah
Total
intrupsi
Jumlah
(cm)
Jarak
=
p
... (1)
2.
Prosedur percobaan
Pengujian dilakukan dengan mengatur posisi kemudi pada sudut 0
0lalu
memberikan kecepatan konstan (Nilai pulse width modulation
tetap) selama selang
waktu 10 detik. Hasil yang didapat adalah jarak tempuh robot secara
real
terdeteksi
optocoupler
. Gambar PO1 menunjukkan rangkaian pengujian
optocoupler
.
Gambar PO.2 menunjukkan program pengujian
optocoupler
dalam bentuk diagram
alir.
S
w
it
c
h
B
a
ta
s
K
e
m
u
d
i
K
ir
i
L
C
D
2x
16
1
1
4
1
3
1
2
1
1
6
5
4
3
2
1
0
K
V
c
c
Gambar PO1 Rangkaian pengujian optocoupler
Keterangan Gambar PO1:
Simbol M yang terhubung dengan IC L293D merupakan motor DC untuk
Gambar PO2 Diagram alir pengujian optocoupler
Keterangan Gambar PO2:
V
: Variabel yang digunakan untuk menampung data PWM
(pulse width
X
: Variabel yang digunakan untuk menampung data hasil cacahan setiap terjadi
interupsi yang di
trigger optocoupler
.
N
: Variabel yang digunakan untuk menampung data pengendalian motor
stepper.
Port A : Digunakan sebagai
Port
output
untuk mengendalikan motor
stepper
berdasarkan nilai variabel N dan memberikan polaritas maju pada motor DC
yang terhubung dengan PA.4 dan PA.5 dengan memberikan nilai 2
4(PA.4 =
1 dan PA.5 = 0).
3.
Hasil Eksperimen
Hasil percobaan pengujian
optocoupler
ditunjukkan pada Tabel PO1.
Tabel PO1 Hasil percobaan
Nilai variabel V Jumlah lubang encoder yang terdeteksi selama 10 detik
Jarak tempuh robot (real) selama 10 detik
350 143 80
370 197 110
390 268 150
4.
Pengolahan data
Berdasarkan data pada Tabel PO1, jarak tempuh robot berdasarkan jumlah
lubang
encoder
yang terdeteksi dapat diperoleh dengan menggunakan persamaan 1.
Secara lengkap hasil perhitungan jarak tempuh beserta
error
terhadap jarak tempuh
real
ditunjukkan pada Tabel PO.2.
Tabel PO.2 Perbandingan jarak(cm) pengukuran dan perhitungan
Nilai variabel V
Jumlah lubang
encoder yang
terdeteksi selama 10 detik
Jarak tempuh robot (real)
selama 10 detik
Jarak tempuh obot
(perhitungan)
selama 10 detik
% error perhitungan jarak
tempuh
350 143 80 79,825 0,21875%
370 197 110 109,969 0,028182%
'Judul Thesis : Implementasi Arsitektur Behavior-Based ' Dengan Menggunakan Fuzzy untuk Navigasi ' Car-Like Mobile Robot Dalam Lingkungan ' Tak Dikenal
'Judul Program : Program Master
' PROGRAM STUDI MAGISTER TEKNIK ELEKTRO
Dim Theta As Single , Sudut As Single , Jarak As Single , Xt As Single Dim Yt As Single , Atheta As Single , Eo As Single , Ep As Single Dim I As Integer , Starget As Integer , Y As Single , Xi As Single Dim Yi As Single , Kuadran As Single , Baca As Byte , Target As Integer Dim Kirim As Integer , V As Integer , N As Byte , Polaritas As Byte Dim A As Byte
Call Putar_kanan() Porta = N
Incr I Waitms 15
Baca = Pinb Loop Until Ep <= 10 Porta = N
End
'---Else
If Baca >= 128 Then Polaritas = 32 Sudut = Sudut + 18.057 Elseif I = 54 Then Sudut = 0
Else
Sudut = -0.3347 * I Sudut = Sudut + 17.241 End If
End Sub
Sub Update() Disable Int0
'Judul Thesis : Implementasi Arsitektur Behavior-Based ' Dengan Menggunakan Fuzzy untuk Navigasi ' Car-Like Mobile Robot Dalam Lingkungan ' Tak Dikenal
'Judul Program : Program Slave-1
' PROGRAM STUDI MAGISTER TEKNIK ELEKTRO Dim Fuzzyfikasiv0 As Single , Fuzzyfikasif0 As Single
Dim Minimum As Single , Fuzzyfikasivx As Single , Fuzzyfikasivsum As Single Dim Fuzzyfikasifx As Single , Fuzzyfikasifsum As Single , Flux1 As Single Dim Flux As Single , Vel As Integer , Hasil1 As Integer , Hasil2 As Integer Dim Kecepatan As Integer , Sudut As Byte , Kirim1 As Byte , Kirim2 As Byte Dim Kirim As Byte , Xt As Integer , Yt As Byte , Count As Byte 'TAMPILAN LCD AWAL SISTEM DIJALANKAN
'---Cls
Home
Bitwait Pind.0 , Set ' tunggu Pind.0 = Incr Count
Loop Until Count = 2 Portd.0 = 1
Kirim = Kirim1 + Kirim2 Portc = Kirim
Sub Fuzzyfikasi()
'himpunan fuzzy NB untuk fungsi keanggotaan Eo If Eo <= -90 Then
Neo = 1
Elseif Eo >= -60 Then Neo = 0
Vel = 350
Neo = Neo / 5
Call Uepf()
'himpunan fuzzy PM untuk fungsi keanggotaan Eo If Eo > 30 And Eo <= 60 Then
'himpunan fuzzy PB untuk fungsi keanggotaan Eo If Eo >= 90 Then
Neo = 1
Neo = Neo / 30 Hasil1 = Fuzzyfikasifx / Fuzzyfikasifsum
Hasil2 = Fuzzyfikasivx / Fuzzyfikasivsum
Minimum = 99
For Fuzzyfikasif0 = 4 To 52 Step 16 Fuzzyfikasiv0 = Fuzzyfikasif0 - Hasil1 Fuzzyfikasiv0 = Abs(fuzzyfikasiv0) If Fuzzyfikasiv0 < Minimum Then Minimum = Fuzzyfikasiv0
Fuzzyfikasifsum = Fuzzyfikasif0 End If
Next
For Fuzzyfikasif0 = 70 To 102 Step 16 Fuzzyfikasiv0 = Fuzzyfikasif0 - Hasil1 Fuzzyfikasiv0 = Abs(fuzzyfikasiv0) If Fuzzyfikasiv0 < Minimum Then Minimum = Fuzzyfikasiv0
Fuzzyfikasifsum = Fuzzyfikasif0 End If
Next
Minimum = 199
End If
Fuzzyfikasiv0 = Fuzzyfikasif0 - Hasil1 Fuzzyfikasiv0 = Abs(fuzzyfikasiv0) If Fuzzyfikasiv0 < Minimum Then Minimum = Fuzzyfikasiv0
Fuzzyfikasifsum = Fuzzyfikasif0 End If
Fuzzyfikasiv0 = Minimum * Vel
Fuzzyfikasivx = Fuzzyfikasivx + Fuzzyfikasiv0 Fuzzyfikasivsum = Fuzzyfikasivsum + Minimum Fuzzyfikasif0 = Minimum * Flux
Fuzzyfikasifx = Fuzzyfikasifx + Fuzzyfikasif0 Fuzzyfikasifsum = Fuzzyfikasifsum + Minimum End Sub
Nep = Nep / 50
Elseif Ep > 100 And Ep < 150 Then Nep = 150 - Ep
Nep = Nep / 50 Else
Nep = 0 End If End Sub
'himpunan fuzzy Far Sub Uepf()
If Ep > 100 And Ep <= 150 Then Nep = Ep - 100
Nep = Nep / 50
Elseif Ep > 150 And Ep < 200 Then Nep = 200 - Ep
Nep = Nep / 50 Else
Nep = 0 End If End Sub
'Himpunan fuzzy Very far Sub Uepvf()
If Ep >= 200 Then Nep = 1
Elseif Ep <= 150 Then Nep = 0
Else
Nep = Ep - 150 Nep = Nep / 50 End If
End Sub
'---'Judul Thesis : Implementasi Arsitektur Behavior-Based ' Dengan Menggunakan Fuzzy untuk Navigasi ' Car-Like Mobile Robot Dalam Lingkungan ' Tak Dikenal
'Judul Program : Program Slave-2
' PROGRAM STUDI MAGISTER TEKNIK ELEKTRO
Config Adc = Single , Prescaler = Auto , Reference = Internal Config Portb = Input Dim Lfc As Integer , Lfr As Integer , Lfl As Integer
Dim Fc As Single , Fso As Single , Fl As Single , Fr As Single
Dim Fuzzyv0 As Single , Fuzzyf0 As Single , Neo As Single , Nep As Single Dim Minimum As Single , Fuzzyvx As Single , Fuzzyvsum As Single
Dim Fuzzyfx As Single , Fuzzyfsum As Single , Flux1 As Single
Dim Flux As Single , Vel As Integer , Hasil1 As Integer , Hasil2 As Integer Dim Kecepatan As Integer , Sudut As Byte , Vifc As Integer
Fr = Lfr ^ -0.9971
Elseif Fl <= 12 Then D1 = 4
Elseif Fr <= 12 Then D3 = 4
Elseif Fc <= 12 Then D2 = 4
'fuzzyfikasi untuk fungsi keanggotaan back side obstacle distance If Btot <= -5 Then
Neo = 1
Neo = 1
Elseif Btot <= -5 Then Neo = 0
'untuk Front side obstacle avoidance N If Fso <= -20 Then
Neo = 1
Elseif Fso >= 0 Then Neo = 0
'untuk Front side obstacle avoidance ZE If Fso > -15 And Fso <= 0 Then
Neo = Fso + 15 Neo = Neo / 15
If Neo > 0 Then Call Near_fc() If Nep > 0 Then Vel = 350 Flux = 4
Call Alpha_predikat() End If
Call Far_fc() If Nep > 0 Then Vel = 390 Flux = 52
Call Alpha_predikat() End If
End If
'untuk Front side obstacle avoidance P If Fso >= 20 Then
Neo = 1
Elseif Fso <= 0 Then Neo = 0
Else
Neo = Fso / 20 End If
If Neo > 0 Then Call Near_fc() If Nep > 0 Then Vel = 350 Flux = 102
Call Alpha_predikat() End If
Call Far_fc() If Nep > 0 Then Vel = 370 Flux = 86
Call Alpha_predikat() End If
End If End Sub
Sub Olah()
Hasil1 = Fuzzyfx / Fuzzyfsum Hasil2 = Fuzzyvx / Fuzzyvsum
Minimum = 99
For Fuzzyf0 = 4 To 52 Step 16 Fuzzyv0 = Fuzzyf0 - Hasil1 Fuzzyv0 = Abs(fuzzyv0)
If Fuzzyv0 < Minimum Then Minimum = Fuzzyv0
Fuzzyfsum = Fuzzyf0 End If
Fuzzyv0 = Abs(fuzzyv0)
For Fuzzyf0 = 330 To 370 Step 20 Fuzzyv0 = Fuzzyf0 - Hasil2
Fuzzyv0 = Abs(fuzzyv0)
Fuzzyv0 = Minimum * Vel Fuzzyvx = Fuzzyvx + Fuzzyv0 Fuzzyvsum = Fuzzyvsum + Minimum Fuzzyf0 = Minimum * Flux
Fuzzyfx = Fuzzyfx + Fuzzyf0 Fuzzyfsum = Fuzzyfsum + Minimum End Sub
Sub Flux_kiri() If Lsa <= 3 Then Nep = 1
Nep = Lsa - 3
Elseif Fc >= 60 Then Nep = 0
If Kirim1 >= 5 Then Lsa = 7
Elseif Kirim1 <= 3 Then Lsa = 1
End If
End If
Elseif Dtot >= 4 And Fl < 50 And Fr < 50 And Fc < 75 Then Call Move_backward()
Call Olah() Call Surat()
Kirim = Kirim1 + Kirim2
Kirim = Kirim + 128 'polaritas terbali Mundur = 1
Rintangan = 1 Portc = Kirim + 64 Elseif Dtot >= 4 Then Call Move_backward() Call Olah()
Call Surat()
Kirim = Kirim1 + Kirim2
Kirim = Kirim + 128 'polaritas terbali Mundur = 1
Portc = Kirim + 64 End If
End If
Toggle Portd.1 End If