PENDAHULUAN TINJAUAN PUSTAKA PERANCANGAN HASIL DAN PEMBAHASAN UJICOBA DAN EVALUASI PROGRAM KESIMPULAN DAN SARAN IMPLEMENTASI PERANGKAT LUNAK

1.7. Sistematika Penulisan

Adapun Sistematika Tugas Akhir ini adalah:

BAB I : PENDAHULUAN

Bab ini menjelaskan tentang latar belakang, rumusan masalah, batasan masalah, tujuan, manfaat, metodologi penelitian dan sistematika penulisan.

BAB II : TINJAUAN PUSTAKA

Pada bab ini dijelaskan tentang teori-teori serta penjelasan-penjelasan yang dibutuhkan dalam pembuatan mobil robot pengikut garis dan pendeteksi rintangan dengan menggunakan ATMega8535

BAB III : PERANCANGAN

Bab ini berisi tentang analisa dan perancangan sistem dalam pembuatan Tugas Akhir mobil robot pengikut garis dan pendeteksi rintangan dengan menggunakan ATMega8535.

BAB IV : HASIL DAN PEMBAHASAN

Bab ini berisi penjelasan hasil Tugas Akhir serta pembahasannya tentang mobil robot pengikut garis dan pendeteksi rintangan dengan menggunakan ATMega8535.

BAB V : UJICOBA DAN EVALUASI PROGRAM

Bab ini berisi pengujian program Tugas Akhir.

BAB VI : KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dan saran-saran penulis. DAFTAR PUSTAKA LAMPIRAN

BAB II TINJAUAN PUSTAKA

Pada bab ini akan menjelaskan tentang definisi – definisi yang berkaitan dengan robotika, mikrokontroller dan komponen – komponen yang menyusun sebuah robot. Di dalam bab ini juga dijelaskan tentang beberapa teori yang mendasari penyusunan sebuah robot dan teori mengenai pergerakan robot itu sendiri. Software yang menjadi sumber pergerakan robot dan pembacaan sensor juga akan dibahas di bab ini Robot Robot memiliki komponen yang sangat kompleks, oleh karena itu robot bisa melakukan banyak hal sesuai yang kita inginkan dan disini akan dibahas mengenai sejarah, teori dan konsep dalam membuat sebuah robot. Agar lebih mudah memahami bagaimana robot bekerja.

2.1.1 Sejarah dan Pengertian Robot

Istilah ’robot’ dan ’Robotics’ adalah istilah yang baru pada abad ke-20 ini, tetapi idenya didasarkan pada sejarah yang sama. Kata robot pertama kali digunakan oleh suatu grup drama ’Czechoslovakia Dramatist, Karel Capek pada tahun 1921 sewaktu bermain Rossum’s Universal Robots’. [1] Istilah robot sekarang secara populer diartikan sebagai ’apa saja yang dapat membentuk mesin – mesin robot yang diletakkan bersamaan itu bekerja secara mandiri’. Pada umumnya bagian – bagian yang menunjang pembentukan suatu robot adalah : a. Central Computer atau Control Circuitry, bagian ini sebagai otak yang mengolah dan mengatur segala sesuatu yang menyebabkan robot itu dapat kelihatan ’hidup’. Dia mengolah apa yang diberikan oleh bagian input dan mengontrol apa yang akan dilakukan pada bagian outputnya. b. Obstacle Detectors, Vision System : ini sebenarnya bagian dari input yang memberikan masukan – masukan variabel guna diolah untuk menentukan apa yang dilakukan oleh bagian outputnya. c. Driver Motor, Arm, Gripper : tidak seluruhnya harus terpasang lengkap, namun driver motor adalah yang paling dominan banyak dijumpai pada robot, dan ini adalah bagian dari output sistemnya. Pada umumnya bagian ini ditunjang oleh seperangkat alat – alat mekanis. d. Central Power System : bagian ini amat vital karena merupakan ’nyawa’ bagi robot. Ketiga bagian di atas selalu membutuhkan daya untuk dapat bekerja, maka bagian ini sangat penting. Berikut gambar Blok Diagram Robot secara umum yang menggambarkan deskripsi diatas : Gambar 2.1 Blok Diagram Robot secara umum

2.1.2 Teori Kinematika Robot

Terdapat dua metode analisa untuk menganalisis pergerakan robot, yaitu analisa kinematika dan analisa dinamik. Pada bab ini penulis hanya akan membahas mengenai analisa kinematika. Analisa kinematika adalah analisa yang berkaitan dengan pergerakan robot tanpa memandang efek kinersiakelembaman yang terjadi ketika robot bergerak.

2.1.2.1 Konsep Kinematika

Konsep kinematika didasarkan pada diagram system control robotik yang dijelaskan pada Gambar 2.2. Gambar 2.2 Diagram Sistem Kontrol Robotik Pada Gambar 2.2 di atas, output Ө yang diukur dari gerakan robot adalah dalam domain sudut dari sendi – sendi, baik sendi pada system tangankaki ataupun sudut dari perputaran roda jika robot adalah robot mobile. Sedang yang diperlukan oleh user adalah posis titik tertentu pada bagian robot yang dinyatakan sebagai koordinat 2D ataupun 3D ruang kartesian. Dengan demikian diperlukan transformasi koordinat antara ruang kerja cartesian dengan ruang sendisudut. Kombinasi antara tranformasi koordinat P ke Ө dengan controller Gs disebut sebagai controller kinematik. Inputnya berupa sinyal P,e р dan outputnya berupa sinyal kemudi U. Dalam konteks praktis, sinyal U ini adalah sinyal – sinyal analog dari DAC untuk seluruh akuator variabel sendi robot. Jadi, kinematik dalam robot adalah suatu bentuk pernyataan yang berisi tentan deskripsi matematik geometri dari suatu struktur robot. Dari persamaan kinematik dapt diperoleh hubungan antara konsep geometri ruang sendir pada robot dengan konsep koordinat yang biasa dipakai untuk menentukan kedudukan dari suatu objek. Dengan model kinematik, progammer dapat menentukan konfigurasi referensi input yang harus diumpamakan ke tiap actuator agar robot dapat melakukan gerakan simultan seluruh sendi untuk mencapai posisi yang dikehendaki. [2]

2.1.2.2 Kinematik Robot Mobil

Untuk dapat dianalisis menggunakan analisa kinematik maka sebuah robot mobile harus memiliki dua roda kiri – kanan yang dikemudikan terpisah differntially driven mobil robot, disingkat DDMR seperti ditunjukkan dalam Gambar 2.3 DDMR pada medan 2D Cartesian. Gambar 2.3 DDMR pada medan 2D cartesian Robot diasumsikan berada dalam kawasan 2D pada koordinat Cartesian XY. Parameter – parameter dalam gambar adalah : Ф : sudut arah hadap robot 2b : lebar robot yang diukur dari garis tengah roda ke roda r : jari – jari roda roda kiri dan kanan sama sebangun d : jarak antara titik tengah antaran dua roda, G dengan titik F x,y : koordinat acuan di tubuh robot terhadap sumbu XY Dalam kajian kinematik ini robot diasumsikan bergerak realtive pelan dan roda tidak slip terhadap permukaan jalan. Maka komponen x dan y dapat diekspresikan dalam suatu persamaan nonholonomic sebagai berikut : X G sin Ф - Y G cos Ф = 0 2.1 Untuk F sebagai acuan analisa, persamaan di atas dapat ditulis X F sin Ф – Y F cos Ф + Фd = 0 2.2 Masalah klasik dalam control kinematik DDMR adalah bahwa DDMR memiliki dua actuator, namun parameter kontrolnya lebih dari dua, yaitu x untuk gerakan ke arah X dan y untuk arah Y yang diukur relative terhadap perpindahan titik G, dan gerakan sudut hadap Ф yang diukur dari garis hubung titik G dan F terhadap sumbu X. Dari rumus 2.2 nampak bahwa derajat kebebasan dalam control kinematika DDMR berjumlah tiga, yaitu x, y, Ф karena ketiga parameter ini perlu dikontrol secara simultan untuk mendapatkan gerakan nonholomonic. Untuk lebih jelasnya dapat dilihat pada Gambar 2.4 Gambar 2.4 Contoh Manuver DDMR Gambar 2.4 Contoh Manuver DDMR Perpindahan kedudukan robot dari start ke stop bila dipandang pada titik G adalah perpindahan dari koordinat X G1 , Y G1 ke X G2 , Y G2 secara translasi. Namun hal ini tidak dapat dilakukan secara langsung sebab robot harus bergerak maju sehingga ia harus dapat membuat manuver belik untuk mengarahkannya pada koordinat X G2 , Y G2 . Oleh karena itu diperlukan titik acuan F yang berada di luar garis yang menghubungkan kedua roda agar sudut hadap dapat dihitung. Bentuk umum persamaan kinematik untuk DDMR ini dapat dinyatakan dalam persamaan kecepatan sebagai berikut : 2.3 TNH adalah matriks transformasi nonholomonic, Ө L , Ө R adalah kecepatan radial roda kiri dan kanan, dan q adalah system koordinat umum robot. Mikrokontroller AVR Mikrokontroller AVR Alf and Vegard’s Risc processor standar memiliki 8 bit, dimana semua instruksi dikemas dalam kode 16-bit, dan sebagian besar instruksi dieksekusi dalam 1 satu siklus clock. AVR berteknologi RISC Reduced Instruction Set Computing dimana set instruksinya dikurangi dari segi ukurannya dan kompleksitas mode pengalamatannya, sedangkan seri MCS-51 berteknologi CISC Complex Instruction Set Computing. Konsep arsitektur AVR sendiri awalnya dibuat oleh 2 orang mahasiswa di Norwegian Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan yang selanjutnya dikembangkan oleh perusahaan Atmel di Norwegia dan AVR dapat dikelompokkan menjadi empat kelas, yaitu ATtiny, keluarga ATSOSxx, keluarga ATMega, dan AT86RFxx. [3] Pada dasarnya yang membedakan masing – masing kelas adalah memori, peripheral dan fungsinya. Arsitektur AVR AVR merupakan mikrokontroller dengan arsitektur Harvard dimana antara kode program dan data disimpan dalam memori secara terpisah. Umumnya arsitektur Harvard ini menyimpan kode program dalam memori permanen atau semi-permanen non-volatile sedangkan data disimpan dalam memori tidak permanen volatile. Sehingga dengan arsitektur seperti ini memori program mikrokontroller menjadi lebih terlindungi dari spike tegangan dan faktor lingkungan lain yang dapat merusak kode program. Beberapa jenis AVR memiliki memori Flash, EEPROM dan SRAM yang semuanya terintegrasi dalam satu IC, sehingga untuk aplikasi – aplikasi tertentu tidak akan memerlukan memori eksternal. Secara umum AVR dibagi menjadi 3 kelompok besar yaitu : a. Keluarga AVR Tiny  1 – 8 Kbyte memori program  8 – 20 kemasan jumlah pin  peripheral yang terbatas b. Keluarga AVR Mega  256 Kbyte memori program  28 – 100 kemasan pin  set instruksi lebih banyak  peripheral lebih banyak c. Keluarga AVR untuk aplikasi yang spesifik Merupakan keluarga AVR mega dengan fitur spesial yang tidak dapat ditemukan pada keluarga AVR di atas seperti, kontroler LCD, kontroler USB, advance PWM, dan lain – lain.

2.2.2 Memori Program

Kode Programinstruksi disimpan dalam Flash memory, yaitu memori jenis non-volatile yang tidak akan hilang datanya meskipun catu daya dimatikan. Hampir semua instruksi berukuran 16 – bit yang terdiri dari upcode dan data atau operand yang nantinya akan diolah oleh instruksi tersebut. Memori flash ini akan dialamati 16-bit per siklus instruksi.

2.2.3 Memori data dan Register

Ruang alamat memori data terdiri dari register utama, register IO dan SRAM. Keluarga AVR memiliki 32 byte register utama dan diklasifikasikan tiap 8-bit. 32 register ini dipetakkan dalam alamat memori paling awal yaitu pada alamat 0000h – 001Fh. Selanjutnya 64 byte berikutnya digunakan untuk register IO 0020h – 005Fh. Dan kemudian SRAM dimulai dari alamat 0060h sampai kapasitas memori habis. Meskipun terdapat pemisahan antara register utama dan register IO tetapi semuanya tetap dapat diakses dan dimanipulasi seperti halnya mengakses SRAM.

2.2.4 EEPROM

Beberapa mikrokontroler AVR juga telah memiliki EEPROM Electrically Erasable Programmable Read Only Memory internal sebagai tempat menyimpan data semi-permanen. EEPROM internal ini tidak dipetakkan bersama dengan Register utama, register IO dan SRAM. EEPROM hanya dapat diakses melalui register spesial dan operasi readwrite sehingga waktu aksesnya lebih lambat daripada mengakses register ataupun RAM. EEPROM tetap dapat menyimpan data meskipun catu daya dimatikan.

2.2.5 Eksekusi Program

Keluarga AVR hanya memiliki satu alur waktu eksekusi. Instruksi mesin berikutnya diambil bersamaan dengan instruksi yang sekarang sedang dikerjakan. Hampir semua instruksi dilakukan hanya dalam satu atau dua siklus detak clock. Hal ini membuat AVR lebih cepat dan efisien dalam mengeksekusi sebuah program.

2.2.6 Kecepatan

Mikrokontroler keluarga AVR memiliki kecepatan clock dari 0 – 16 MHZ, ada yang mempunyai kecepatan hingga clock 20 MHZ. Semua keluarga AVR memiliki fitur on-chip oscillator, sehingga tidak memerlukan clock eksternal dan hampir semua instruksi AVR merupakan siklus instruksi sehingga AVR dapat mencapai kecepatan hampir 1 MIPS per MHz.

2.3 Mikrokontroler ATMega8535

Di dalam mikrokontorler terdapat berbagai macam bagian – bagian yang mana setiap bagian mempunyai fungsi sendiri – sendiri. Disini akan dijelaskan tentang bagian – bagian yang ada di dalam mikrokontorler dan fungsi - fungsinya

2.3.1 Pendahuluan

ATMega8535 merupakan salah satu mikrokontroler 8 bit buatan Atmel untuk keluarga AVR yang diproduksi secara masal pada tahun 2006. Karena merupakan keluarga AVR, maka ATMega8535 juga menggunakan arsitektur RISC. [3]

2.3.2 Konfigurasi Pin ATMega8535

Secara fungsional konfigurasi ATMega8535 sebagai berikut : a. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya. b. GND merupakan pin ground. c. Port A PA0...PA7 merupakan pin IO dua arah dan pin masukan catu ADC. d. Port B PB0...PB7 merupakan pin IO dua arah dan pin fungsi khusus, yaitu timercounter, komparator analog, SPI. e. Port C PC0...PC7 merupakan pin IO dua arah dan pin fungsi khusus, yaitu TWI, komparator analog, dan timer oscillator. f. Port D PD0...PD7 merupakan pin IO dua arah dan pin fungsi khusus, yaitu komparator analog, interupsi eksternal, dan komunikasi serial. g. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler. h. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal. i. AVCC merupakan pin masukan tegangan untuk ADC. j. AREF merupakan pin masukan tegangan referensi ADC. Gambar 2.5 Konfigurasi Pin ATMega8535

2.3.3 Arsitektur ATMega8535

ATMega8535 memiliki struktur bagian sebagai berikut : a. saluarn IO sebanyak 32 buah yaitu Port A, Port B, Port C, Port D b. ADC 10 bit sebanyak 8 saluran c. Tiga buah timercounter dengan kemampuan perbandingan d. CPU yang terdiri atas 32 buah register e. Watchdog timer dengan osilator internal f. SRAM sebanyak 512 byte g. Memori flash sebesar 8 kb dengan kemampuan Read While Write h. Unit interupsi internal dan eksternal i. Port antarmuka SPI j. EEPROM sebesar 512 byte yang dapat diprogram saat operasi k. Antarmuka komparator analog l. Port USART untuk komunikasi serial Gambar 2.6 Blok Diagram Fungsional ATMega 8535

2.3.4 Fitur – Fitur ATMega8535

a. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz. b. kapabilitas memori flash 8 kb, SRAM sebesar 512 byte, dan EEPROM Electrically Erasable Programmable Read Only Memory sebesar 512 byte. c. ADC Analog to Digital Converter internal dengan fidelitas 8 bit sebanyak 8 channel. d. Port komunikasi serial USART dengan kecepatan maksimal 2,5 Mbps e. Enam pilihan mode sleep menghemat penggunaan daya listrik f. Berperforma tinggi dan dengan konsumsi daya yang rendah low power g. Fitur peripheral  Dua timercounter 8-bit dengan separate prescaler sumber clock yang dapat diatur dan mode pembanding.  Satu timercounter 16-bit dengan separate prescaler, mode pembanding dan capture mode  Real time counter dengan sumber osilator terpisah  Terdapat delapan saluran ADC dengan resolusi 10 bit ADC  Empat saluran PWM Pulse Widht Modulation  Terdapat Two Serial Interface  Programmable serial USART  MasterSerial SPI serial interface  Programmable Watchdog Timer dengan on-chip osilator  On-Chip analog comparator h. IO dan kemasan  32 Programmable saluran IO  40 pin PDIP, 44 pin TQFP, 44 pin PLCC dan 44 pin MLF i. Tegangan kerja  2,7 – 5,5V untuk ATMega8535L  4,5 – 5,5V untuk ATMega8535 j. Kelas Kecepatan  0 – 8 MHz untuk ATMega8535L  0 – 16 MHz untuk ATMega8535

2.3.5 Peta Memori ATMega8535

Mikrokontroler ATMega8535 memiliki 3 jenis memori yaitu memori program, memori data dan memori EEPROM. [3] Ketiganya memiliki ruang sendiri dan terpisah seperti terlihat pada Gambar 2.7. Gambar 2.7 Organisasi memori ATMega8535 a. Memori Program ATMega8535 memiliki kapasitas memori program sebesar 8 Kbyte yang terpetakkan dari alamat 0000h – 0FFFh dimana masing – masing alamat memiliki lebar data 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian program boot dan bagian program aplikasi. Jika menggunakan fitur boot loader flash maka pembagian ukuran kedua bagian ini ditentukan oleh BOOTSZ fuse tetapi jika tidak menggunakan fitur boot loader flash maka semua kapasitas memori program digunakan untuk program aplikasi. b. Memori Data ATMega memiliki kapasitas memori data sebesar 608 Byte yang terbagi menjadi 3 bagian yaitu register serba guna, register IO dan SRAM seperti terlihat pada gambar xx. 32 byte alamat terendah digunakan untuk register serba guna yaitu R0 – R31. 64 byte berikutnya digunakan untuk register IO yang digunakan untuk mengatur fasilitas seperti timercounter, interupsi, ADC, USART, SPI, EEPROM dan port IO seperti Port A, Port B, Port C dan Port D. Selanjutnya 512 Byte di atasnya digunakan untuk memori data SRAM. Jika register – register IO diatas diakses seperti mengakses data pada memori menggunakan instruksi LD atau ST maka register IO di atas menempati alamat 0020 – 005F seperti terlihat pada gambar xx Tetapi jika register – register IO diatas diakses seperti mengakses IO pada umumnya menggunakan instruksi IN dan OUT maka register IO diatas menempati alamat memori 0000h – 003Fh seperti terlihat pada Gambar 2.8. Gambar 2.8 a Register IO Sebagai Memori Data b Register IO sebagai IO c. Memori EEPROM ATMega8535 memiliki memori EEPROM sebesar 512 Byte yang terpisah dari memori program maupun memori data. Memori EEPROM ini hanya dapat diakses dengan menggunakan register – register IO yaitu register EEPROM Address EEARH-EEARL, register EEPROM data EEDR dan register EEPROM control EECR. Untuk mengakses memori EEPROM ini diperlakukan seperti mengakses data eksternal sehingga waktu eksekusinya relatif lebih lama bila dibandingkan dengan mengakses data dari SRAM.

2.3.6 Status Register SREG

Register SREG digunakan untuk menyimpan informasi dari hasil operasi aritmatika yang terakhir. Informasi – informasi dari register SREG dapat digunakan untuk mengubah alur program yang sedang dijalankan dengan menggunakan instruksi percabangan. Data SREG akan selalu berubah setiap instruksi atau operasu pada ALU dan datanya tidak otomatis tersimpan apabila terjadi instruksi percabangan baik karena interupsi maupun lompatan. a. Bit 7 – I : Global Interrupt Enable Bit I digunakan untuk mengaktifkan interupsi secara umum interupsi global. Jika bit I bernilai ’1’ maka interupsi secara umum aktif, tetapi jika bernilai ’0’ maka tidak ada satupun interupsi yang aktif. Pengaturan jenis – jenis interupsi apa saja yang akan aktif dilakukan dengan mengatur register kontrol yang sesuai dengan jenis interupsi tersebut dengan terlebih dahulu mengaktifkan interupsi global, yaitu bit I diset ’1’. b. Bit 6 – T : Bit Copy Storage Bit T digunakan untuk menentukan bit sumber atau bit tujuan pada instruksi bit copy. Pada instruksi BST, data akan dicopy dari register ke bit T bit T sebagai tujuan sedangkan pada instruksi BLD, bit T akan dicopy ke register bit T sebagai sumber. c. Bit 5 – H : Half Carry Flag Bit H digunakan untuk menunjukkan ada tidaknya setengah carry pada operasi aritmatika BCD. Setengah carry digunakan pada operasi aritmatika BCD, yaitu membagi 1 byte data menjadi 2 bagian masing – masing 4 bit dan masing – masing bagian dianggap sebagai 1 digit desimal. d. Bit 4 – S : Sign Bit Bit S menggunakan kombinasi antara bit V dan bit N, yaitu dengan meng- XOR-kan bit V dan bit N. e. Bit 3 – V :Two’s Complement Overflow Flag Bit V digunakan untuk mendukung operasi aritmatika komplemen 2. Jika terjadi luapan pada operasi aritmatika bilangan komplemen 2 maka akan menyebabkan bit V bernilai ‘1’. f. Bit 2 – N : Negative Flag Bit N digunakan untuk menunjukkan apakah hasil sebuah operasi aritmatika ataupun operasi logika bernilai negative atau tidak. Jika hasilnya negative maka bit N bernilai ‘1’ dan jika bernilai positif maka bit N bernilai ‘0’. g. Bit 1 – Z : Zero Flag Bit Z digunakan untuk menunjukkan hasil operasi aritmatika ataupun operasi logika apakah bernilai nol atau tidak. Jika hasilnya nol maka bit Z bernilai ‘1’ dan jika hasilnya tidak nol maka bit Z bernilai ‘0’. h. Bit 0 – C : Carry Flag Bit C digunakan untuk menunjukkan hasil operasi aritmatika ataupun logika apakah ada carry atau tidak. Jika ada carry maka bit C bernilai ‘1’ dan jika tidak ada carry maka bit C bernilai ‘0’.

2.3.7 Spesial Function IO Register SFIOR

Register SFIOR adalah register spesial yang berfungsi untuk mengatur beberapa fitur sekaligus dalam satu register. Jadi isi register ini digunakan dalam menentukan mode dan cara kerja beberapa fitur antara lain pull-up port IO, timer 0, timer 1, timer 2, analog comparator dan ADC

2.3.8 Register Serba Guna General Purpose Register

ATMega8535 memiliki 32 byte register serba guna yang terketak pada awal alamat RAM seperti terlihat pada gambar berikut : Gambar 2.9 Register Serbaguna Dari 32 byte register serba guna di atas, 6 byte terakhir juga digunakan sebagai register pointer yaitu register pointer X, register pointer Y dan register pointer Z.

2.3.9 Interupsi

ATMega8535 menyediakan 21 macam sumber interupsi masing – masing memiliki alamat program vektor interupsi seperti pada tabel xx. Setiap interupsi yang aktif akan dilayani segera setelah terjadi permintaan interupsi, tetapi jika dalam waktu bersamaan terjadi lebih dari satu interupsi maka prioritas yang akan diselesaikan lebih dulu adalah interupsi yang memiliki nomor urut lebih kecil sesuai tabel 2.1. Tabel 2.1 Alamat Vektor Interupsi ATMega8535 Vector No. Alamat Program Sumber Interupsi Keterangan 1. 0x000 RESET External Pin, Power-On Reset, Brown-out Reset and Watchdog Reset 2. 0x001 INT0 External Interupt Request 0 3. 0x002 INT1 External Interupt Request 1 4. 0x003 TIMER2 COMP TimerCounter2 Compare Match 5. 0x004 TIMER2 OVF TimerCounter2 Overflow 6. 0x005 TIMER1 CAPT TimerCounter1 Capture Event 7. 0x006 TIMER1 COMPA TimerCounter2 Compare Match A 8. 0x007 TIMER1 COMPB TimerCounter2 Compare Match B 9. 0x008 Timer1 OVF TimerCounter1 Overflow 10. 0x009 Timer0 OVF TimerCounter0 Overflow 11. 0x00A SPI, STC Serial Transfer Complete 12. 0x00B USART, RXC USART, Rx Complete 13. 0x00C USART, UDRE USART Data Register Empty 14. 0x00D USART, TXC USART, Tx Complete 15. 0x00E ADC ADC Conversion Complete 16. 0x00F EE_RDY EEPROM Ready 17. 0x010 ANA_COMP Analog Comparator 18. 0x011 TWI Two-Wire Serial Interface 19. 0x012 INT2 External Interupt Request 2 20. 0x013 TIMER0 COMP TimerCounter0 Compare Match 21. 0x014 SPM_RDY Store Program Memory Ready

2.4 Rangkaian Mekanika

Rangkaian mekanik Robot Pengikut Garis ini terdiri atas beberapa bahan. Untuk casis robot bahan yang digunakan adalah bahan aclyric. Pada mekanik yang dirancang digunakan transmisi roda gigi cacing untuk bagian kemudi depan robot agar dihasilkan reduksi kecepatan yang besar dan kemampuan mengunci pergerakan kemudi. Untuk penggerak belakang robot digunakan roda gigi miring untuk mempercepat putaran motor DC yang kecepatan putarnya sangat lambat. Gambar 2.10 Rangkaian Mekanika Robot

2.5 Rangkaian Elektronika

2.5.1 PCB Printed Circuit Board

PCB atau Papan Sirkuit Cetak adalah sebuah papan yang penuh dengan sirkuit dari logam yang menghubungkan komponen elektronik satu sama lain tanpa kabel. [4] Papan sirkuit ini mendapatkan namanya karena diproduksi secara massal dengan cara percetakan. Papan sirkuit cetak dapat digolongkan atas beberapa jenis berdasarkan : a. Susunan lapis  Lapis tunggal  Lapis ganda  Multi lapis 4, 6, 8 lapis b. Bentuk  Keras  Lunak fleksibel  Gabungan keras dan lunak c. Spesifikasi  Konvensional  Penghubung kepadatan tinggi High Density interconnect d. Material Basis  FR4  Logam  Keramik

2.5.2 Resistor

Resistor adalah suatu komponen elektronika dua saluran yang di desain untuk menahan arus listrik dengan memproduksi penurunan tegangan diantara kedua salurannya sesuai dengan arus yang mengalirinya. [3] Resistor diberi lambang huruf R dengan satuannya yaitu Ohm Ω. Secara umum resistor berdasarkan nilainya dibagi menjadi 3 bagian, yaitu : 1. Fixed resistor Merupakan resistor yang nilai hambatannya tetap. Berikut ini bentuk resistor. Gambar 2.11 Resistor Nilai hambatan resistor dapat kita ketahui dari gelang warna yang terdapat pada badan resistor, dimana ketentuannya adalah sebagai berikut : a. Gelang ke-1 dan gelang ke-2 menyatakan nilai resistor. b. Gelang ke-3 menyatakan faktor pengali c. Gelang ke-4 menyatakan toleransi Jika resistor memiliki 5 gelang warna, maka nilai gelang ke-1, 2 dan 3 menyatakan nilai resistor, gelang ke-4 merupakan faktor pengali dan gelang ke-5 menyatakan toleransi. Sedangkan untuk mengetahui nilai dari warna gelang resistor, bisa dilihat pada Tabel 2.2 : Tabel 2.2 Tabel Kode Warna Resistor Warna Nilai Faktor Pengali Toleransi Hitam 0 X 1 - Coklat 1 X 10 1 Merah 2 X 100 2 OrangeJingga 3 X 1000 - Kuning 4 X 10000 - Hijau 5 X 100000 - Biru 6 X 1000000 - Ungu 7 X 10000000 - Abu – abu 8 X 100000000 - Putih 9 X 1000000000 - Emas - X 0.1 5 Perak - X 0.1 10 Tidak Berwarna - - 20 Contoh : Sebuah resistor memiliki gelang warna seperti berikut ini : Gelang ke-1 : Coklat, memiliki nilai 1 Gelang ke-2 : Putih, memiliki nilai 9 Gelang ke-3 : Merah, merupakan faktor pengali 10² Gelang ke-4 : Perak, memiliki nilai toleransi 10 Sehingga resistor di atas memiliki nilai 1.9 k Ω ± 10 2. Variabel resistor Merupakan resistor yang nilai hambatannya dapat diubah-ubah. Berdasarkan cara merubah hambatannya variabel resistor dibagi menjadi 2, yaitu : a. Trimpot Merupakan variabel resistor yang nilai hambatannya dapat di ubah menggunakan obeng atau alat bantu. Berikut contoh gambar trimpot : Gambar 2.12 Trimpot b. Potensio Merupakan variabel resistor yang nilai hambatannya dapat dirubah langsung menggunakan tangan tanpa menggunakan alat bantu dengan cara memutar poros engkol atau menggeser kenop untuk potensio geser. Berikut contoh gambar potensio : Gambar 2.13 Potensio 3. Resistor Non-Linear Ada beberapa jenis resistor non-linear, diantaranya adalah : 1. PTC Positive Temperatur Coefisien Adalah jenis resistor non linear yang nilai hambatannya terpengaruh oleh perubahan suhu. Makin tinggi suhu di sekitarnya maka makin besar nilai hambatannya. Berikut contoh gambar dari PTC : Gambar 2.14 Positive Temperature Coefisien 2. NTC Negative Temperatur Coefisien Jenis resistor ini hampir sama dengan PTC, nilai hambatannya terpengaruh oleh perubahan suhu, perbedaannya adalah jika suhu semakin tinggi maka nilai hambatannya akan semakin kecil, sebaliknya jika suhu semakin rendah maka makin besar nilai hambatannya. Berikut contoh gambar NTC : Gambar 2.15 Negative Temperatur Coefisien 3. LDR Light Depend Resistor Adalah jenis resistor non linear yang nilai hambatannya terpengaruh oleh intensitas cahaya yang mengenainya. Makin besar intensitas cahaya yang mengenainya makin kecil nilai hambatannya.

2.5.3 Dioda

Dioda adalah komponen elektronika yang paling sederhana dari keluarga semikonduktor, dari simbolnya menunjukkan arah arus dari dan ini merupakan sifat dioda, bahwa dioda hanya mengalirkan arus pada satu arah, arus hanya mengalir dari kutub Anoda ke kutub Katoda. [3] Satu sisi dioda disebut Anoda untuk pencatuan positif +, dan sisi lainnya disebut Katoda untuk pencatuan negatif -, yang dalam pemasangannya tidak boleh terbalik. Secara fisik bentuk dioda seperti silinder kecil dan biasanya diberi tanda berupa lingkaran warna putih, yang menandakan posisi kaki katoda

2.5.4 Sensor Proximity

Sensor Proximity adalah teknik pendeteksi dari keberadaan suatu obyek dengan noncontact sensor elektronik. Adapun sensor proximity yang bisa dibuat sendiri. Dengan memanfaatkan LED sebagai sumber cahaya yang akan memancarkan warna dan photodioda sebagai penangkap cahaya. Berikut gambar sensor proximity : Gambar 2.16 Sensor proximity

2.5.4.1 LED Superbright

LED Light Emitting Diode adalah suatu jenis dioda yang apabila diberi tegangan maju akan membangkitkan cahaya pada pertemuan semikonduktornya. Ada LED yang memancarkan warna merah, hijau, biru dan warna lainnya perbedaan warna disebabkan oleh perbedaan pada bahan semikonduktornya. [5] LED Superbright terbuat dari bahan Gallium Ga, Arsen As, dan Fosfor P atau disingkat GaAsP dan ditempatkan dalam suatu wadah yang tembus pandang. Dilihat dari bentuknya LED banyak macamnya, tetapi cahaya yang dipancarkan LED Superbright berbeda dengan LED pada umumnya, cahayanya lebih terang dan menyebar karena wadahnya yang transparan. Untuk membedakan antara kaki katoda dan anodanya dapat dilihat dari bentuk elektrodanya, yang besar adalah kaki katoda. Keuntungan dari LED Superbright antara lain harganya murah, usianya yang relatif panjang lebih dari 20 tahun dan dapat dipakai dengan tegangan rendah 1-2 V. berikut gambar LED Superbright : Gambar 2.17 LED Superbright

2.5.4.2 Photodioda

Energi thermal menghasilkan pembawa minoritas dalam dioda, makin tinggi suhu makin besar arus dioda yang terbias reverse. [5] Energi cahaya juga menghasilkan pembawa minoritas. Dengan menggunakan jendela kecil untuk membuka junction agar terkena sinar, pabrik dapat membuat dioda photo. Jika cahaya luar mengenai junction dioda photo yang dibias reverse akan dihasilkan pasangan electron-hole dalam lapisan pengosongan. Makin kuat cahaya makin banyak jumlah pembawa yang dihasilkan cahaya makin besar arus reverse. Sebab itu dioda photo merupakan detektor cahaya yang baik sekali. Dioda foto adalah suatu dioda yang arus reverse-nya berubah bila mendapat penyinaran. Prinsip kerja dari dioda foto adalah apabila sebuah dioda diberi reverse bias, maka akan mengalir arus yang kecil sekali yang disebut arus reverse melalui dioda tersebut, besarnya arus reverse ini tergantung suhu dan intensitas cahaya yang jatuh pada deplection layer-nya. Oleh karena itu, dioda ini harus bisa tembus cahaya agar cahaya dapat mencapai deplection layer-nya sehingga terjadi arus reverse yang besarnya tergantung intensitas cahaya yang menyinarinya. Nilai resistansi photodioda akan naik bila cahaya tidak mengenai permukaannya dan akan turun apabila dikenai cahaya. Berikut gambar photodiode : Gambar 2.18 Photodioda

2.5.5 Sensor GP2D12

Sensor adalah alat untuk mendeteksi atau mengukur sesuatu yang digunakan untuk mengubah variasi mekanis, magnetik, panas, sinar, dan kimia menjadi tegangan dan arus listrik. Agar listrik dapat bekerja lebih baik dan tepat haruslah memiliki persyaratan sebagai berikut : a. Kepekaan, yaitu sensor harus dipilih sedemikian rupa pada nilai – nilai masukan yang ada sehingga dapat diperoleh keluaran yang cukup besar. b. Stabilitas waktu, yaitu untuk menentukan masukan tertentu, sensor harus dapat memberikan keluaran yang tetap nilainya dalam waktu yang lama. Sensor ini dapat berfungsi untuk berbagai keperluan seperti pendeteksi halangan ataupun pendeteksi jarak dari suatu objek. Beberapa karakteristik dari sensor inframerah GP2D12 adalah :  Power Supply 4,5 – 5,5 Volt  Output berupa tegangan analog yang berkisar antara 0,5 – 2,6 Volt  Pembacaan jarak tidak begitu dipengaruhi oleh warna objek yang diukur  Tidak membutuhkan rangkaian kontrol eksternal  Tidak begitu dipengaruhi oleh kondisi pencahayaan ruangan  Frekuensi sebesar 25Hz dan periode sebesar 20 mV  Sudut jangkauan yang dapat mendeteksi permukaan objek yang datar sebesar 40 derajat  Pemakaian arus sebesar 35mA Gambar 2.19 Bentuk fisik dari sensor jarak GP2D12

2.5.5.1 Konfigurasi PIN

GP2D12 adalah sensor infra merah yang menggunakan prinsip triangulation prinsip segitiga untuk mengukur jarak. Sensor ini terdiri atas lampu LED infra merah yang menghasilkan cahaya infra merah termodulasi yang dipancarkan ke objek yang hendak di ukur jaraknya dan sebuah array CCD yang berfungsi sebagai detektor infra merah yang akan menerima pantulan cahaya infra merah dari objek yang diukur. Sensor GP2D12 memiliki tiga buah pin yaitu untuk Vcc, Ground dan Vo tegangan output seperti yang diperlihatkan pada gambar .... kaki 1 merupakan kaki Vo berupa tegangan analog, kaki 2 merupakan kaki untuk ground dan kaki 3 merupakan kaki untuk Vcc. Gambar 2.20 Pin out GP2D12

2.5.5.2 Prinsip Kerja Sensor

Prinsip kerja dari sensor ini dalam mendeteksi jarak dari objek yang diukur adalah melalui sebuah LED inframerah yang menghasilkan cahaya infra merah termodulasi yang dipancarkan ke objek yang hendak diukur jaraknya dan kemudian sinar yang dipancarkan oleh LED akan diterima pada bagian PSD Positioning Sensing Device dan di ubah menjadi tegangan analog. Semakin kuat sinar yang diterima, akan semakin besar pula tegangan analog yang dikeluarkan. Gambar 2.21 Sensor Jarak GP2D12 Berikut ini merupakan gambar blok diagram sensor GP2D12 : Gambar 2.22 Blok Diagram Sharp GP2D12

2.5.5.3 Karakteristik Tegangan Output Terhadap Jarak Pada Sensor

Karena grafik hubungan jarak terhadap tegangan output sensor tidak linear maka dalam pengolahan data dalam prosesor dilakukan dengan menggunakan metode look up table. Dalam metode ini dibutuhkan memori dalam ROM sebesar 255 byte untuk pemetaan data jarak. Dalam look up table tersebut diisikan data – data jarak untuk setiap data tegangan yang diperoleh dari ADC mulai dari tegangan 0 – 255 Volt. Karena output valid sensor adalah berkisar antara 0,5 – 2,6 Volt maka dilakukan pembagian tiga zona pengisian data : a. Tegangan input 0,00 Volt sampai 0,49 Volt dinyatakan sebagai kondisi sangat jauh pada jarak 80 cm b. Tegangan input 0,50 Volt sampai 2,60 Volt adalah merupakan tegangan valid sehingga akan dilakukan penerjemahan data tegangan ke jarak sesuai dengan data yang ada pada grafik hubungan jarak terhadap tegangan ouput sensor GP2D12 seperti pada gambar 2.23 c. Tegangan input 2,61 Volt sampai 2,65 Volt dinyatakan sebagai kondisi terlalu dekat pada jarak 5 cm Karakteristik tegangan output dari sensor ditunjukkan pada gambar berikut ini. Gambar 2.23 Grafik karakteristik tegangan output sensor terhadap jarak

2.5.5.4 ADC dari Tegangan Output Sensor

Dalam melakukan pemrograman mikrokontroller agar dapat terkoneksi dengan sensor jarak, setiap nilai perubahan tegangan output sensor yang berupa tegangan analog yang diakibatkan jarak harus terlebih dahulu dikonversikan ke nilai digital agar dapat dibaca oleh mikrokontroler. Karena tegangan output sensor untuk pembacaan jarak yang valid berkisar antara 0,5 – 2,6 Volt maka sensor ini tidak lagi membutuhkan rangkaian pengkondisian sinyal. Masing – masing output dari sensor ini tidak lagi membutuhkan rangkaian pengkondisian sinyal. Masing – masing output dari sensor jarak dapat langsung dihubungkan ke ADC mikrokontroler yang tegangan referensi telah diatur sebesar 2,65 Volt. Berdasarkan hal tersebut agar memperoleh tegangan output dalam bentuk digital maka dapat digunakan rumus sebagai berikut : Vin ADC = x 1024 .............................. 2.4 Vref Dimana : ADC = Nilai output digital sensor 1024 = Resolusi ADC pada mikrokontroler AVR Atmega8535 Vin = Tegangan analog input sensor dari pendeteksian Vreff = Tegangan Referensi Adapun contoh pengkonversian tegangan output sensor jarak menjadi nilai digital adalah sebagai berikut. Jika diketahui Vin tegangan analog input sensor yang diperoleh dari pengukuran jarak bahwa untuk jarak 10 cm maka tegangan input sensor adalah 2,6 Volt, kemudian tegangan referensi yang berasal dari Vcc adalah 5 Volt maka tegangan output dapat atau nilai ADC dapat diketahui dengan masukan nilai yang ada pada persamaan 2.4, sehingga : 2,6 ADC = x 1024 5 maka nilai digital dari jarak 10 cm adalah 532,48

2.5.6 Optocoupler

Optocoupler merupakan piranti elektronika yang berfungsi sebagai pemisah antara rangkaian power dengan rangkaian control. [6] Optocoupler merupakan salah satu jenis komponen yang memanfaatkan sinar sebagai pemicu onoff-nya. Opto berarti optic dan coupler berarti pemicu. Sehingga bisa diartikan bahwa optocoupler merupakan suatu komponen yang bekerja berdasarkan picu cahaya optic opto-coupler termasuk dalam sensor, dimana terdiri dari dua bagian yaitu transmitter dan receiver. Berikut gambar dari optocoupler : Gambar 2.24 Optocoupler

2.5.7 Transistor

Transistor adalah alat semikonduktor yang dipakai sebagai penguat, sebagai sirkuit pemutus dan penyambung switching, stabilisasi tegangan, modulasi sinyal atau sebagai fungsi lainnya. [5] Transistor dapat berfungsi semacam kran listrik, dimana berdasarkan arus inputnya BJT atau tegangan inputnya FET, memungkinkan pengaliran listrik yang sangat akurat dari sirkuit sumber listriknya. Pada umumnya, transistor memiliki 3 terminal. Tegangan atau arus yang dipasang di satu terminalnya mengatur arus yang lebih besar yang melalui 2 terminal lainnya. Transistor adalah komponen yang sangat penting dalam dunia elektronik modern. Dalam rangkaian analog, transistor digunakan dalam amplifier penguat. Rangkaian analog melingkupi pengeras suara, sumber listrik stabil, dan penguat sinyal radio. Dalam rangkaian-rangkaian digital, transistor digunakan sebagai saklar berkecepatan tinggi. Beberapa transistor juga dapat dirangkai sedemikian rupa sehingga berfungsi sebagai logic gate, memori, dan komponen-komponen lainnya. Berikut bambar dari transistor : Gambar 2.25 Transistor

2.5.8 Kondensator

Kondensator atau sering disebut sebagai kapasitor adalah suatu alat yang dapat menyimpan energi di dalam medan listrik, dengan cara mengumpulkan ketidakseimbangan internal dari muatan listrik. [5] Kondensator memiliki satuan yang disebut Farad dari nama Michael Faraday. Kondensator juga dikenal sebagai kapasitor, namun kata kondensator masih dipakai hingga saat ini. Pertama disebut oleh Alessandro Volta seorang ilmuwan Italia pada tahun 1782 dari bahasa Itali condensatore, berkenaan dengan kemampuan alat untuk menyimpan suatu muatan listrik yang tinggi dibanding komponen lainnya. Kebanyakan bahasa dan negara yang tidak menggunakan bahasa Inggris masih mengacu pada perkataan bahasa Italia condensatore, bahasa Perancis condensateur, Indonesia dan Jerman Kondensator atau Spanyol Condensador. a. Kondensator diidentikkan mempunyai dua kaki dan dua kutub yaitu positif dan negatif serta memiliki cairan elektrolit dan biasanya berbentuk tabung. Lambang kondensator mempunyai kutub pada skema elektronika. b. Sedangkan jenis yang satunya lagi kebanyakan nilai kapasitasnya lebih rendah, tidak mempunyai kutub positif atau negatif pada kakinya, kebanyakan berbentuk bulat pipih berwarna coklat, merah, hijau dan lainnya seperti tablet atau kancing baju. Lambang kapasitor tidak mempunyai kutub pada skema elektronika. Gambar 2.26 Kapasior 2.5.9 Regulator Regulator adalah rangkaian regulasi atau pengatur tegangan keluaran dari sebuah catu daya agar efek darinaik atau turunnya tegangan jala-jala tidak mempengaruhi tegangan catu daya sehingga menjadi stabil. [5] Berikut gambar dari regulator. Gambar 2.27 Regulator

2.5.10 LCD Liquid Crystal Display

Liquid Crystal Display LCD adalah sebuah perangkat optis yang dimodulasi secara elektronik. [8] Alat ini berbentuk panel datar tipis yang tersusun atas sejumlah piksel warna atau monokrom yang diisi dengan cristal cair yang disusun didepan sumber cahaya atau reflector. LCD sudah digunakan di berbagai bidang, misalnya dalam alat-alat elektronik, seperti televisi, kalkulator ataupun layar komputer. Pada LCD berwarna semacam monitor, terdapat banyak sekali titik cahaya pixel yang terdiri dari satu buah kristal cair sebagai suatu titik cahaya. Walaupun disebut sebagai titik cahaya, namn kristal cair ini tidak memancarkan cahaya sendiri. Sumber cahaya di dalam sebuah perangkat LCD adalah lampu neon berwarna putih di bagian belakang susunan kristal cair tadi. Titik cahaya yang jumlahnya puluhan ribu bahkan jutaan inilah yang membentuk tampilan citra. Kutub kristal cair yang dilewati arus listrik akan berubah karena pengaruh polarisasi medan magnetik yang timbul dan oleh karenanya akan hanya membiarkan beberapa warna diteruskan sedangkan warna lainnya tersaring. Gambar 2.28. Liquid Crystal Display

2.5.11 DC Motor

Motor DC adalah alat yang mengubah pulsa listrik menjadi gerak, mempunyai prinsip dasar yang sama dengan motor stepper namun gerakannya bersifat kontinyu atau berkelanjutan. [9] Motor DC dibagi menjadi 2 jenis yaitu : 1. Motor DC dengan sikat mekanis komutasi, yaitu motor yang memiliki sifat karbon berfungsi sebagai pengubah arus pada kumparan sedemikian rupa sehingga arah tenaga putaran motor akan selalu sama 2. Motor DC tanpa sikat, menggunakan semi konduktor untuk merubah maupun membalik arus sehingga layaknya pulsa yang menggerakkan motor tersebut. Biasa digunakan pada sistem servo. Karena mempunyai efisiensi tinggi, umur pemakaian lama, tingkat kebisingan suara listrik rendah, karena putarannya halus seperti stepper namun putarannya terus menerus adanya step. Dalam aplikasinya seringkali sebuah motor digunakan untuk arah yang searah dengan jarum jam maupun sebaliknya. Untuk mengubah putaran dari sebuah motor dapat dilakukan dengan cara hardware maupun software. Dengan cara hardware yaitu dengan mengubah arah arus yang mengalir melalui motor tersebut. Secara sederhana seperti yang ada pada Gambar 2.29, hal ini dapat dilakukan hanya dengan mengubah polaritas tegangan motor. Gambar 2.29. Dasar Pengaturan Arah Putar Motor Dengan cara software yaitu motor DC yang digunakan untuk robot di kendalikan oleh transistor. Yang dimana pengaturan inputnya langsung dari pararel port address 378-H.

2.6 Perangkat Lunak

Dalam pengoperasian perangkat keras ini agar dapat bekerja sesuai dengan yang diharapkan maka perlu suatu perangkat lunak yaitu Software yang sesuai dengan mikrokontroller yang digunakan. Disini digunakan IC Mikrokontroller ATMega8535 yang mempunyai 8 Kb Flash Memori. Secara umum bahasa pemrograman yang sesuai dengan mikrokontroller adalah Bahasa Assembly karena merupakan suatu bahasa mesin. Namun mikrokontroler keluarga AVR juga mengijinkan bahasa C sebagai bahasa pemrograman untuk menjalankan instruksi – instruksi pada ATMega8535, sehingga penulis memutuskan untuk memakai bahasa C sebagai bahasa pemrograman dalam pembuatan mobil robot pengikut garis dan pendeteksi halang rintang berbasis mikrokontroler ATMega8535 ini. Dan untuk compiler bahasa C pada mikrokontroler ini digunakan CodeVisionAVR. CodeVisionAVR pada dasarnya merupakan perangkat lunak pemrograman microcontroller keluarga AVR berbasis bahasa C. Ada tiga komponen penting yang telah diintegrasikan dalam perangkat lunak ini: Compiler C, IDE dan Program generator. Berdasarkan spesifikasi yang dikeluarkan oleh perusahaan pengembangnya, Compiler C yang digunakan hampir mengimplementasikan semua komponen standar yang ada pada bahasa C standar ANSI seperti struktur program, jenis tipe data, jenis operator, dan library fungsi standar-berikut penamaannya. Tetapi walaupun demikian, dibandingkan bahasa C untuk aplikasi komputer, compiler C untuk microcontroller ini memiliki sedikit perbedaan yang disesuaikan dengan arsitektur AVR tempat program C tersebut ditanamkan embedded. Khusus untuk library fungsi, disamping library standar seperti fungsi-fungsi matematik, manipulasi String, pengaksesan memori dan sebagainya, CodeVisionAVR juga menyediakan fungsi-fungsi tambahan yang sangat bermanfaat dalam pemrograman antarmuka AVR dengan perangkat luar yang umum digunakan dalam aplikasi kontrol. Beberapa fungsi library yang penting diantaranya adalah fungsi-fungsi untuk pengaksesan LCD, komunikasi I2C, IC RTC Real time Clock, sensor suhu LM75, SPI Serial Peripheral Interface dan lain sebagainya. Untuk memudahkan pengembangan program aplikasi, CodeVisionAVR juga dilengkapi IDE yang sangat user friendly. Selain menu-menu pilihan yang umum dijumpai pada setiap perangkat lunak berbasis Windows, CodeVisionAVR ini telah mengintegrasikan perangkat lunak downloader in system programmer yang dapat digunakan untuk mentransfer kode mesin hasil kompilasi kedalam sistem memori microcontroller AVR yang sedang deprogram. Selain itu, CodeVisionAVR juga menyediakan sebuah tool yang dinamakan dengan Code Generator atau CodeWizardAVR. Secara praktis, tool ini sangat bermanfaat membentuk sebuah kerangka program template, dan juga memberi kemudahan bagi programmer dalam peng- inisialisasian register-register yang terdapat pada microcontroller AVR yang sedang diprogram. Dinamakan Code Generator, karena perangkat lunak CodeVision ini akan membangkitkan kode-kode program secara otomatis setelah fase inisialisasi pada jendela CodeWizardAVR selesai dilakukan. Secara teknis, penggunaan tool ini pada dasarnya hampir sama dengan application wizard pada bahasa-bahasa pemrograman Visual untuk komputer seperti Visual C, Borland Delphi, dan sebagainya. Berikut beberapa coding program yang banyak digunakan dalam pembuatan sebuah robot : 1. menentukan library yang digunakan include mega8535.h Library untuk chip ATmega8535 include delay.h Library delay 2. Membuat sub rutin agar robot dapat bergerak maju void maju { dirA_Ki=1;dirB_Ki=0; Motor kiri maju dirC_Ka=1;dirD_Ka=0; Motor kanan maju } } 3. Membuat sub rutin agar robot belok ke kiri void belok_kiri { unsigned int i; lpwm=50; rpwm=50; Kecepatan pelan delay_ms60; Robot dimajukan sedikit dirA_Ki=0;dirB_Ki=1; Motor kiri mundur dirC_Ka=1;dirD_Ka=0; Motor kanan maju fori=0;i=1000;i++ while SkiXX ||SkiX {}; fori=0;i=1000;i++ while SkiXX || SkiX {}; lpwm=0; rpwm=0; Robot berhenti } 4. Membuat sub rutin agar robot belok ke kanan void belok_kanan { unsigned int i; lpwm=50; rpwm=50; Kecepatan pelan delay_ms60; Robot dimajukan sedikit dirA_Ki=1;dirB_Ki=0; Motor kiri maju dirC_Ka=0;dirD_Ka=1; Motor kanan mundur fori=0;i=1000;i++ while SkaXX ||SkaX {}; fori=0;i=1000;i++ while SkaXX || SkaX {}; lpwm=0; rpwm=0; Robot berhenti } 5. Membuat sub rutin membaca file unsigned char sensor; void scan_rule1 { maju; Robot bergerak maju sensor=PIND; PIND diberi nama sensor sensor=0b00111111; sensor di-AND-kan dengan 0b00111111 switchsensor { case 0b00111110: rpwm=0; lpwm=200; x=1; break; case 0b00111100: rpwm=50; lpwm=200; x=1; break; case 0b00111101: rpwm=75; lpwm=200; x=1; break; case 0b00111001: rpwm=100; lpwm=200; x=1; break; case 0b00111011: rpwm=150; lpwm=200; x=1; break; case 0b00110011: rpwm=200; lpwm=200; break; case 0b00110111: rpwm=200; lpwm=150; x=0; break; case 0b00100111: rpwm=200; lpwm=100; x=0; break; case 0b00101111: rpwm=200; lpwm=75; x=0; break; case 0b00001111: rpwm=200; lpwm=50; x=0; break; case 0b00011111: rpwm=200; lpwm=0; x=0; break; case 0b00111111: break; ifx {lpwm=50; rpwm=0; break;} else {lpwm=0; rpwm=50; break;} } } Variabel x ini berfungsi sebagai pengingat posisi terakhir robot terhadap garis. Jika robot berada di kanan garis, maka x=0. Jika robot berada di kiri garis, maka x=1. Ketika robot lepas dari track, maka program akan membaca kondisi variable x, sehingga dapat ditentukan arah gerak robot agar robot dapat kembali ke garis, seperti terlihat pada instruksi berikut : ifx {lpwm=50; rpwm=0; break;} else {lpwm=0; rpwm=50; break;} Jika x=1 maka robot belok kanan, jika x=0 maka robot belok kiri.

BAB III PERANCANGAN

Pada Bab ini akan dibahas mengenai beberapa hal dasar tentang bagaimana perancangan sebuah robot, komponen-komponen apa saja yang dibutuhkan dalam perancangan robot pengikut garis, bagaimana cara merancang robot mobil, Flowchart fsm algoritma pergerakan Robot mobil, Blok Diagram Hardware Robot mobil dan Analisa setelah robot mobil selesai dibuat.

3.1 Perancangan Robot Mobil

Dalam pembuatan robot ini penulis memperhatikan beberapa aspek yang dibutuhkan, yaitu : 1. Mobil ini dirancang agar dapat melaju secara otomatis pada rute yang sudah disediakan. 2. Selain mengikuti rute yang ada mobil ini juga dirancang untuk dapat membedakan warna merah, kuning, hijau dan dapat melakukan aksi yang sesuai dengan warna yang dikenali. Jika melihat warna merah mobil akan berhenti, jika melihat warna kuning mobil akan mengurangi kecepatan, jika melihat warna hijau mobil akan tetap melaju. 3. Mobil ini dirancang dengan menggunakan Mikrokontroller ATMega8535. 4. Mobil ini nantinya akan menghadapi rintangan yang di dalamnya terdapat perempatan dan pertigaan. Setiap ada perempatan maka mobil secara otomatis akan belok kanan. Sedangkan jika ada pertigaan mobil secara otomatis akan lurus. 5. Semua aksi maju, belok, berhenti, mengurangi kecepatan, putar balik merupakan logika yang diterapkan di dalam program yang ditanamkan ke Mikrokontroller ATMega8535, dan pemrogramannya menggunakan pemrograman CodeVision AVR.

3.2 Algoritma Pergerakan Robot Mobil

Berikut ini adalah algoritma pergerakan mobil pada rute yang telah disediakan: 1. Start 2. Sensor Proximity membaca garis yang ada di lantai rute 3. Jika hitam go to 4, jika putih go to 11 4. Mobil melaju Motor DC kiri bergerak searah jarum jam, Motor DC kanan sebalikanya 5. Mobil robot mengeluarkan cahaya dari cahaya infra merah mendeteksi rintangan jika ada pantulan dari cahaya go to 6, jika tidak ada pantulan go to 7 6. Robot mobil menangkap pantulan cahaya 7. Robot Mobil berputar balik menghindari rintangan 8. Robot mobil jalan terus 9. Jika mobil melalui perlintasan perempatan maka mobil akan secara otomatis berbelok ke kanan motor DC kanan mundur, motor DC tetap maju 10. Mobil bergerak sampai akhir garis rute garis putih bertuliskan finish 11. Selesai

3.3 Perancangan Elektronik

Perancangan elektronik ini meliputi perancangan sensor garis dan comparator nya, sensor warna dan driver motor. Secara umum proses kerja rangkaian elektronik robot mobil dijelaskan pada gambar di bawah ini : Gambar 3.1. Blok Diagram Hardware Robot Penjelasan : A. Proses awal dari system yang akan dibuat ini adalah pembacaan data oleh sensor garis, hasil yang didapatkan dari sensor garis ini berupa tegangan yang didapat dari photodiode. B. Setelah mendapatkan data dari sensor proximity data tersebut dikirimkan ke comparator LM339, hal ini dilakukan untuk mengkonversi hasil awal yang berupa tegangan menjadi output yang berupa nilai digital 0 dan 1. Sensor Proximity Sensor Jarak Mikrokontroler ATMega 8535 Driver Motor Kanan Driver Motor Kiri Motor DC Motor DC C. Hasil digital dari comparator LM339 kemudian dikrimkan ke mikrokontroller ATMega8535. D. Selain sensor garis ada juga sensor jarak yang berfungsi untuk mengenali rintangan yang terdapat di rute lintasan, sensor jarak yang berupa infrared GP2D12 mengeluarkan cahaya yang berasal dari transmitter kemudian cahaya itu diterima oleh receiver GP2D12. dan kemudian GP2D12 mengeluarkan tegangan yang berupa tegangan analog. E. Di ATMega8535 data dari sensor garis dan sensor jarak diproses, pertama-tama data dari sensor garis akan diproses terlebih dahulu, data yang ada akan dirubah menjadi pwm yang nantinya akan dikirimkan ke driver motor untuk melakukan aksi berhenti, mundur atau maju kecepatan dari motor DC diatur berdasarkan pwm yang diberikan oleh ATMega8535. Setelah itu dilakukan pemrosesan data untuk sensor jarak. Hasil dari sensor jarak ini akan memberikan aksi berupa berhenti sejenak, kemudian memutar balik mencari jalan lain yang tidak terdapat rintangannya.

3.4 Proses Perancangan Rangkaian

Dalam pembuatan mobil robot ini ada beberapa rancangan yang harus dibuat, diantaranya adalah rancangan PCB Printed Circuited Board, rancangan rangkaian sensor proximity, rangkaian komparator LM339, rangakaian driver motor, mekanik dan lintasan.

3. 4. 1. Perancangan Jalur PCB Printed Circuited Onboard

Perancangan jalur PCB ini adalah perancangan awal dari semua rangkaian rangkaian sensor proximity, rangkaian komparator LM339, rangkaian driver motor L298N yang nantinya dipakai dalam merancang robot ini. Karena dengan papan yang diatasnya terdapat jalur yang terbuat dari tembaga inilah arus dari tegangan mengalir ke setiap komponen – komponen yang ada di atas papan tersebut. Seperti resistor, variabel resistor, IC, dioda, photodioda dan lain – lain. Berikut cara pembuatan PCB Printed Circuit Onboard : 1. Pertama buat disain dari rangkaian sensor proximity, rangkaian komparator LM339 dan rangkaian driver motor yang digabung dengan minsys di software PCB 123. dengan perbandingan 1 : 1. Gambar 3.2. Disain rangkain sensor proximity, motor driver dan komparator LM339 2. Setelah itu hasil disain yang sudah jadi di print ke kertas dan kemudian di fotocopy ke dalam bentuk mika. 3. Disain yang ada di mika, disetrika ke PCB matrik PCB yang masih kosong dan belum ada lubang dan disainnya. Supaya disain yang berada di mika bisa menempel di PCB matrik. 4. Jika disain sudah berhasil menempel di PCB matrik, masukkan PCB matrik ke dalam larutan ferry Chloride FeCl³. Jika belum menempel lakukan penyetrikaan kembali sampai disain yang berada di mika bisa menempel di PCB matrik. 5. kocok atau keceng PCB matrik yang ada di dalam larutan ferit sampai tembaga yang ada di PCB matrik larut ke dalam larutan. Gambar 3.3. Mengeceng PCB 6. Jika larutan tembaga sudah larut dan jalur rangkaian sudah terbentuk. Gosok PCB matrik dengan menggunakan kertas gosok. Supaya jalur terlihat jelas dan sudah tidak ada sisa larutan di PCB matrik. Gambar 3.4. Rangkaian yang sudah terbentuk 7. Pengeboran PCB untuk pin atau kaki komponen 8. Pemasangan komponen dan penyoderan pada PCB, pasang terlebih dahulu komponen pasif seperti resistor, kapasitor, diode dan variable resistor. Kemudian baru pasang komponen yang aktif. Pasang IC untuk komponen yang tidak tahan panas yang terlebih sewaktu penyolderan, dengan catatan jangan dahulu memasang IC dalam soketnya. Hal ini dilakukan untuk menghindari kerusakan komponen akibat panas penyolderan. 9. Pemotongan sisi kaki komponen yang masih panjang 10. Terakhir pengetasan alat

3.4.2 Perancangan Rangkaian Sensor Garis dan Komparator

Bahan-bahan yang dibutuhkan unuk membuat sensor garis dan comparator ini adalah : a. LED superbright warna merah 6 buah b. LED hijau 6 buah c. Photodioda 6 buah d. Resistor 220 Ω 6 buah e. Resistor 10K Ω 6 buah f. Resistor 470 Ω 6 buah g. Variabel resistor 10K Ω 6 buah h. IC LM339 2 buah i. Jack housing 6 kaki 1 buah Gambar rancangan schematic dari sensor garis dan comparator ini adalah sebagai berikut: Gambar 3.5 Schematic Sensor Garis dan Comparator Untuk mengetahui lebih jelas mengenai proses kerja dari sensor garis dan comparator ini dapat dilihat pada flowchart di bawah ini : START Baca posisi mobil Baca warna lintasan A Gambar 3.6 Flowchart Sensor Proximity Penjelasan : A. Proses pertama sensor garis ini dimulai dengan pembacaan posisi mobil, acuan yang digunakan oleh mobil adalah garis hitam yang terdapat di rute. Posisi tersebut dapat dilihat pada gambar 3.4 Gambar 3.7 Posisi mobil terhadap garis lintasan Hitung nilai tegangan Vp= Rs Rs+R Vcc Bandingkan nilai Vp dengan nilai Vres Vp Vres Vo = 0 Vo = Vcc digital high 1 output Kirim Vo ke END Y Tida A Penejelasan : A. Posisi 1. Posisi robot ada di sebelah kiri dari garis yang terdapat di lintasan, yang berarti hanya sensor yang sebelah kanan saja yaitu sensor KA2 yang membaca garis hitam. B. Posisi 2. Posisi robot ada si sebelah kiri dari garis yang terdapat di lintasan dengan 2 sensor sebelah kanan yaitu sensor KA2 dan KA1 membaca garis hitam sedangkan 4 lainnya membaca background putih. C. Posisi 3. Posisi robot ada di hampir tengah – tengah yaitu sensor KA1 dan sensor KA membaca garis hitam sedangkan 3 sensor kiri dan 1 sensor kanan yaitu sensor kanan terluar membaca background putih. D. Posisi 4. Posisi robot ada di tengah – tengah garis hitam, yaitu sensor KA dan KI yang tepat berada di tengah-tengah membaca garis hitam, sedangkan sensor paling kiri dan kanan membaca background putih. E. Posisi 5. Posisi robot berada hampir di tengah – tengah ketika 2 sensor sebelah kiri yaitu sensor KI dan KI1 membaca garis hitam sedangkan 3 sensor kanan dan sensor kiri terluar yaitu KI2 membaca background putih. F. Posisi 6. Posisi robot ada di sebelah kanan garis hitam, ketika sensor KI1 dan KI2 membaca garis hitam, sedangkan sensor yang lainnya membaca background putih. G. Posisi 7. Posisi robot ada di sebelah kanan garis hitam, yaitu ketika sensor kiri terluar membaca garis hitam sedangkan sensor lainnya membaca background putih. Secara teori ketujuh posisi inilah yang mungkin terjadi saat mobil melaju di lintasam, tetapi pada prakteknya selain ketujuh posisi di atas ada posisi-posisi lain yang juga mungkin terjadi, yaitu posisi 8 ketika hanya sensor KA1 yang membaca garis hitam, posisi 9 ketika hanya sensor KI1 yang membaca garis hitam, posisi 10 ketika semua sensor membaca garis hitam dan posisi 11 ketika semua sensor membaca background putih. Posisi – posisi di atas lah yang akan mempengaruhi mobil untuk melakukan aksi lurus, belok kiri atau kanan, pergerakan mobil tersebut dapat dilihat pada tabel 3.1 : Tabel 3.1 Pergerakan mobil Posisi Aksi Robot Roda Kiri Roda Kanan 1 Belok kanan tajam Maju cepat Berhenti 2 Belok kanan sedang Maju cepat Maju lambat 3 Belok kanan ringan Maju cepat Maju sedang 4 Maju lurus Maju cepat Maju cepat 5 Belok kiri ringan Maju sedang Maju cepat 6 Belok kiri sedang Maju lambat Maju cepat 7 Belok kiri tajam Berhenti Maju cepat 8 Belok kanan ringan Maju cepat Maju sedang 9 Belok kiri ringan Maju sedang Maju cepat 10 Belok kanan tajam Maju cepat Berhenti 11 Kondisional Kondisional Kondisional B. Setelah mengetahui letak dari mobil, langkah selanjutnya adalah mencari nilai tegangan dari masing-masing photodiode jika photodiode mengenai warna hitam maka resistansi photodiode akan berkurang sedikit, sedangkan jika mengenai warna putih maka resistansinya akan menjadi kecil. Resistansi photodiode pada umunya adalah sebesar 150K Ω, jika membaca garis hitam maka nilai resistansinya bisa menjadi ±145K Ω sedangkan jika membaca garis putih nilai resistansinya menjadi ±10K Ω. Dengan diketahuinya nilai resistansi dari photodiode dan resistor yang digunakannya, maka kita dapat menghitung nilai tegangan dari masing-masing photodiode dengan menggunakan rumus Vp = Rs Rs + R Vcc …………………………………... 3.1 Keterangan : Vp : Tegangan Photodioda Rs : Resistansi Photodioda R : Resistansi Resistor Vcc : Supply Diketahui : Nilai resistansi resistor : 10K Ω. Nilai resistansi photodiode saat warna putih : 10K Ω Nilai resistansi photodiode saat warna hitam : 145K Ω Perhitungan : Saat photodiode membaca warna putih Vp = 10 10+10 6V = 3V Saat photodiode membaca warna hitam Vp = 145 145+10 6V = 5.61V Jadi, nilai tegangan photodiode saat membaca warna putih adalah 3V, dan saat membaca warna hitam adalah 5.61V. C. Setelah mendapatkan nilai tegangan dari photodiode nilai tersebut dikirim ke rangkaian comparator, dan di rangkaian comparator nilai tersebut dibandingkan dengan nilai tegangan dari variable resistor yang digunakan. Prinsip dari comparator ini adalah jika Vp Vres maka Vo = Vcc digital high 1 output, sedangkan jika Vres Vo maka Vo = 0 digital low 0 output. Untuk mencari nilai tegangan dari variable resistor kita bisa mencari rata-rata dari tegangan photodiode yang akan dibandingkan, sehingga bisa didapatkan nilai sebagai berikut : Vres = 3+5.61 2 = 4.305V Setelah mengetahui nilai tegangan dari variable resistor, maka tegangan dari photodiode dibandingkan dengan Vres tersebut, untuk hasilnya dapat dilihat pada tabel 3.2 Tabel 3. 2 Hasil perbandingan Vp dengan Vres Vp Vres Vo 5,612 4,306 6 1 digital Output 3 4,306 0 0 digital output Hasil dari perbandingan ini kemudian dikirmkan ke ATMega 8535 untuk kemudian diproses dan dikirmkan ke driver motor sebgai interupsi pergerakan roda maju, mundur, berhenti.

3.4.3 Perancangan Sensor Jarak

Sensor jarak ini berfungsi untuk mendeteksi rintangan yang berada di depan robot. Berikut ini adalah gambar schematic rangkaian sensor jarak: . Gambar 3.8 Schematic Sensor Jarak Sensor jarak ini bekerja dengan cara mengirimkan cahaya inframerah jika terdapat benda atau rintangan di depannya maka cahaya itu akan memantul dan pantulan cahaya tersebut diterima oleh receiver sensor cahaya untuk kemudian hasil dari sensor tersebut yang berupa tegangan analog dikirim ke mikrokontroler melalui PORTA atau Port ADC

3.4.4 Perancangan Rangkaian Driver Motor

Driver ini berfungsi untuk memberikan interuksi kepada motor dc untuk melakukan sebuah aksi, baik itu maju, mundur, ataupun berhenti. Bahan-bahan yang dibutuhkan untuk membuat rangkaian ini adalah sebagai berikut : a. Transistor 4 buah b. Resistor 330 Ω 6 buah c. Optocoupler 3 buah d. Diode 4148 2 buah Gambar rancangan schematic dari driver motor ini adalah sebagai berikut: Gambar 3.9 Schematic Driver Motor Keterangan : Proses kendali dalam hal ini ditentukan oleh logika dari OUT_KIRI_A, OUT_KIRI_B, dan REM_KIRI, di mana agar motor tersebut bekerja, maka kondisi OUT_KIRI_A, OUT_KIRI_B, dan REM_KIRI harus saling berbeda logika. Motor akan maju OUT_KIRI_A bernilai 0 dan OUT_KIRI_B bernilai 1, motor akan mundur apabila OUT_KIRI_A bernilai 1 dan OUT_KIRI_B bernilai 0, dan motor akan berhenti jika REM_KIRI bernilai 0. Berikut ini adalah tabel kebenaran motor driver, yang digunakan untuk mengetahui proses input, output dan aksi yang diberikan ke motor. M Tabel 3.3 Tabel Kebenaran Driver Motor Kiri Out A Out B Rem Aksi Motor 0 1 1 Maju 1 0 1 Mundur X X 0 Berhenti

3.5 Perancangan Mekanik Mobil

Untuk membuat mekanik robot bahan – bahan yang dibutuhkan adalah: 1. Acrylic 2. Motor DC 6 Volt 2 buah 3. Gear box 1 buah 4. Ban berdiameter 4 – 5 cm 2 buah 5. Rangkaian – rangkaian sensor proximity, comparator LM339, driver motor yang sudah dibuat sebelumnya 6. Kabel pelangi ± 45cm 7. Connector 6 pin 4 buah 8. Black Housing 1 pin 10 buah 9. Baterai 1,5 V 6 buah Berikut gambar dari rancangan robot mobil : Gambar 3.10. Rancangan robot mobil tampak bawah Penjelasan : Bagian bawah robot, terdapat rangkaian sensor proximity yang kegunaannya membaca garis hitam dan putih. Sensor proximity terdiri dari photodiode dan lampu led superbright, gearbox dan sensor inframerah Gambar 3.11 Rancangan Robot mobil tampak atas Penjelasan : Dibagian atas atau tepatnya di lantai 2 bagian robot terdapat beberapa rangkaian yaitu rangkaian ATMega8535 yang terdiri dari mikrokontroller ATMega8535 dan minsys tempat mikrokontroller ditancapkan. Rangkaian motor driver motor, power supply, LCD dan Comparator

3.6 Proses Perancangan Rute Simulasi

Rute simulasi ini dibuat untuk menguji apakah mobil dapat berjalan sebagaimana mestinya atau tidak. Bahan – bahan yang diperlukan untuk membuat rute ini adalah: A. Papan triplek dengan panjang 120cm dan lebar 160cm. B. Cat putih untuk membuat alas berwarna putih pada triplek. C. Kertas hitam untuk membuat jalur lintasannya. D. Kertas merah, kuning, hijau. E. Kayu 10 M untu membuat list supaya rute lebih kuat dan stabil. Berikut ini adalah gambar perancangan rute simulasi yang akan dibuat: Gambar 3.12. Rute simulasi

3.7 Proses Perancangan Perangkat Lunak

tidak ya tidak ya Gambar 3.13 Diagram Alir perangkat lunak Start Inisialisasi Port Mobil dijalankan Pembacaan sensor IR Pemrosesan data Sensor IR Convert data ke PWM PWM 0 End Keluaran ke Motor Jarak = 60 Pembacaan sensor garis Pemrosesan data Sensor garis Direksi = Putar balik kanan Berikan nilai PWM Keluaran ke Motor Penjelasan : a. Port yang digunakan adalah port A.1 untuk sensor inframerah , port D.0 – D.5 untuk sensor garis, port C.0 – C.1 untuk counter, port C.2 – C.7 untuk driver motor, port B.0 – B.2 dan B.4 – B.5 untuk LCD b. Selain inisialisasi port ada juga inisialisasi variable – variable lainnya, seperti x untuk posisi, lpwm, rpwm untuk nilai pwm dari motor, second untuk waktu dan lain – lain. c. Pertama robot mobil akan berjalan maju. Setelah maju mobil akan membaca garis dan mengeluarkan cahaya inframerah. d. Robot akan terus memproses hasil pembacaan dari sensor inframerah dan garis jika sensor menemukan rintangan dan mengeluarkan tegangan = 60 maka robot akan mengirimkan data ke mikrokontroler yang kemudian program akan memberikan PWM dan direksi pada motor kiri dan kanan supaya robot dapat memutar balik menuju jalan yang tidak terdapat halangan e. Jika robot tidak menemukan rintangan maka robot akan memproses data dari sensor garis untuk kemudian dikirimkan ke mikrokontoler yang kemudian program akan memberikan PWM dan direksi ke motor. f. PWM yang akan dikirim harus lebih besar dari 0, karena jika PWM bernilai 0 maka berarti mobil akan berhenti dan program akan berakhir. g. Setelah menggerakkan motor, program akan kembali mengeksekusi pembacaan garis dan pendeteksian rintangan dimana robot akan mengeluarkan sinar inframerah yang nantinya hasil tangkapan dari sensor itu akan di kirim ke mikrokontroler kembali. Begitu juga dengan pembacann garis yang mana sensor proximity sebagai sensor garis akan mengeluarkan sinar merah dari lampu LED yang kemudian hasil pantulan dari lampu LED itu akan di tangkap oleh photodiode dan dikirim ke rangkaian komparator dari rangkaian komparator dikirim ke mikorkontroler kembali. proses ini dilakukan secara terus menerus sampai menemukan titik dimana pwm bernilai.

BAB IV IMPLEMENTASI PERANGKAT LUNAK

Ada beberapa hal yang harus diperhatikan sebelum program Robot mobil dibuat dan pada akhirnya dapat dijalankan dengan baik, cara membuat program dan cara mengimplementasikan program yang sudah dibuat dengan memasukkannya ke dalam mikrokontroler ATMega8535 akan dibahas pada bab ini. 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 4, 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 system 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 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 : include mega8535.h include delay.h include stdio.h define eki PORTC.4 enable untuk pwm define dirki PORTC.3 direksi motor kiri define remki PORTC.2 rem motor kanan define eka PORTC.7 enable untuk pwm define dirka PORTC.6 direksi motor kanan define remka PORTC.5 rem motor kanan define xxska PIND.0 define xska PIND.1 define ska PIND.2 define ski PIND.3 define xski PIND.4 define xxski PIND.5 define ok PINC.0 define xmode PINC.1 Code di atas adalah code untuk memanggil fungsi header dan port-port yang digunakan. void scan { sensor=PIND; sensor=0b00111111; switch sensor { memberikan perintah pada roda kiri 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. Jika mobil berada di perempatan maka mobil akan berbelok kanan, fungsi ini bisa dilihat di case 0b00111111: belka90,50; x=0; z=4; break ; code ini berarti mobil sedang berada di atas perempatan semua sensor aktif kemudian mobil belok 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. 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 . fungsi ini digunakan untuk mengecek apakah ada rintangan di depan robot mobil. Sensor GP2D12 diset dengan nilai tegangan output = 60. Jika pada saat tegangan bernilai = 60 maka robot mobil akan berhenti sebentar untuk kemudian berbelok kanan dengan kecepatan motor dc yang telah ditentukan.

4. 3. Prosedur Pemasangan Program Pada ATMega8535

Untuk memasang program pada chip ATMega8535 maka save program yang sudah dibuat, compile terlebih dahulu untuk mengecek ada kesalahan atau tidak. Gambar 4.6 Hasil compilasi program Void mode_us { us=read_adc1; membaca infrared pada Port A.1 ifus=60goto w; jika tegangan ADC=60 ke fungsi w fori=0;i200;i++ {xxd_scan;delay_ms1;} fori=0;i2000;i++ while sensor 0b00111111 = 0b00111111us60 { fori=0;i200;i++ {xxd_scan;delay_ms1;} w: fungsi w stop;delay_ms300; robot berhenti selama 300 milisecond turnka60,90,100; robot berputar balik stop;delay_ms300; berhenti selama 300 milisecond } } Setelah tidak ada yang error lakukan proses penyimpanan program. Program akan berekstensi ”.c”. agar file dapat didownload ke mikrokontroler ke mikrokontroler ATmega8535 file tersebut harus berekstensi “.hex”, untuk mengubahnya menjadi file yang berekstensi “.hex”, yaitu dengan cara “build” atau dengan menekan tombol “Shift+ f9”, Gambar 4.7 halaman untuk penanaman program pada chip Untuk pengisian program ke chip tekan tombol “Program the chip”. Sebelum mendownload program ke chip ATMega8535 pastikan port downloader sudah terpasang dengan benar dan power supply tmenyala dengan baik. Tegangan yang dibutuhkan untuk ATMega8535 adalah 9V. Berikut blok diagram pemasangan program : Gambar 4.8 Blok Diagram Pemasangan Program Pada Chip Software Compiler AVR Software Downloader AVR Mikrokontroler ATMega 8535

BAB V HASIL DAN PEMBAHASAN