BAB IV IMPLEMENTASI PERANGKAT LUNAK
Ada beberapa hal yang harus diperhatikan sebelum program mobil automatis dibuat dan pada akhirnya dapat dijalankan dengan baik, cara membuat
program dan cara mengimplementasikan program yang sudah dibuat.
4. 1.
Kebutuhan Perangkat Sistem
Perangkat yang dibutuhkan dalam pembuatan simulasi mobil menggunakan ATMega8535 ini meliputi perangkat keras hardware dan
perangkat lunak software Adapun perangkat keras yang dibutuhkan adalah sebagai berikut :
a. PC diatas pentium 3, yang memiliki serial port COM1COM2. b. Hard Disk dengan kapasitas minimum 500 Kb
c.
Downloader serial untuk AVR. Sedangkan perangkat lunak yang dibutuhkan adalah sebagai berikut :
a.
Windows XP SP2 sebagai sistem operasi
b.
CodeVision AVR sebagai program compiler
4. 2.Implementasi Pemrograman
Untuk memulai pemrograman jalankan CodeVision AVR yang terdapat di C:cvavrbincvavr.exe
Gambar 4.1 Folder Tempat Program CodeVision AVR
50
Kemudian klik menu File-New. Pilih Project, kemudian klik OK
Gambar 4.2 Tahap awal pembuatan program
Pilih wizard avr, kemudian pilih chip yang akan digunakan, yaitu ATMega8535 dengan clock 11.0592.
Gambar 4.3 Pemilihan Chip dan Clock yang akan digunakan
Setelah memilihi chip yang digunakan, selanjutnya konfigurasikan masing-masing port yang akan digunakan, port yang akan digunakan adalah port
A sebagai port untuk sensor warna, konfigurasi port a dapat dilihat pada gambar
4.4a, port B untuk LCD konfigurasi port B dapat dilihat pada gambar 4.4b, port C untuk driver motor konfigurasi port C dapat dilihat pada gambar 4.4c,
port D untuk sensor garis konfigurasi port D dapat dilihat pada gambar 4.4d.
a
b .....
c d Gambar 4.4 konfigurasi port yang akan digunakan
Karena sensor warna menggunakan Pin ADC maka kita perlu mengatur konfigurasi ADCnya juga, dapat dilihat pada gambar 4.5a. Dan untuk
penggunaan delay maka konfigurasi timer juga diperlukan, konfigurasi timer dapat dilihat pada gambar 4.5b, berikut ini konfigurasi ADC dan timer :
a b Gambar 4.5 Konfigurasi timer dan ADC.
Setelah selesai, klik menu File-Generate, Save and Exit. Lalu akan muncul halaman untuk memasukkan code program.
Berikut ini potongan program simulasi mobil automatis :
void scan
{ sensor=PIND;
sensor=0b00111111; switch
sensor {
case 0b00000001:
maju70,0 ; x=1; z=4;
break ;
case 0b00000011:
maju90,30; x=1; z=4;
break ;
case 0b00000010:
maju100,50; x=1; z=4;
break ;
case 0b00000110:
maju100,60; x=1; z=4;
break ;
case 0b00000100:
maju100,80; x=1; z=4;
break ;
case 0b00001100:
maju100,100; z=4;
break ;
case 0b00001000:
maju80,100; x=0; z=4;
break ;
case 0b00011000:
maju60,100; x=0; z=4;
break ;
case 0b00010000:
maju50,100; x=0; z=4;
break ;
case 0b00110000:
maju30,90; x=0; z=4;
break ;
case 0b00100000:
maju0,70; x=0; z=4;
break ;
case 0b00111111:
belka90,50; x=0; z=4;
break ;
case 0b00000000:
if x==1 belka 90,50;
else belki 50,90;
break ;
} }
Code di atas adalah code untuk scan garis hitam, fungsi ini digunakan agar mobil tetap berada di jalur yang ditentukan, yaitu tetap mengikuti garis
hitam. Jika sensor berada di atas garis hitam maka sensor akan bernilai 1, dan jika berada di garis putih maka sensor akan bernilai 0. Setelah mengecek garis lintasan
mobil digerakkan sesuai posisinya dengan menggunakan fungsi maju a,b. posisi x merupakan indicator tempat terakhir mobil berada, jadi jika mobil keluar garis
lintasan maka mobil akan bisa kembali dengan segera. Contoh:
case 0b00000100:
maju100,80; x=1; z=4; break
; 1 case
0b00001000: maju80,100; x=0; z=4;
break ; 2
Jalan dari code 1 adalah jika sensor KI terkena garis hitam sedang yang lain membaca background putih, kemudian mobil akan berbelok ringan motor
kiri maju cepat, motor kanan maju ringan dan x diset 1, 1 berarti kondisi ketika mobil berada di sebelah kiri garis hitam, sedangkan code 2 adalah jika sensor KA
terkena garis hitam sedang yang lain terkena background putih, dan x diset=0, berarti posisi mobil berada di sebelah kanan garis hitam.
Dengan mengingat keberadaan mobil maka ketika mobil keluar jalur, maka mobil akan berbelok sesuai dengan kondisi keberadaan mobil yang terakhir
diingat.
case 0b00000000:
if x==1 belka 90,50;
else belki 50,90;
break ;
Jika x=1, kondisi mobil terkahir berada di sebelah kiri lintasan maka secara otomatis mobil akan langsung berbelok kanan sampai menemukan garis
lintasan yang tepat, jika x=0, kondisi mobil terkahir di sebelah kanan lintasan maka secara otomatis mobil akan langsung berbelok kiri sampai menemukan garis
lintasan yang tepat. Selain melaju di garis luru mobil juga akan dihadapi dengan lintasan
yang memiliki perempatan, dan jika menghadapi perempatan mobil akan langsung berbelok kanan, fungsi ini dapat dilihat di code berikut ini:
case 0b00111111: belka90,50; x=0; z=4;
break ;
code ini berarti mobil sedang berada di atas perempatan, perempatan dikenali dengan semua sensor sedang membaca garis hitam, jika kondisi
perempatan terpenuhi maka mobil akan langsung berbelok kanan dengan fungsi belkaa,b.
void maju
unsigned char
mki, unsigned
char mka
{ pwmki=mki;
pwmka=mka; dirki=0; dirka=0;
remki=1; remka=1; }
Fungsi majua,b adalah fungsi untuk maju, nilai a adalah pwm untuk motor kiri, b adalah nilai pwm untuk motor kanan. dirki=0 berarti direction motot
kiri di aktifkan, begitu juga dengan dirka. Sedangkan remki merupakan nilai untuk rem motor baik motor kiri maupun kanan.
Remka dan remki harus dipastikan tidak aktif, karena jika remka atau remki diaktifkan berapapun besarnya pwm dan direksi yang diberikan maka motor
tidak akan dapat bergerak sama sekali.
void belka
unsigned char
mki, unsigned
char mka
{ pwmki=mki;
pwmka=mka; dirki=0; dirka=1;
remki=1; remka=1; }
Fungsi belkaa,b adalah fungsi untuk belok kanan, untuk dapat belok kanan maka direction kanan harus berhenti dan direction kiri berjalan.
void belki
unsigned char
mki, unsigned
char mka
{ pwmki=mki;
pwmka=mka; dirki=1; dirka=0;
remki=1; remka=1; }
Fungsi belkia,b adalah fungsi untuk belok kiri, untuk dapat belok kiri maka direction kiri harus berhenti dan direction kanan berjalan.
void stop {pwmki=0; pwmka=0; remki=0; remka=0;}
fungsi ini digunakan untuk menghentikan mobil.
warna=read_adc0; l_tm=255-m2-10; mencari nilai low merah
h_tk=255-k2+10; mencari nilai high kuning
th=255-warna2; mencari nilai tengah-tengah
ifth=h_tk z=1; kuning else ifthl_tmz=2; merah
else z=3;
fungsi ini digunakan untuk mengecek warna merah, hijau dan kuning. warna=read_adc0 berfungsi untuk mengambil nilai warna yang dilihat saat ini,
l_tm digunakan untuk mencari nilai low tegangan merah, h_tk=digunakan untuk mencari nilai max tegangan kuning, th digunakan untuk mencari nilai rata-rata
tegangan saat ini. Jika nilai tegangan rata-rata saat ini kurang dari h_tk maka warna yang dilihat adalah warna kuning, jika nilai tegangan rata-rata saat ini lebih
dari nilai l_tm maka warna yang dilihat adalah warna merah. Untuk memberikan aksi kepada motor sesuai dengan warna yang dilihat
maka digunakan potongan program di bawah ini :
warna=read_adc0;
l_th=255-h2-10; h_th=255-h2+5; th=255-warna2;
ifz==1 {
lcd_gotoxy0,0;lcd_putsf kuning ; ifx==1 maju50,40;
else ifx==0 maju40,50; else maju50,50;
}
else ifz==2 {
lcd_gotoxy0,0;lcd_putsf merah ;stop;waktu7; maju80,80;
}
else ifthh_th thl_th {
lcd_gotoxy0,0;lcd_putsf ijo bro ; ifx==1 maju70,50;
else ifx==0 maju50,70; else maju100,100;
} else {lcd_gotoxy0,0;lcd_putsf item ;}
Program ini berfungsi. Jika z==1, maka pwm ke motor akan dikurangi, dan direksi yang diberikan ke motor sesuai dengan posisi terakhir saat
pendeteksian garis. Jika z==2, maka mobil akan berhenti selama 7 detik kemudian langsung maju, jika nilai thh_th dan hl_th maka mobil akan melaju seperti
normal, jika semua tidak terpenuhi berarti sensor warna sedang membaca warna hitam sehingga tidak ada aksi yang diberikan kepada driver motor
4. 3.
Prosedur Pemasangan Program Pada ATMega8535
Agar listing program yang dibuat dapat dibaca oleh microcontroller, maka listig program yang awalnya berekstensi .c harus diconvert menjadi .hex.
Berikut ini alur proses pemasangan program pada ATMega8535 menggunakan program compiler CodeVision AVR.
Gambar 4.6 Alur Pemasangan Program Pada Microcontroller
Listing Code berekstensi .c
Compile Code Erro
r?
Perbaiki
Make Program
Convert listing code berkestensi .c menjadi .hex
Proses Pengisian Program
1. Flash erasure Checking
2. Flash Programming
3. EEPROM Programming
Untuk memasang program pada chip ATMega8535 pertama-tama program yang sudah dibuat sebelumnya harus dicompile terlebih dahulu, untuk
memastikan tidak ada yang error, karena jika ada yang error maka program tidak akan bisa dibuat, hasil compile dari program yang sudah tidak memiliki error
adalah seperti gambar di bawah ini:
Gambar 4.7 Hasil compilasi program
Setelah tidak ada kesalahan selanjutnya make program, hasilnya dapat dilihat pada gambar 4.8, setelah make program selesai listing code yang awalnya
berekstensi .c akan diconvert menjadi .hex, untuk mengetahuinya dapat dilihat di folder tempat penyimpanan file project yang sedang dibuat, seperti yang
ditunjukkan pada gambar 4.9 .
Gambar 4.8 Tampilan Saat Make Program
Gambar 4.9 Hasil Convert File t5.c
Setelah itu klik button “Program the chip”. Maka proses selanjutnya adalah proses pengisian program, ada juga yang menamakan penanaman program
pada chip ATMega8535. Pengisian program ini dilakukan secara bertahap :
1. Proses pertama pengecekan kondisi memori flash chip 2. Jika chip belum terpasang dengan benar maka aka nada peringatan
error. 3. Jika chip sudah terpasang dengan benar maka memori flash yang ada
sebelumnya dihapus
4.
Proses selanjutunya adalah proses pengisian memori flash.
5. Setelah proses pengisian memori flash selesai, selanjutnya proses pengisian memori EEPROM. Proses ini dilakukan hanya jika listing
code yang dibuat menggunakan fasilitas EEPROM, jika tidak maka proses ini akan dilewati.
Berikut ini hasil dari pengisian program pada chip ATMega8535
………. a b
Gambar 4.10 Proses Pengisian Program
BAB V ANALISIS DAN UJI COBA