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