• Tidak ada hasil yang ditemukan

Dalam perancangan perangkat lunak ini terdiri dari perancangan program master, perancangan program slavel-1, dan perancangan program slave-2.

Perancangan program dirancang dengan menggunakan bahasa Bacom-AVR Compiler. Gambar 3.22 menunjukkan diagram alir perancangan program sistem secara keseluruhan.

Gambar 3.22 Diagram alir perangkat lunak sistem keseluruhan

Perancangan program master meliputi 7 sub rutin, yaitu sub rutin kemudi awal, sub rutin putar kiri, sub rutin putar kanan, sub rutin data-target, sub rutin pengendalian actuator, sub rutin update-posisi, dan sub rutin sudut-kemudi.

Perancangan program slave-1 meliputi 4 sub rutin, yaitu sub rutin input-target, sub rutin goal seeking behavior, sub rutin switch, dan sub rutin output-digital.

Perancangan program slave-2 meliputi 5 sub rutin, yaitu sub rutin sensor-jarak, sub rutin behavior-controller, sub rutin obstacle avoidance behavior, sub rutin move backward behavior, dan sub rutin output-digital.

3.6.1. Program master

Program master ditanamkan pada mikrokontroler ATMega8535 sistem master dengan alokasi pin pada setiap port mikrokontroler seperti yang ditunjukkan pada Gambar 3.6. Program ini memiliki tugas untuk menempatkan posisi kemudi pada sudut 00 pada saat sistem dijalankan, memperbaharui informasi position error dan orientation error serta mengendalikan actuator (motor stepper dan motor DC) sesuai dengan data yang diterima dari behavior-controller.

Saat program master dijalankan, proses awal adalah menjalankan sub rutin kemudi awal untuk mencari posisi sudut kemudi pada sudut 00 (roda depan lurus kedepan). Setelah posisi kemudi tepat pada posisi 00, langkah selanjutnya adalah menunggu ada perubahan logika pada pin PD.1 (PD.1 di trigger PD.1 pada sistem slave-2 ) sebagai indikator untuk memulai memproses data digital (data biner 8-bit pada port B) menjadi data target

(

x ,T yT

)

pada saat variabel Target_Awal < 2 atau memproses data tersebut dengan menjalankan sub rutin pengendalian actuator pada saat variabel Target_Awal = 2. Gambar 3.23 menunjukkan diagram alir program master.

Pemrosesan data digital menjadi data target akan dilaksanakan pada sub rutin data target, sedangkan pemerosesan data digital menjadi pengendalian motor stepper dan motor DC dilaksanakan pada sub rutin pengendalian actuator.

Gambar 3.23 Diagram alir program master

Keterangan Gambar 3.23:

Target_Awal = Sebuah variabel yang digunakan untuk mendeskripsikan keadaan:

- Target_Awal = 0: Proses input target x . T - Target_Awal = 1: Proses input target y . T

- Target_Awal = 2: Proses menjalankan sub rutin pengendalian actuator.

I = Sebuah variabel yang digunakan untuk menampung jumlah step motor stepper I = 0 saat switch batas kemudi kiri dalam kondisi “ON” (switch terhubung).

X = Sebuah variabel yang digunakan untuk mendeskripsikan keadaan pada sub rutin update posisi dengan fungsi sebagai berikut:

- X = 0: Proses perhitungan berdasarkan posisi aktual (yang dihasilkan rotary encoder) sampai proses mendapatkan EP dan EO.

- X = 1: Proses mengolah data EP menjadi data digital (8-bit) dan ditampilkan pada Port C.

- X = 2: Proses mengolah data EO menjadi data digital (8-bit) dan ditampilkan pada Port C.

Y = Sebuah variabel yang digunakan untuk menampung jumlah cacahan setiap terjadi interupsi yang di trigger rotary encoder yang akan digunakan sebagai data aktual posisi.

N = Sebuah variabel yang digunakan untuk menampung data pengendalian motor stepper.

L = Sebuah konstanta baseline (jarak sumbu roda depan terhadap sumbu roda belakang).

Polaritas = Sebuah variabel yang digunakan untuk menampung data pemberian polaritas motor DC.

Informasi mengenai posisi robot selalu diperbaharui dengan memetakan ruang aktuasi (νt,φt)ke ruang konfigurasi (x,y,θ) yang dilaksanakan pada sub rutin update posisi. Data aktuasi ν merupakan data kecepatan aktual melalui proses t perhitungan possi pada variabel Y (nilai variabel Y akan dicacah naik setiap terjadi intrupsi yang di trigger rotary encoder).

3.6.1.1. Sub rutin kemudi awal

Sub rutin kemudi awal memiliki tugas untuk menempatkan posisi kemudi pada sudut 00 (posisi roda depan lurus kedepan). Skenario yang dilaksanakan untuk mencapai posisi kemudi 00 dengan menjalankan sub rutin putar kiri sampai logika pada PD.0 = 0 (swith batas kemudi kiri dalam kondisi “ON”). Setelah PD.0 =0, maka dilanjutkan dengan menjalankan sub rutin putar kanan sampai dengan nilai variabel I

= 52 (Nilai 52 merupakan posisi pada φ = 00 yang didapat melalui percobaan, data terlampir pada halaman lampiran kaliberasi sudut kemudi).

Pengendalian motor stepper dilaksanakan dengan menggunakan aturan kontrol full step, seperti yang ditunjukkan pada Tabel 3.10.

Tabel 3.10 Kontrol full step motor stepper unipolar [23]

FULL STEP

Logika TTL Pada Lilitan Searah Jarum Jam Berlawanan

Arah Jarum Jam No L3 L2 L1 L0 L3 L2 L1 L0

1 1 0 0 0 0 0 0 1

2 0 1 0 0 0 0 1 0

3 0 0 1 0 0 1 0 0

4 0 0 0 1 1 0 0 0

Dari Tabel 3.10 memperlihatkan urutan pemberian logika pada L0 s.d. L3 untuk arah putaran kanan (searah jarum jam) dan kiri (berlawanan arah jarum jam). Dengan menempatkan L3 sebagai LSB (Less Significant Bit) dan L0 sebagai MSB (Most Significant Bit) dengan hubungan pada Pin A.0 untuk L3, Pin A.1 untuk L2, Pin A. 2 untuk L1, dan Pin A.3 untuk L0. Gambar 3.24 menunjukkan diagram alir sub rutin kemudi awal.

Gambar 3.24 Diagram alir sub rutin kemudi awal

Variabel I digunakan untuk menampung jumlah step motor stepper.

Berdasarkan hasil kaliberasi sudut kemudi (Hasil terlampir pada halaman lampiran pengujian sudut kemudi) nilai variabel I = 52 dari batas switch kiri merupakan posisi kemudi lurus kedepan (φ = 00).

3.6.1.2. Sub rutin putar kiri

Sub rutin ini memiliki tugas untuk mengendalikan motor stepper dengan arah putaran berlawanan dengan arah jarum jam. Untuk mengendalikan motor stepper dengan gerakan berlawanan arah jarum jam, skenario yang dilakukan adalah dengan memberikan logika “1” secara sekuensial mulai dari MSB (L0) ke LSB (L3) dan setelah mencapai LSB (L3) kembali lagi ke MSB sesuai dengan Tabel 3.10, diagram alir program putar kiri dirancang seperti Gambar 3.25.

Port A sebagai output yang terhubung ke driver motor stepper dan motor DC diisi dengan nilai variabel N + nilai variabel polaritas. Nilai variabel polaritas yang berada pada PA.4 dan PA.5 berfungsi untuk mengatur arah putaran motor DC yang diatur pada sub rutin pengendalian actuator.

Output dengan menambahkan polaritas memiliki fungsi agar saat pengendalian motor stepper dilakukan tidak mempengaruhi pengendalian yang dilakukan untuk motor DC. Pengendalian motor stepper putar kiri dilakukan dengan cara memberikan logika 1 secara sekuensial untuk data biner 4-bit dari PA.3 s.d. PA.0 secara berulang yang nilainya ditampung dalam variabel N. Tabel 3.11 menunjukkan hubungan nilai variabel N terhadap PortA saat sub rutin putar kiri.

Tabel 3.11 Hubungan variabel N untuk putar kiri Nilai variabel N (dalam desimal)

N = (2.PA.3)3 + (2.PA.2)2 + (2.PA.1)1 + (2.PA.0)0 PA.3 PA.2 PA.1 PA.0

8 1 0 0 0

4 0 1 0 0

2 0 0 1 0

1 0 0 0 1

Berdasarkan Tabel 3.11 agar proses dapat berulang, maka saat N = 1 maka langkah selanjutnya adalah dengan memberikan nilai variabel N = 8.

3.6.1.3. Sub rutin putar kanan

Sub rutin ini memiliki tugas untuk mengendalikan motor stepper dengan arah putaran searah jarum jam. Skenario yang dilakukan untuk menggerakkan motor

stepper dengan gerakan searah jarum jam dengan memberikan logika “1” secara sekuensial mulai dari LSB (L3) ke MSB (L0) dan setelah mencapai MSB (L0) kembali lagi ke LSB (L3) sesuai dengan Tabel 3.10, diagram alir program putar kanan dirancang seperti Gambar 3.26.

Gambar 3.26 Diagram alir sub rutin putar kanan

Output pada Port A dengan menambahkan polaritas memiliki fungsi agar saat pengendalian motor stepper dilakukan tidak mempengaruhi pengendalian yang dilakukan untuk motor DC. Pengendalian motor stepper putar kanan dilakukan dengan cara memberikan logika 1 secara sekuensial untuk data biner 4-bit dari PA.0 s.d. PA.3 secara berulang yang nilainya ditampung dalam variabel N. Tabel 3.12 menunjukkan hubungan nilai variabel N terhadap PortA saat sub rutin putar kanan.

Tabel 3.12 Hubungan variabel N untuk putar kanan Nilai variabel N (dalam desimal)

N = (2.PA.3)3 + (2.PA.2)2 + (2.PA.1)1 + (2.PA.0)0 PA.3 PA.2 PA.1 PA.0

1 0 0 0 1

2 0 0 1 0

4 0 1 0 0

8 1 0 0 0

Berdasarkan Tabel 3.12 agar proses dapat berulang, maka saat N = 8 maka langkah selanjutnya adalah dengan memberikan nilai variabel N = 1.

3.6.1.4. Sub rutin data target

Sub rutin ini memiliki tugas mengolah data digital (data dari sub rutin input target pada sistem slave-1 yang telah diolah dalam bentuk biner 8-bit) pada port B (port B difungsikan sebagai input) menjadi data target (xT,yT)dalam satuan cm.

Skenario yang dilakukan dengan membedakan nilai variabel Target_Awal untuk data x dan T y . Saat variabel Target_Awal = 0 maka data tersebut merupakan data T x , T data y terjadi saat variabel Target_Awal = 1. Gambar 3.27 menunjukkan diagram T alir sub rutin data target.

Data pada port B terdiri dari 7-bit data target (PB.0 s.d. PB.6) dan 1-bit (PB.7) sebagai polaritas (tanda data bernilai positif atau negatif). Jika PB.7 = 1 maka data pada Port B bernilai positif, dan jika PB.7 = 0 maka data pada Port B bernilai begatif. Nilai variabel target merupakan penjumlahan seluruh nilai data pada Port B, jika PB.7 = 1 maka variabel target akan menjadi (2.PB.0)0 + (2.PB.1)1 + (2.PB.2)2 +

(2.PB.3)3 + (2.PB.4 )4 + (2.PB.5)5 + (2.PB.6)6 + (128) yang artinya nilai variabel target ≥ 128. Jika PB.7 = 0 maka nilai variabel target < 128.

Gambar 3.27 Diagram alir sub rutin data target

3.6.1.5. Sub rutin pengendalian actuator

Sub rutin ini memiliki tugas untuk mengendalikan motor stepper (kemudi pada roda depan) dan motor DC (arah putaran dan kecepatan roda belakang) sesuai input pada Port B. Adapun fungsi pin pada port B pada saat sub rutin ini dijalankan ditunjukkan pada Gambar 3.28.

PB.0 PB.1 PB.2 PB.3 PB.4 PB.5 PB.6

PB.7

{ { {

Data sudut kemudi Data kecepatan

(PWM) Data polaritas

Gambar 3.28 Fungsi pin port B pada sub rutin pengendalian actuator

Dalam perancangan sub rutin pengendalian actuator, digunakan variabel bantu, yaitu STBIT, ST, VBIT, Polaritas, dan V. Gambar 3.29 menunjukkan diagram alir sub rutin pengendalian actuator.

Skenario yang dilaksanakan dengan menggunakan variabel STBIT untuk menampung data digital sudut kemudi yang selanjutnya diproses untuk mendapatkan nilai variabel ST (steering target) yang menjadi acuan (variabel I) saat menjalankan sub rutin putar kiri/sub rutin putar kanan. Variabel VBIT digunakan untuk menampung data digital kecepatan yang selanjutnya akan diproses untuk mendapatkan nilai PWM yang ditampung dalam variabel V. Nilai input PB.6 digunakan untuk mengatur (ON/OFF) motor DC, sedangkan input PB.7 digunakan untuk mengatur polaritas motor DC (arah putaran roda belakang CLMR maju/mundur).

Pengendalian actuator

Polaritas = 32 Polaritas = 16

Tidak

Gambar 3.29 Diagram alir sub rutin pengendalian actuator

Output dari sub rutin ini mengatur nilai port A berdasarkan penjumlahan variabel N dengan variabel polaritas untuk mengendalikan motor DC dan motor stepper.

3.6.1.6. Sub rutin update posisi

Sub rutin update posisi memiliki tugas untuk mengetahui posisi robot terhadap target secara real-time. Input program ini adalah kordinat target (xt,yt), sudut kemudi (φ , dan kecepatan linear )) (ν aktual yang didapat melalui perhitungan odometry. Output sub rutin ini adalah Position Error (EP) dan Orientation Error (EO) yang merupakan input crisp yang digunakan gola seeking behavior dan Position Error (EP) juga digunakan sebagai parameter penentuan pencapaian target menjadikan sub rutin ini memiliki peranan yang penting dalam pencapaian target.

Persamaan 2.7 s.d. 2.9 digunakan untuk memetakan ruang aktuasi kedalam ruang konfigurasi dalam kordinat global. Sistem kordinat CLMR secara umum menggunakan 2 sistem kordinat, yaitu

(

X ,Y

)

sebagai kordinat global dan

) ,

(xR yR sebagai kordinat lokal robot, Gambar 3.30 menggambarkan sistem kordinat CLMR.

Pada keadaan awal kordinal global akan sejajar dengan kordinat lokal berada pada kordinat (0,0), maka Position Error untuk keadaan awal (ditunjukkan pada Gambar 3.30 dalam garis berwarna hijau) dinotasikan sebagai EP(0) dapat diketahui dengan persamaan 2.10.

x

R

Gambar 3.30 Sistem kordinat CLMR

Keterangan: dengan menggunakan persamaan 3.33.

2

Orientation Error dalam keadaan awal ini dinotasikan sebagai EO(0) dapat diketahui

Saat robot bergerak dan terjadi perubahan posisi menjadi (x1,y1)(pada Gambar 3.30 digambarkan dalam garis berwarna biru), maka Position Error yang dinotasikan dengan EP(1) dan Orientation Error yang dinotasikan sebagai EO(1) dapat diketahui dengan menggunakan persamaan 2.10 s.d. 2.14. Dengan mengetahui EP(1) dan EO(1)

maka posisi robot dalam kordinat lokal (xR,yR)dapat diketahui dengan menggunakan persamaan trigonometri seperti yang ditunjukkan persamaan 3.35 untuk (xR)dan persamaan 3.36 untuk (yR).

Dalam perancangan program update posisi digunakan sebuah variabel X yang memiliki fungsi membantu urutan proses yang akan dilaksanakan. Skenario yang

dilakukan pada sub rutin ini adalah, saat X = 0, maka proses perhitungan kecepatan actual berdasarkan perhitungan odometry dilaksanakan, dilanjutkan dengan menjalankan sub rutin sudut kemudi untuk memetakan φ dari variabel I (jumlah step t yang dihitung dari batas kiri kemudi). Setelah ν dan t φ diketahui, selanjutnya t dilakukan proses pemetaan dari ruang aktuasi ke ruang konfigurasi dan mencari nilai EP dan EO.

Pada saat X = 1, proses mengirim output secara digital melalui port C. Port C

= EP, dan Port C = 130 apabilai EP ≥ 130. Pada saat X = 2, proses untuk mengirimkan EO. Langkah awal adalah mengembalikan nilai variel X menjaadi 0, sebagai tanda setelah proses pengiriman output EO telah selesai dilaksanakan proses selanjutnya akan berulang ke proses perhitungan untuk mendapatkan nilai EP dan EO. Pada proses output ini, EO akan bernilai negatif apabila target berada di sebelah kiri robot, dan akan bernilai positif apabila target berada di sebelah kanan robot. Data dikirim secara digital (biner 8-bit) melalui port C. Data EO bernilai 0 s.d. 90 (EO ≥ 90, EO = 90).

Persamaan 3.37 menunjukkan nilai pada Port C. Gambar 3.31 menunjukkan diagram alir sub rutin update posisi.



encoder r

Gambar 3.31 Diagram alir sub rutin update posisi

3.6.1.7. Sub rutin sudut kemudi

Pada sub rutin ini akan melaksanakan pemetaan sudut kemudi dari variabel I (jumlah step dari batas kemudi kiri) menjadi sudut kemududi ( 0). Gambar 3.32 menunjukkan diagram alir sub rutin sudut kemudi.

φ

φ φ

Gambar 3.32 Diagram alir sub rutin sudut kemudi

Persamaan yang digunakan untuk mendapatkan nilai sudut kemudi (φ berdasarkan ) kaliberasi sudut kemudi (kaliberasi sudut kemudi dilampirkan pada halaman lampiran).

3.6.2. Program slave-1

Program slave-1 ditanamkan pada mikrokontroler ATMega8535 pada sistem slave-1, dengan pengalokasian pin mikrokontroler seperti yang ditunjukkan pada Gambar 3.8. Program ini memiliki tugas untuk menerjemahkan setiap penekanan switch count_up, switch count_down, dan switch select menjadi informasi target

) ,

(xT yT dan melaksanakan pemetaan Position Error dan Orientation Error menjadi ruang aktuasi (νt,φt) dengan menggunakan pengendali FLC pada goal seeking behavior. Gambar 3.33 menunjukkan diagram alir program slave-1.

Program slave-1

Port B = LCD, Port A = 0, Port C = 0 PD.0 = 1, PD.1 = 1 PD.3 =1. PD.4 = 1, Port C = 0

PD.6 = 1, Count = 0 Target = 0, Count_1 = 0

Ada perubahan logika pada PD.0 ?

Count < 2 ?

Ya

Input target

Ya Goal seeking

behavior

Tidak

Toggle PD.1 Delay Toggle PD.1

End Tampilan LCD

“Input Target Xt, Yt”

“--LOADING --“

Tidak

Gambar 3.33 Diagram alir program slave-1

Program ini akan aktif, setelah ada trigger berupa perubahan bit pada PD.0 (dari logika 0 ke logika 1 atau sebaliknya dari logika 0 ke logika 1) yang di kendalikan sistem master.

Variabel count yang menampung data cacahan akan membatu urutan pelaksanaan proses. Saat variabel count < 2 sebagai tanda target belum dimasukkan

atau proses memasukkan target belum selesai. Selama variabel count < 2, maka proses yang dilaksanakan adalah menjalankan sub rutin input target. Setelah variabel count = 2 proses dilanjutkan untuk menjalankan sub rutin goal seeking behavior.

Setelah sub rutin input target atau sub rutin goal seeking behavior dijalankan, akan dikirimkan 1 pulse melalui PD.1 sebagai trigger intrupsi pada sistem slave-2 tanda data dari sistem slave-1 (pada port C) telah selesai di update dan siap untuk diproses sistem slave-2.

3.6.2.1.Sub rutin input-target

Sub rutin ini menangani LCD sebagai informasi target, “switch count_up”,

“switch count_down” dan “switch select”. Skenario pada sub rutin ini adalah saat variabel count = 0, menandakan target pada sumbu X dan pada sumbu Y belum dimasukkan. LCD akan menampilkan informasi “masukkan nilai x ” dan sub rutin T switch-input akan dijalankan. Saat variabel count = 1, menandakan target pada sumbu Y belum dimasukkan maka LCD akan menampilakan informasi “masukkan nilai y ” T dan sub rutin switch-input akan dijalankan. Gambar 3.34 menunjukkan diagram alir sub rutin input-target.

Selama proses pada sub rutin switch-input dijalankan LCD akan menampilkan informasi nilai target yang sedang dimasukkan dengan nilai kelipatan 10 cm. Sub rutin switch-input akan terus diaktifkan selama “switch select” yang terhubung dengan PD.6 belum ditekan.

Gambar 3.34 Diagram alir sub rutin input- target

Saat “switch select” ditekan, maka akan ada perubahan logika 1 menjadi logika 0 pada PD.6, keadaan ini akan menghentikan sub rutin switch-input dan proses akan menunggu “switch select” dilepas. Saat “switch select” dilepas, maka akan ada perubahan logika 0 menjdai logika 1 pada PD.6, keadaan ini akan mengakhiri proses penginputan dan menyimpan nilai input yang didapat dari sub rutin switch-input dalam variabel target. Data target dapat bernilai positif atau negatif, agar dapat membedakan data positif atau negatif saat mengirimkan data target secara digital (biner 8-bit) pada port C, digunakan persamaan 3.38.



Dengan menggunakan persamaan 3.38 untuk mendapat nilai output pada port C, dapat mengatasi pengiriman data target dengan tanda positif atau negatif. Dengan memanfaatkan bit MSB pada data 8-bit sebagai tanda data positif, maka data target maksimum menjadi 127 x 10 cm.

Langkah terakhir adalah dengan mencacah naik variabel count sebagai tanda untuk melanjutkan ke proses selanjutnya.

3.6.2.2. Sub rutin switch-input

Sub rutin ini menangani pencacah naik pada variabel target, saat terjadi perubahan logika 0 ke logika 1 dan kembali ke logika 0 pada PD.3 (“switch count_up” ditekan dan dilepas). Proses pencacah turun pada variabel target akan dilaksanakan saat terjadi perubahan logika 0 ke logika 1 dan kembali ke logika 0 pada PD.4 (“switch count_down” ditekan dan dilepas). Gambar 3.35 menunjukkan diagram alir sub rutin switch-input.

Gambar 3.35 Diagram alir sub rutin switch-input

3.6.2.3.Sub rutin goal seeking behavior

Sub rutin ini memiliki tugas untuk memetakan crisp input EP dan EO menjadi data sudut kemudi dan kecepatan. Pada sub rutin ini selain mengimplementasikan perancangan goal seeking behavior, terdapat proses pengambilan input crisp EP, EO

dan menjalankan sub rutin output digital untuk memetakan crisp output menjadi data digital (biner 8-bit).

Skenario pada sub rutin ini menggunakan input crisp (EP dan EO) berasal dari sistem master yang dikirim secara digital (biner 8-bit) ke Port A sistem slave-1.

Variabel count_1 digunakan untuk mengatur pengambilan data pada Port A, sebagai input crisp fuzzyfikasi (count_1 = 0 data pada port A merupakan input crisp EP, data pada port A disimpan dalam variabel EP dan count_1 = 1 data pada Port A merupakan input crisp EO, data pada port A disimpan dalam variabel EO). Gambar 3.36 menunjukkan diagram alir sub rutin goal seeking behavior.

Pada saat pengambilan data EO, data harus dikembalikan dalam kondisi sebenarnya EO akan bernilai positif bila PA.7 bernilai “1” (nilai variabel EO ≥ 128) maka nilai EO sebenarnya menjadi “EO – 128” dan EO akan bernilai negatif bila PA.7 bernilai “0” (nilai variabel EO < 128) maka nilai EO sebenarnya menjadi “0 – EO”.

Data EP dan EO selanjutnya akan diproses melalui defuzzyfikasi, evaluasi aturan, dan defuzyfikasi. Crisp output dari defuzzyfikasi akan diproses sub rutin output-digital menjadi data digital yang ditampung dalam variabel kirim, selanjutnya nilai port C akan diisi dengan data pada variabel kirim.

ν φ Kecepatan Kemudi

=

=

Gambar 3.36 diagram alir sub rutin goal seeking behavior

3.6.2.4.Sub rutin output-digital

Sub rutin ini memetakan crisp output berupa sudut kemudi ( 0) dan kecepatan linear (cm/s) menjadi data digital untuk dikirimkan melalui port C. Gambar 3.37 menunjukkan diagram alir sub rutin output digital.

Gambar 3.37 Diagram alir sub rutin output-digital

Skenario pada sub rutin ini adalah mengkondisikan sudut kemudi (φ (output ) behavior) dengan interval nilai 1 s.d. 7 dan ditampung dalam variabel NK, lalu ν dengan nilai 8, 16, dan 32 dalam variabel NV.

Variabel kirim digunakan untuk menampung data kemudi dan kecepatan yang merupakan penjumlahan variabel NK dan NV.

3.6.3. Program slave-2

Program slave-2 ditanamkan pada mikrokontroler ATMega8535 pada sistem slave-2, dengan pengalokasian pin mikrokontroler seperti yang ditunjukkan pada Gambar 3.8. Gambar 3.38 menunjukkan diagram alir program slave-2.

Gambar 3.38 Diagram alir program slave-2

Program ini memiliki tugas melaksanakan pembacaan sensor jarak, pengendalian obstacle avoidance behavior, pengendalian move backward behavior, dan sebagai behavior-controller untuk menentukan pengendalian actuator berdasarkan behavior yang memiliki perioritas tinggi.

Saat belum terjadi intrupsi, proses pembacaan data sensor jarak depan (FL, FC, dan FR) serta pembacaan data sensor belakang (BL dan BR) dilaksanakan dengan sub rutin sensor-jarak. Saat terjadi intrupsi dan nilai pada variabel count < 2, maka data pada port B akan diteruskan ke Port C, nilai variabel count dinaikan satu tingkat, dan mengubah nilai logika pada PD.1 sebagai trigger pada sistem master.

Keadaan ini merupakan proses input data, dari sistem slave-1 menuju sistem master melalui sistem slave-2.

Pada saat count = 2, proses yang dilakukan pada sistem slave-2 hanya menaikan satu tingkat nilai variabel count dan mengubah logika pada PD.1. Pada keadaan ini sistem master baru mengirimkan data EP ke sistem slave-1 dan menunggu perubahan logika pada PD.1 sistem slave-2 sebagai trigger sistem master mengirimkan data EO.

Pada saat count = 3, data pada port B merupakan crisp output goal seeking behavior dalam bentuk digital. Pada saat count = 3, nilai variabel count akan diturunkan satu tingkat dan sub rutin behavior-controller akan diaktifkan untuk menentukan behavior yang memiliki perioritas tinggi untuk mengendalikan actuator.

Setelah sub rutin behavior-controller dilaksanakan maka diakhiri dengan memberikan

3.6.3.1. Sub rutin sensor-jarak

Sub rutin ini memiliki tugas untuk mendapatkan data digital pembacaan rintangan dari senor FL, FC, FR, BL, dan BR dan memetakan data tersebut menjdai data jarak (cm). Sub rutin ini akan meghasilkan output DT dan BDT yang akan menjadi input sub rutin behavior-controller. Gambar 3.39 menunjukkan diagram alir sub rutin sensor jarak.

Sensor- jarak FR = 5469,7.VFR -0,9971 Jika FR ≥ 70 maka FR = 70

Gambar 3.39 Diagram alir sub rutin sensor-jarak

Dalam perancangan sub rutin ini Port A difungsikan sebagai ADC untuk memetakan output sensor jarak (Sharp GP2D12 untuk sensor depan dan Sharp GP2D120 untuk sensor belakang) dalam tegangan analog menjadi data digital.

Skenario pada sub rutin ini, variabel x digunakan untuk menampung data cacahan sebagai acuan perulangan pembacaan sensor. Pembacaan untuk setiap sensor dilaksanakan sebanyak 10 kali pembacaan untuk setiap sensor yang disimpan dalam variabel VFL untuk sensor depan kiri, VFC untuk sensor depan tengah, VFR untuk data sensor depan kanan, VBL untuk data sensor belakang kiri, dan VBR untuk data sensor belakang kanan. Rata-rata data sensor akan dikonversi menjadi jarak (cm) dengan menggunakan model yang telah ditentukan (berdasarkan data dan analisa

Skenario pada sub rutin ini, variabel x digunakan untuk menampung data cacahan sebagai acuan perulangan pembacaan sensor. Pembacaan untuk setiap sensor dilaksanakan sebanyak 10 kali pembacaan untuk setiap sensor yang disimpan dalam variabel VFL untuk sensor depan kiri, VFC untuk sensor depan tengah, VFR untuk data sensor depan kanan, VBL untuk data sensor belakang kiri, dan VBR untuk data sensor belakang kanan. Rata-rata data sensor akan dikonversi menjadi jarak (cm) dengan menggunakan model yang telah ditentukan (berdasarkan data dan analisa

Dokumen terkait