Post on 15-Apr-2017
BAB II
LANDASAN TEORI
2.1 Mikrokontroler
Mikrokontroler merupakan suatu komponen elektronika yang didalamnya
terdapat rangkaian mikroprosesor, memori (RAM/ROM) dan I/O, rangkaian
tersebut terdapat dalam level chip atau biasa disebut single chip microcomputer.
Pada mikrokontroler sudah terdapat komponen-komponen mikroprosesor dengan
bus-bus internal yang saling berhubungan. Komponen-komponen tersebut adalah
RAM, ROM, timer, komponen I/O paralel dan serial, dan interrupt kontroler.
Adapun keunggulan dari mikrokontroller adalah adanya sistem interrupt. Sebagai
perangkat kontrol penyesuaian, mikrokontroler sering disebut juga untuk
menaikkan respon eksternal (interrupt) pada waktu yang nyata. Perangkat tersebut
harus melakukan hubungan switching cepat, menunda satu proses ketika adanya
respon eksekusi yang lain. Mikrokontroler juga merupakan otak dari sistem
elektronika dimana kita bisa memprogram sesuai keinginan kita (Heriyanto, M.
Ary dkk, 2008)
2.1.1 Mikrokontroler AVR
Mikrokontroler Atmega8 (AVR) ini merupakan salah satu dari jenis
mikrokonroller CMOS 8 bit berdassarkan aristektur AVR RISc yang memiliki
performa tinggi dengan disipasi daya yang tendah, serta untuk melakukan suatu
perintah hanya membutuhkan 1 clok osilator, ukuran yang kecil serta mempunyai
fasilitas yang lengkap, sehingga sangat cocok untuk dijadikan sebuah alat kontrol
yang membutuhkan ukuran kecil serta daya rendah. Berikut gambar
mikrokontroler ATMega8 (Harsono, 2009:2).
Gambar 2.1 Mikrokontroler ATmega8
4
Arsitektur mikrokontroler jenis AVR (Alf and Vegard RISC) pertama
kali dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian
Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan. Mikrokontroler
AVR kemudian dikembangkan lebih lanjut oleh Atmel. Seri pertama AVR yang
dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan konfigurasi pin
yang sama dengan mikrokontroler 8051, termasuk address dan data bus yang
termultipleksi.
Mikrokontroler AVR menggunakan teknologi RISC (Reduced Instruction
Set Computer) dimana set instruksinya dikurangi dari segi ukurannya dan
kompleksitas mode pengalamatannya. Pada awal era industri komputer, bahasa
pemrograman masih menggunakan kode mesin dan bahasa Assembly. Untuk
mempermudah dalam pemrograman para desainer komputer kemudian
mengembangkan bahasa pemrograman tingkat tinggi yang mudah dipahami
manusia. Namun akibatnya, instruksi yang ada menjadi semakin komplek dan
membutuhkan lebih banyak memori. Dan tentu saja siklus eksekusi instruksinya
menjadi semakin lama. Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi
berukuran 16 bit dan sebagian besar dieksekusi dalam 1 siklus clock. Berbeda
dengan mikrokontroler MCS-51 yang instruksinya bervariasi antara 8 bit sampai
32 bit dan dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus mesin
membutuhkan 12 periode clock. Dalam perkembangannya, AVR dibagi menjadi
beberapa varian yaitu AT90Sxx, ATMega, AT86RFxx dan ATTiny. Pada
dasarnya yang membedakan masing-masing varian adalah kapasitas memori dan
beberapa fitur tambahan saja.
Mikrokontroler Atmega8 (AVR) merupakan salah satu jenis
mikrokontroller yang di dalamnya terdapat berbagai macam fungsi. Perbedaannya
pada mikro yang pada umumnya digunakan seperti MCS51 adalah pada AVR
tidak perlu menggunakan oscillator eksternal karena di dalamnya sudah terdapat
internal oscillator. Selain itu kelebihan dari AVR adalah memiliki Power-On
Reset, yaitu tidak perlu ada tombol reset dari luar karena cukup hanya dengan
mematikan supply, maka secara otomatis AVR akan melakukan reset. Untuk
beberapa jenis AVR terdapat beberapa fungsi khusus seperti ADC, EEPROM
sekitar 128 byte sampai dengan 512 byte. AVR Atmega8 adalah mikrokontroler
5
CMOS 8-bit berarsitektur AVR RISC yang memiliki 8K byte in-System
Programmable Flash.
Mikrokontroler dengan konsumsi daya rendah ini mampu mengeksekusi
instruksi dengan kecepatan maksimum 16MIPS pada frekuensi 16MHz. Jika
dibandingkan dengan ATmega8L perbedaannya hanya terletak pada besarnya
tegangan yang diperlukan untuk bekerja. Untuk Atmega 8 tipe L, mikrokontroler
ini dapat bekerja dengan tegangan antara 2,7 - 5,5 V sedangkan untuk Atmega 8
hanya dapat bekerja pada tegangan antara 4,5 – 5,5 V.
Fitur-fitur yang ada pada mikrokontroler ATmega8 ini adalah memori
program 8 Kb dengan flash memori 1000 tulis atau hapus, memori data SRAM
dengan kapasitas 1 Kb dan EEPROM dengan kapasitas 512 byte dengan 100.000
tulis dan hapus. Dan frekuensi pengoperasian hingga 16 MHz. memiliki 23 I/O
yang dapat diprogram, 6 chanel ADC 10 bit, USART, TWI, Tiga PWM, Timer 16
bit dan counter 16 bit.
2.1.2 Central Processing Unit (CPU)
Unit pemrosesan pusat CPU (Central Processing Unit), Terdiri dari dua unit
yaitu unit pengendali CU (Control Unit), dan unit aritmatika dan logika ALU
(Aritmetic and Logical Unit). Unit aritmatika dan logika melaksanakan operasi
aritmatika untuk data yang melaluinya. Fungsi aritmatika yang lazim termasuk
logika AND, logika OR dan Operasi pergeseran.
Fungsi utama sebuah unit pengendali adalah mengambil, mengkode dan
melaksanakan urutan instruksi sebuah program yang tersimpan dalam memori.
Unit pengendali mengatur urutan operasi sebuah sistem. Khususnya unit ini
menghasilkan dan mengatur sinyal pengendali yang diperlukan untuk
mensinkronkan seluruh operasi sebuah sistem, selain itu juga aliran data dan
instruksi program di dalam dan di luar ALU.
2.1.3 Memori
Setiap sistem mikrokontroler memerlukan memori untuk dapat menyimpan
program dan data. Pada mikrokontroler sendiri sudah terdapat memori data dan
memori program, ada beberapa tingkatan memori diantaranya adalah register
6
internal, memori utama dan memori masal. Register internal adalah memori di
dalam ALU. Waktu akses register ini sangat cepat umumnya kurang dari 100ns.
Ada dua tipe logika memori, tergantung dari kemungkinan aksesnya, yaitu
yang dihubungkan secara acak Random Access Memory (RAM) yang bisa dibaca
atau ditulisi, dan memori yang hanya untuk dibaca saja Read Only Memory
(ROM). Dalam mikrokontroler, RAM itu disebut sebagai memori data (Data
Memory), sedangkan ROM dikenal sebagai memori program (Program Memory).
Random Access Memory (RAM) adalah memori yang dapat dibaca atau ditulisi.
Data dalam RAM akan terhapus (volatile) bila catu daya dihilangkan.
Karena sifat RAM yang volatile, maka program mikrokontroler tidak
tersimpan dalam RAM. RAM hanya digunakan untuk menyimpan data secara
sementara. Terdapat dua teknologi yang dipakai untuk membuat RAM yaitu RAM
Statik dan RAM Dinamik. Dalam RAM statik satu bit informasi tersimpan dalam
sebuah flip-flop. RAM statik tidak memerlukan penyegar dan penangannya tidak
terlalu rumit. Isi RAM tetap selama catu daya diberikan. Sedangkan RAM
Dinamik menyimpan bit informasi sebagai muatan. Sel memori elementer dibuat
dari kapasitansi gerbang substrat transistor MOS.
2.1.4 Konfigurasi Pin ATmega8.
ATmega8 memiliki 28 Pin, yang masing-masing pin nya memiliki fungsi
yang berbeda-beda baik sebagai port maupun fungsi yang lainnya. Berikut akan
dijelaskan fungsi dari masing-masing kaki ATmega8.
1. VCC merupakan supply tegangan digital.
2. GND merupakan ground untuk semua komponen yang membutuhkan
grounding. Port B (PB7...PB0) Didalam Port B terdapat XTAL1, XTAL2,
TOSC1, TOSC2. Jumlah Port B adalah 8 buah pin, mulai dari pin B.0
sampai dengan B.7. Tiap pin dapat digunakan sebagai input maupun
output. Port B merupakan sebuah 8-bit bi-directional I/O dengan internal
pull-up resistor. Sebagai input, pin-pin yang terdapat pada port B yang
secara eksternal diturunkan, maka akan mengeluarkan arus jika pull-up
resistor diaktifkan. Khusus PB6 dapat digunakan sebagai input Kristal
(inverting oscillator amplifier) dan input ke rangkaian clock internal,
7
bergantung pada pengaturan Fuse bit yang digunakan untuk memilih
sumber clock. Sedangkan untuk PB7 dapat digunakan sebagai output
Kristal (output oscillator amplifier) bergantung pada pengaturan Fuse bit
yang digunakan untuk memilih sumber clock. Jika sumber clock yang
dipilih dari oscillator internal, PB7 dan PB6 dapat digunakan sebagai I/O
atau jika menggunakan Asyncronous Timer/Counter2 maka PB6 dan PB7
(TOSC2 dan TOSC1) digunakan untuk saluran input timer.
3. Port C (PC5…PC0) port C merupakan sebuah 7-bit bi-directional I/O port
yang di dalam masing-masing pin terdapat pull-up resistor. Jumlah pin nya
hanya 7 buah mulai dari pin C.0 sampai dengan pin C.6. Sebagai
keluaran/output port C memiliki karakteristik yang sama dalam hal
menyerap arus (sink) ataupun mengeluarkan arus (source).
4. RESET/PC6 jika RSTDISBL Fuse diprogram, maka PC6 akan berfungsi
sebagai pin I/O. Pin ini memiliki karakteristik yang berbeda dengan pin-
pin yang terdapat pada port C lainnya. Namun jika RSTDISBL Fuse tidak
diprogram, maka pin ini akan berfungsi sebagai input reset. Dan jika level
tegangan yang masuk ke pin ini rendah dan pulsa yang ada lebih pendek
dari pulsa minimum, maka akan menghasilkan suatu kondisi reset
meskipun clock-nya tidak bekerja.
5. Port D (PD7…PD0) port D merupakan 8-bit bi-directional I/O dengan
internal pull-up resistor. Fungsi dari port ini sama dengan port-port yang
lain. Hanya saja pada port ini tidak terdapat kegunaan-kegunaan yang lain.
Pada port ini hanya berfungsi sebagai masukan dan keluaran saja atau
biasa disebut dengan /O.
6. AVcc ini berfungsi sebagai supply tegangan untuk ADC. Untuk pin ini
harus dihubungkan secara terpisah dengan VCC karena pin ini digunakan
untuk analog saja. Bahkan jika ADC pada AVR tidak digunakan tetap saja
disarankan untuk menghubungkannya secara terpisah dengan VCC. Jika
ADC digunakan, maka AVcc harus dihubungkan ke VCC melalui low pass
filter.
7. AREF merupakan pin referensi jika menggunakan ADC.
8
2.1.5 Input/Output
Input/output diperlukan untuk berkomunikasi dengan dunia luar. Modul
masukan menyediakan informasi bagi ALU atau memori. Alat masukan yang
khas seperti keyboard (keypad) atau sensor (transducer). Modul keluaran
menyajikan data yang datang dari ALU atau melaksanakan perintah-perintah.
Modul keluaran yang khas adalah printer, satu set lampu, atau mekanisme
pengendali motor stepper, relay, LED ( Ligh Emmitting Diode), atau LCD (Liquid
Crystal Display). Dalam mikrokontroler ATmega328 terdapat input output atau
yang disebut pin mapping seperti ditunjukkan gambar berikut ini :
Gambar 2.2 Pin Mapping ATMega8
2.1.6 Pewaktu CPU
Agar dapat mengeksekusi program, mikrokontroler membutuhkan pulsa
clock. Pulsa ini dapat dihasilkan dengan memasang rangkaian resonator pada pin
XTAL1 dan XTAL2. Frekuensi kerja maksimum ATmega328 adalah 16 MHz.
Mikrokontroler ATmega328 memiliki osilator internal (on-chip oscillator) yang
dapat digunakan sebagai sumber clock bagi CPU. Untuk menggunakan osilator
internal diperlukan sebuah kristal atau resonator keramik antara pin XTAL1 dan
XTAL2 dan kapasitor yang dihubungkan ke ground. Jadi clock yang diperoleh
CPU berasal dari sinyal yang diberikan dari sebuah kristal. Penggunaan kristal
dengan frekuensi dari 6 MHz sampai 16 MHz, sedangkan untuk kapasitor dapat
9
bernilai 27 pF sampai 33 pF. Hubungan oscilator untuk ATmega328 dapat dilihat
pada gambar 2.3
Gambar 2.3 crystal 16 Mhz
Dalam mikrokontroler dikenal istilah Machine Cycle (MC) / Siklus
Mesin, dimana :
1 MC = 6 state = 12 periode clock
Jika frekuensi crystal yang digunakan adalah 12 MHz maka 1 MC =
12/frekuensi crystal = 12/12 MHz =1uS
Gambar 2.4 Siklus Mesin
2.1.7 Arsitektur Mikrokontroler ATMega8
Mikrokontroler ATMega8 bekerja dengan level tegangan TTL, dalam hal
ini digunakan tegangan sebesar 5 volt. Semua port yakni digital pin 0 samapi
dengan 13 dan pin analog 0 sampai 5 bersifat bi-directional I/O dengan internal
pull-up. Untuk membangkitkan frekuensi kerja pada perancangan ini
menggunakan osilator kristal sebesar 16 MHz. Berdasarkan data sheet ATmega8
besar nilai kapasitor yang digunakan harus berada pada 33 + 10 pF, pada
10
perancangan ini digunakan kapasitor 22 pF. Dengan demikian maka dapat
dihasilkan waktu mendekati 1 mikrodetik setiap satu siklus mesin.
Reset (Pin 1) bekerja pada saat berlogika tinggi, transisi logika dari rendah
ke tinggi akan mereset sistem minimum ATMega8. Untuk menghasilkan sinyal
tersebut digunakan kapasitor, tahanan dan sebuah saklar push bottom.
Penyemat X1 dan X2 dihubungkan dengan kristal yang berfungsi sebagai
pembentuk sebuah isolator bagi mikrokontroler. Kristal 16 MHz ini didukung dua
capasitor keramik C1 dan C2 yang nilainya sama sebesar 22pF. Apabila terjadi
beda potensial pada kedua kapasitor tersebut maka kristal akan berosilasi. Pulsa
yang keluar adalah berbentuk gigi gergaji dan akan dikuatkan oleh rangkaian
internal pembangkit rangkaian pulsa pada mikrokontroler sehingga akan berubah
menjadi pulsa clock. Untuk pembagian dari frekuensi internal mikrokontroler itu
sendiri yang diinisialisasi dengan program.
Penyemat Reset dihubungkan dengan saklar yang digunakan untuk me-
Reset mikrokontroller. Karena kaki reset ini aktif berlogic tinggi maka diperlukan
Resistor R1 yang nilainya 10K yang dihubungkan dengan tegangan 0 Volt untuk
memastikan penyemat Reset berlogic rendah saat sistem ini bekerja. Kapasitor
C1=10F berfungsi untuk meredam adanya kesalahan akibat penekanan saklar
Reset. Rangkaian sistem minimum ATMega8 dapat digambarkan seperti Gambar
2.5
Gambar 2.5 Rangkaian sistem minimum ATMega8
11
2.2 Sensor Cahaya LDR (Light Dependent Resistor)
Sensor cahaya LDR (Light Dependent Resistor) adalah salah satu resistor
yang dapat mengalami perubahan resistansinya apabila mengalami perubahan
penerimaan cahaya. Besarnya nilai hambatan pada sensor cahaya LDR (Light
Dependent Resistor) tergantung pada besar kecilnya cahaya yang diterima oleh
sensor itu sendiri. LDR (Light Dependent Resistor) sering disebut dengan alat atau
sensor yang berupa resistor yang peka terhadap cahaya. Biasanya LDR (Light
Dependent Resistor) terbuat dari cadmium sulfida yaitu merupakan bahan
semikonduktor yang risistansinya berubah-ubah menurut banyaknya cahaya
(sinar) yang mengenainya. Resistansi LDR (Light Dependent Resistor) pada
tempat yang gelap biasanya mencapai sekitar 10 mΩ, dan ditempat terang LDR
(Light Dependent Resistor) mempunyai resistansi yang turun menjadi sekitar
150Ω. Simbol LDR (Light Dependent Resistor) dapat dilihat seperti pada gambar
berikut.
Gambar 2.6 Simbol dan fisik sensor cahaya LDR
2.2.1 Karakteristik Sensor Cahaya LDR (Light Dependent Resistor)
Sensor Cahaya LDR (Light Dependent Resistor) adalah suatu bentuk
komponen yang mempunyai perubahan resistansi yang besarnya tergantung pada
cahaya. Karakteristik LDR (Light Dependent Resistor) terdiri dari dua macam
yaitu Laju Recovery dan Respon Spektral sebagai berikut:
1. Laju Recovery Sensor Cahaya LDR (Light Dependent Resistor)
Bila sebuah Sensor Cahaya LDR (Light Dependent Resistor)
dibawa dari suatu ruangan dengan level kekuatan cahaya tertentu ke dalam
suatu ruangan yang gelap, maka bisa kita amati bahwa nilai resistansi dari
LDR (Light Dependent Resistor) tidak akan segera berubah resistansinya
pada keadaan ruangan gelap tersebut. Namun LDR (Light Dependent 12
Resistor) tersebut hanya akan bisa mencapai harga di kegelapan setelah
mengalami selang waktu tertentu. Laju recovery merupakan suatu ukuran
praktis dan suatu kenaikan nilai resistansi dalam waktu tertentu. Harga ini
ditulis dalam K/detik, untuk LDR (Light Dependent Resistor) tipe arus
harganya lebih besar dari 200K/detik (selama 20 menit pertama mulai dari
level cahaya 100 lux), kecepatan tersebut akan lebih tinggi pada arah
sebaliknya, yaitu pindah dari tempat gelap ke tempat terang yang
memerlukan waktu kurang dari 10 ms untuk mencapai resistansi yang
sesuai dengan level cahaya 400 lux.
2. Respon Spektral Sensor Cahaya LDR (Light Dependent Resistor)
Sensor Cahaya LDR (Light Dependent Resistor) tidak mempunyai
sensitivitas yang sama untuk setiap panjang gelombang cahaya yang jatuh
padanya (yaitu warna). Bahan yang biasa digunakan sebagai penghantar
arus listrik yaitu tembaga, aluminium, baja, emas dan perak. Dari kelima
bahan tersebut tembaga merupakan penghantar yang paling banyak,
digunakan karena mempunyai daya hantar yang baik
2.2.2. Prinsip Kerja Sensor Cahaya LDR (Light Dependent Resistor)
Resistansi Sensor Cahaya LDR (Light Dependent Resistor) akan berubah
seiring dengan perubahan intensitas cahaya yang mengenainya atau yang ada
disekitarnya. Dalam keadaan gelap resistansi LDR (Light Dependent Resistor)
seki-tar 10MΩ dan dalam keadaan terang sebesar 1KΩ atau kurang. LDR (Light
Dependent Resistor) terbuat dari bahan semikonduktor seperti cadmium sulfida.
Dengan bahan ini energi dari cahaya yang jatuh menyebabkan lebih banyak
muatan yang dilepas atau arus listrik meningkat. Artinya resistansi bahan telah
mengalami penurunan.
2.3 Sensor Infra merah
Cahaya infra merah merupakan cahaya yang tidak tampak. Jika dilihat dengan
spektroskop cahaya maka radiasi cahaya infra merah akan terlihat pada spektrum
elektromagnet dengan panjang gelombang di atas panjang gelombang cahaya
merah. Radiasi inframerah memiliki panjang gelombang antara 700 nm sampai 1
13
mm dan berada pada spektrum berwarna merah. Dengan panjang gelombang ini
maka cahaya infra merah tidak akan terlihat oleh mata namun radiasi panas yang
ditimbulkannya masih dapat dirasakan/dideteksi.
Pada dasarnya komponen yang menghasilkan panas juga menghasilkan radiasi
infra merah termasuk tubuh manusia maupun tubuh binatang. Cahaya infra merah,
walaupun mempunyai panjang gelombang yang sangat panjang tetap tidak dapat
menembus bahan-bahan yang tidak dapat melewatkan cahaya yang nampak
sehingga cahaya infra merah tetap mempunyai karakteristik seperti halnya cahaya
yang nampak oleh mata.
Pada pembuatan komponen yang dikhususkan untuk penerima infra merah,
lubang untuk menerima cahaya (window) sudah dibuat khusus sehingga dapat
mengurangi interferensi dari cahaya non-infra merah. Oleh sebab itu sensor infra
merah yang baik biasanya memiliki jendela (pelapis yang terbuat dari silikon)
berwarna biru tua keungu-unguan. Sensor ini biasanya digunakan untuk aplikasi
infra merah yang digunakan diluar rumah (outdoor).
Sinar infra merah yang dipancarkan oleh pemancar infra merah tentunya
mempunyai aturan tertentu agar data yang dipancarkan dapat diterima dengan
baik pada penerima. Oleh karena itu baik di pengirim infra merah maupun
penerima infra merah harus mempunyai aturan yang sama dalam mentransmisikan
(bagian pengirim) dan menerima sinyal tersebut kemudian mendekodekannya
kembali menjadi data biner (bagian penerima). Komponen yang dapat menerima
infra merah ini merupakan komponen yang peka cahaya yang dapat berupa dioda
(photodioda) atau transistor (phototransistor). Komponen ini akan merubah energi
cahaya, dalam hal ini energi cahaya infra merah, menjadi pulsa-pulsa sinyal
listrik. Komponen ini harus mampu mengumpulkan sinyal infra merah sebanyak
mungkin sehingga pulsa-pulsa sinyal listrik yang dihasilkan kualitasnya cukup
baik.
Gambar 2.7 Sensor infra merah
14
2.4 Liquid Crystal Display (LCD)
LCD merupakan perangkat elektronik yang kristal cair, yang digunakan
untuk menampilkan suatu nilai dari hasil sensor seperti, karakter atau bilangan
maupun menampilkan menu pada aplikasi, sebagai informasi kerja dari suatu
sistem berbasis mikrokontroller. Setiap LCD sudah dilengkapi IC driver yang
berfungsi sebagai kontrolnya.
Salah satu tipe LCD yang banyak digunakan adalah LCD tipe M1632. yaitu
LCD yang mempunyai 2 baris tampilan dan setiap baris dapat menampilkan
hingga 16 kolomkarakter. Setiap baris dan kolom mempunyai alamat
sendirisendiri.LCD tipe M1632 mempunyai alamat 80h sampai8fh untuk baris
pertama dan untuk baris kedua C0h sampaiCfh.
Gambar 2.8 LCD (Liquid Crystal Display)
Urutan pin (1), umumnya, dimulai dari sebelah kiri (terletak di pojok kiri atas)
dan untuk LCD yang memiliki 16 pin, 2 pin terakhir (15 & 16) adalah anoda dan
katoda untuk back-lighting.
Tabel 2.1 Fungsi pin-pin pada LCD
Interface LCD merupakan sebuah parallel bus, dimana hal ini sangat
memudahkan dan sangat cepat dalam pembacaan dan penulisan data dari atau ke
15
LCD. Kode ASCII yang ditampilkan sepanjang 8 bit dikirim ke LCD secara 4
atau 8 bit pada satu waktu. Jika mode 4 bit yang digunakan, maka 2 nibble data
dikirim untuk membuat se MSB lalu 4 bit LSB dengan pulsa clock EN setiap
nibblenya). Jalur kontrol EN digunakan untuk memberitahu LCD bahwa
mikrokontroler mengirimkan data ke LCD. Untuk mengirim data ke LCD
program harus menset EN ke kondisi high (1) dan kemudian menset dua jalur
kontrol lainnya (RS dan R/W) atau juga mengirimkan data ke jalur data bus. Saat
jalur lainnya sudah siap, EN harus diset ke 0 dan tunggu beberapa saat (tergantung
pada datasheet LCD), dan set EN kembali ke high (1). Ketika jalur RS berada
dalam kondisi low (0), data yang dikirimkan ke LCD dianggap sebagai sebuah
perintah atau instruksi khusus (seperti bersihkan layar, posisi kursor dll). Ketika
RS dalam kondisi high atau 1, data yang dikirimkan adalah data ASCII yang akan
ditampilkan dilayar. Misal, untuk menampilkan huruf pada layar maka RS harus
diset ke 1.
Jalur kontrol R/W harus berada dalam kondisi low (0) saat informasi pada data
bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi high (1), maka
program akan melakukan query (pembacaan) data dari LCD. Instruksi pembacaan
hanya satu, yaitu Get LCD status (membaca status LCD), lainnya merupakan
instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W
selalu diset ke 0. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang
dipilih pengguna), mereka dinamakan DB0, DB1, DB2, DB3, DB4, DB5, DB6
dan DB7. Mengirim data secara parallel baik 4 atau 8 bit merupakan 2 mode
operasi primer. Untuk membuat sebuah aplikasi interface LCD, menentukan mode
operasi merupakan hal yang paling penting. Mode 8 bit sangat baik digunakan
ketika kecepatan menjadi keutamaan dalam sebuah aplikasi dan setidaknya
minimal tersedia 11 pin I/O (3 pin untuk kontrol, 8 pin untuk data).
Sedangkan mode 4 bit minimal hanya membutuhkan 7 bit (3 pin untuk kontrol, 4
untuk data).
2.5 Driver motor
IC L293D adalah salah satu diver yang handal dikemas dalam sebuah IC.
IC L293D adalah suatu bentuk rangkaian daya tinggi terintegrasi yang mampu
16
melayani 4 buah beban dengan arus nominal 600mA hingga maksimum 1.2 A. ke
4 kanal inputnya didesain untuk dapat menerima masukan level logika TTL. IC
L293D biasa dipakai sebagai driver relay, motor DC, motor stepper maupun
pengganti taransistor sebagai saklar dengan kecepatan switching mencapai 5kHz.
Direr tersebut berupa dua pasang rangkain H-Brigde yang masing-masing
dikendalikan oleh enable1 dan enable2.
Cara kerja driver ini cukup sederhana yakni dengan memberikan tegangan
5V sebagai Vcc pada pin 16 dan 12 Volt pada pin 8 untuk tegangan motor, maka
IC ini siap digunakan. Driver L293D dapat dignakan untuk mengontrol 2 buah
motor sekaligus, dan juga dapat mengontrol motor DC secara kontinu dan dengan
teknik PWM.
Gambar 2.9 Bentuk fisik IC driver motor L293
2.6 Motor stepper
Motor stepper merupakan salah satu jenis motor yang banyak digunakan
saat ini sebagai actuator, misalnya sebagai penggerak head baca/tulis pada disk
drive yang akan menetapkan posisi head baca/tulis di atas permukaan piringan
disket, penggerak head pada printer dan line feed control, dan yang lebih populer
saat ini adalah aplikasi dalam bidang robotik. Dengan bantuan mikroprosesor atau
mikrokontroler perputaran motor dapat dikontrol dengan tepat dan terprogram.
Motor stepper merupakan motor DC yang tidak mempunyai komutator.
Umumnya motor stepper hanya mempunyai kumparan pada bagian stator
sedangkan pada bagian rotor merupakan magnet permanen (bahan
ferromagnetic). Karena konstruksi inilah maka motor stepper dapat diatur
posisinya pada posisi tertentu dan/atau berputar ke arah yang diinginkan, apakah
searah jarum jam atau sebaliknya. Ada tiga jenis motor stepper: motor stepper
Magnet Permanen, Variable Reluctance dan Hybrid. Semua jenis tersebut 17
melakukan fungsi dasar yang sama, tetapi mempunyai perbedaan penting pada
beberapa aplikasi.
Motor stepper dapat berputar atau berotasi dengan sudut step yang bisa
bervariasi tergantung motor yang digunakan. Ukuran step (step size) dapat berada
pada range 0,90 sampai 900. Misalnya sudut step 7,50; 150; 300 dan seterusnya
tergantung aplikasi atau kebutuhan yang diinginkan. Posisi putarannya pun relatif
eksak dan stabil. Dengan adanya variasi sudut step tersebut akan lebih
memudahkan untuk melakukan pengontrolan serta pengontrolannya dapat
langsung menggunakan sinyal digital tanpa perlu menggunakan rangkaian closed-
loop feedback untuk memonitor posisinya. Dengan alasan inilah maka motor
stepper banyak digunakan sebagai actuator yang menerapkan rangkaian digital
sebagai pengontrol/driver, ataupun untuk interfacing ke piranti yang berbasis
mikroprosesor/mikrokontroler.
Gambar 2.10 Motor stepper empat-kumparan
2.7 Motor Servo
Motor DC seringkali disebut juga sebagai motor servo walau dalam
realitanya berbeda dengan motor DC. Motor servo merupakan motor DC yang
mempunyai kualitas tinggi, sudah dilengkapi dengan sistem kontrol di dalamnya.
Dalam aplikasi motor servo sering digunakan sebagai kontrol loop tertutup untuk
menangani perubahan posisi secara tepat dan akurat. Begitu juga dengan
pengaturan kecepatan dan percepatan (Widodo, 2010, 73).
18
Gambar 2.11 Model Fisik Motor Servo
Bentuk fisik dari motor servo dapat dilihat pada gambar 2.9. Sistem
pengkabelan motor servo terdiri dari 3 bagian, yaitu Vcc, Gnd, dan Kontrol
(PWM). Penggunaan PWM pada motor servo berbeda dengan penggunaan motor
servo pada motor DC. Pada motor servo, pemberian nilai PWM akan membuat
motor servo bergerak pada posisi tertentu dan kemudian berhenti (kontrol posisi).
Pengaturannya dapat dilakukan dengan menggunakan delay pada setiap
perpindahan dari posisi awal menuju posisi akhir (Widodo, 2010, 74).
Motor servo dibedakan menjadi 2, yaitu continuous servo motor dan
uncontinuous servo motor. Motor servo kontinu dapat berputar penuh 360°
sehingga memungkinkannya untuk melakukan gerak rotasi. Prinsip utama
pengontrolan motor servo adalah pemberian nilai PWM pada kontrolnya.
Perubahan duty cycle akan menentukan perubahan posisi dari motor servo. Seperti
motor stepper, motor servo merupakan solusi yang baik dan sederhana untuk
dunia robotika. Namun motor servo memiliki kekurangan, yaitu tidak dapat
memberikan umpan balik keluar. Ketika memberikan sinyal PWM pada sebuah
servo, kita tidak tahu kapan servo akan mencapai posisi yang dikehendaki. Motor
servo HS805 memiliki torsi hingga 20 Kg, GWS 04 kg, servo GWS S35, dan S03
memiliki torsi yang lebih rendah. Beberapa tipe lain yang memiliki daya tahan
tinggi adalah Hitec-422 dan Hitec-311. Motor servo kontinu dapat berputar 360
19
derajat, sedangkan motor servo standar hanya dapat berputar sekitar 180 derajat
(Widodo, 2010, 74).
2.8 Bahasa Pemrograman
Code Vision merupakan IDE untuk mikrokontroler jenis AVR yang sudah
dilengkapi dengan kompiler C. Sebagai sebuah IDE, Code Vision dilengkapi
dengan berbagai macam tool, seperti Integrated ISP, Code Wizard (ini merupakan
fitur yang paling menarik dari Code Vision), Integrated Compileran dan
Integrated Editor sehingga memudahkan programmer dalam membuat,
mengompilasi dan men-download-kan ke target device (Susilo, 2010:227).
Meskipun begitu, Code Vision masih memiliki kelemahan, yaitu pada
bagian debugging, code vision tidak dilengkapi dengan integrated debugger
sehingga programmer mengalami kesulitan ketika akan men-debug programmnya.
Seperti Keil C, program yang kita buat dikelompokkan menjadi sebuah project
yang nantinya diletakkan pada Project Workspace (Susilo, 2010:227).
CodeVisionAVR menyediakan sebuah editor yang di desain untuk
menghasilkan program C secara otomatis untuk mikrokontroler AVR. Integrated
Development Environtment (IDE) telah dilengkapi dengan fasilitas pemrograman
chip melalui metode In-System Programming sehingga dapat secara otomatis
mentransfer file program kedalam chip mikrokontroler AVR setelah sukses di
kompilasi (Winoto dan Adi, 2011, 7).
2.9 Teori Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis dan logis. Kata logis merupakan kata kunci dalam
algoritma. Langkah-langkah dalam algoritma harus logis dan harus dapat
ditentukan bernilai salah atau benar (Handrizal, 2008, 1).
Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk
melakukan pekerjaan tertentu. Pertimbangan dalam pemilihan algoritma adalah,
pertama, algoritma haruslah benar. Artinya algoritma akan memberikan keluaran
yang dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus
20
apapun algoritma, kalau memberikan keluaran yang salah, pastilah algoritma
tersebut bukanlah algoritma yang baik (Handrizal, 2008, 1).
Pertimbangan kedua yang harus diperhatikan adalah kita harus mengetahui
seberapa baik hasil yang dicapai oleh algoritma tersebut. Hal ini penting terutama
pada algoritma untuk menyelesaikan masalah yang memerlukan aproksimasi hasil
(hasil yang hanya berupa pendekatan). Algoritma yang baik harus mampu
memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya
(Handrizal, 2008. 2).
Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari 2
hal yaitu efisiensi waktu dan memori. Meskipun algoritma memberikan keluaran
yang benar (paling mendekati), tetapi jika kita harus menunggu berjam-jam untuk
mendapatkan keluarannya, algoritma tersebut biasanya tidak akan dipakai, setiap
orang menginginkan keluaran yang cepat. Begitu juga dengan memori, semakin
besar memori yang terpakai maka semakin buruklah algoritma tersebut
(Handrizal, 2008, 2).
Dalam kenyataannya, setiap orang bisa membuat algoritma yang berbeda
untuk menyelesaikan suatu permasalahan, walaupun terjadi perbedaan dalam
menyusun algoritma, tentunya kita mengharapkan keluaran yang sama. Jika
terjadi demikian, carilah algoritma yang paling efisien dan cepat (Handrizal, 2008,
2).
Pembuatan algoritma mempunyai banyak keuntungan di antaranya (Handrizal,
2008:3):
1. Pembuatan atau penulisan algoritma tidak tergantung pada bahasa
pemrograman manapun, artinya penulisan algoritma independen dari
bahasa pemrograman dan komputer yang melaksanakannya.
2. Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa
pemrograman.
3. Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama
karena algoritmanya sama.
21
Beberapa hal yang perlu diperhatikan dalam membuat algoritma (Handrizal, 2008,
3):
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah.
Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah
dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi
bahasa pemrograman. Notasi yang digunakan dalam menulis algoritma
disebut notasi algoritmik.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik
sendiri. Hal ini dikarenakan teks algoritma tidak sama dengan teks
program. Namun, supaya notasi algoritmik mudah ditranslasikan ke dalam
notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik
tersebut berkorespondensi dengan notasi bahasa pemrograman secara
umum.
4. Notasi algoritmik bukan notasi bahasa pemrograman, karena itu
pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh komputer.
Agar dapat dijalankan oleh komputer, pseudocode dalam notasi algoritmik
harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa
pemrograman yang dipilih. Perlu diingat bahwa orang yang menulis
program sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin
yang menjalannya.
5. Algoritma sebenarnya digunakan untuk membantu kita dalam
mengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
6. Algoritma merupakan hasil pemikiran konseptual, supaya dapat
dilaksanakan oleh komputer, algoritma harus ditranslasikan ke dalam
notasi bahasa pemrograman. Ada beberapa hal yang harus diperhatikan
pada translasi tersebut, yaitu:
1. Pendeklarasian variabel
Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam
penggunaan bahasa pemrograman apabila tidak semua bahasa
pemrograman membutuhkannya.
2. Pemilihan tipe data
22
Apabila bahasa pemrograman yang akan digunakan membutuhkan
pendeklarasian variabel maka perlu hal ini dipertimbangkan pada
saat pemilihan tipe data.
3. Pemakaian instruksi-instruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi
masingmasing memiliki kelebihan dan kekurangan yang berbeda.
4. Aturan sintaksis
Pada saat menuliskan program kita terikat dengan aturan sintaksis
dalam bahasa pemrograman yang akan digunakan.
5. Tampilan hasil
Pada saat membuat algoritma kita tidak memikirkan tampilan hasil
yang akan disajikan. Hal-hal teknis ini diperhatikan ketika
mengkonversikannya menjadi program.
6. Cara pengoperasian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk dalam kelompok
compiler atau interpreter.
23