BAB 2
LANDASAN TEORI
2.1
Mikrokontroler Atmega8535
Mikrokontroler adalah IC yang dapat diprogram berulang kali, baik ditulis atau dihapus (Agus Bejo, 2007). Biasanya digunakan untuk pengontrolan otomatis dan manual pada perangkat elektronika.
Beberapa tahun terakhir, mikrokontroler sangat banyak digunakan terutama dalam pengontrolan robot. Seiring perkembangan elektronika, mikrokontroler dibuat semakin kompak dengan bahasa pemrograman yang juga ikut berubah. Salah satunya adalah mikrokontroler AVR (Alf and Vegard’s Risc processor) ATmega8535 yang menggunakan teknologi RISC (Reduce Instruction Set Computing) dimana program berjalan lebih cepat karena hanya membutuhkan satu siklus clock untuk mengeksekusi satu instruksi program. Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu kelas ATtiny, keluarga AT90Sxx, keluarga ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama.
Mikrokontroler AVR ATmega8535 memiliki fitur yang cukup lengkap. Mikrokontroler AVR ATmega8535 telah dilengkapi dengan ADC internal, EEPROM internal, Timer/Counter, PWM, analog comparator, dll (M.Ary Heryanto, 2008). Sehingga
dengan
fasilitas
yang
lengkap
ini
memungkinkan
kita
belajar
mikrokontroler keluarga AVR dengan lebih mudah dan efisien, serta dapat mengembangkan kreativitas penggunaan mikrokontroler ATmega8535.
Universitas Sumatera Utara
Fitur-fitur yang dimiliki oleh mikrokontroler ATmega8535 adalah sebagai berikut: 1.
Saluran I/O sebanyak 32 buah, yaitu port A, port B, port C, dan port D.
2.
ADC internal sebanyak 8 saluran.
3.
Tiga buah Timer/Counter dengan kemampuan pembandingan.
4.
CPU yang terdiri atas 32 buah register.
5.
SRAM sebesar 512 byte.
6.
Memori Flash sebesar 8 kb dengan kemampuan Read While Write.
7.
Port antarmuka SPI
8.
EEPROM sebesar 512 byte yang dapat diprogram saat operasi.
9.
Antarmuka komparator analog.
10. Port USART untuk komunikasi serial. 11. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz. 12. Dan lain-lainnya.
2.1.1 Konstruksi ATmega8535
Mikrokontroler ATmega8535 memiliki 3 jenis memori, yaitu memori program, memori data dan memori EEPROM. Ketiganya memiliki ruang sendiri dan terpisah. a. Memori program ATmega8535 memiliki kapasitas memori progam sebesar 8 Kbyte yang terpetakan 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. b. Memori data ATmega8535 memiliki kapasitas memori data sebesar 608 byte yang terbagi menjadi 3 bagian yaitu register serba guna, register I/O dan SRAM. ATmega8535 memiliki 32 byte register serba guna, 64 byte register I/O yang dapat diakses sebagai bagian dari memori RAM (menggunakan instuksi LD atau ST) atau dapat juga diakses sebagai I/O (menggunakan instruksi IN atau OUT), dan 512 byte digunakan untuk memori data SRAM. c. Memori EEPROM
Universitas Sumatera Utara
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 I/O yaitu register EEPROM Address, register EEPROM Data, dan register EEPROM Control. Untuk mengakses memori EEPROM ini diperlakukan seperti mengakses data eksternal, sehingga waktu eksekusinya relatif lebih lama bila dibandingkan dengan mengakses data dari SRAM.
ATmega8535 merupakan tipe AVR yang telah dilengkapi dengan 8 saluran ADC internal dengan fidelitas 10 bit. Dalam mode operasinya, ADC ATmega8535 dapat dikonfigurasi, baik secara single ended input maupun differential input. Selain itu, ADC ATmega8535 memiliki konfigurasi pewaktuan, tegangan referensi, mode operasi, dan kemampuan filter derau yang amat fleksibel, sehingga dengan mudah disesuaikan dengan kebutuhan ADC itu sendiri.
ATmega8535 memiliki 3 modul timer yang terdiri dari 2 buah timer/counter 8 bit dan 1 buah timer/counter 16 bit. Ketiga modul timer/counter ini dapat diatur dalam mode yang berbeda secara individu dan tidak saling mempengaruhi satu sama lain. Selain itu, semua timer/counter juga dapat difungsikan sebagai sumber interupsi. Masing-masing timer/counter ini memiliki register tertentu yang digunakan untuk mengatur mode dan cara kerjanya.
Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi serial syncrhronous kecepatan tinggi yang dimiliki oleh ATmega8535. Universal Syncrhronous and Asyncrhronous Serial Receiver and Transmitter (USART) juga merupakan salah satu mode komunikasi serial yang dimiliki oleh ATmega8535. USART merupakan komunikasi yang memiliki fleksibilitas tinggi, yang dapat digunakan untuk melakukan transfer data baik antar mikrokontroler maupun dengan modul-modul eksternal termasuk PC yang memiliki fitur UART.
USART memungkinkan transmisi data baik secara syncrhronous maupun asyncrhronous, sehingga dengan memiliki USART pasti kompatibel dengan UART. Pada ATmega8535, secara umum pengaturan mode syncrhronous maupun asyncrhronous adalah sama. Perbedaannya hanyalah terletak pada sumber clock saja.
Universitas Sumatera Utara
Jika pada mode asyncrhronous masing-masing peripheral memiliki sumber clock sendiri, maka pada mode syncrhronous hanya ada satu sumber clock yang digunakan secara bersama-sama. Dengan demikian, secara hardware untuk mode asyncrhronous hanya membutuhkan 2 pin yaitu TXD dan RXD, sedangkan untuk mode syncrhronous harus 3 pin yaitu TXD, RXD dan XCK.
2.1.2 Pin-pin pada Mikrokontroler ATmega8535
Gambar 2.1 Konfigurasi pin ATmega8535 (Data Sheet AVR)
Konfigurasi pin ATmega8535 dengan kemasan 40 pin DIP (Dual Inline Package) dapat dilihat pada gambar 2.1. Dari gambar di atas dapat dijelaskan fungsi dari masing-masing pin Atmega8535 sebagai berikut: 1.
VCC merupakan pin yang berfungsi sebagai masukan catu daya.
2.
GND merukan pin Ground.
3.
Port A (PortA0…PortA7) merupakan pin input/output dua arah dan pin masukan ADC.
4.
Port B (PortB0…PortB7) merupakan pin input/output dua arah dan dan pin fungsi khusus, seperti dapat dilihat pada tabel di bawah ini.
Universitas Sumatera Utara
Tabel 2.1 Fungsi Khusus Port B Pin
Fungsi Khusus
PB7
SCK (SPI Bus Serial Clock)
PB6
MISO (SPI Bus Master Input/ Slave Output)
PB5
MOSI (SPI Bus Master Output/ Slave Input)
PB4
SS (SPI Slave Select Input) AIN1 (Analog Comparator Negative Input) OC0 (Timer/Counter0 Output Compare Match Output) AIN0 (Analog Comparator Positive Input) INT2 (External Interrupt 2 Input)
PB3 PB2 PB1 PB0
T1 (Timer/ Counter1 External Counter Input) T0 T1 (Timer/Counter External Counter Input) XCK (USART External Clock Input/Output)
4. Port C (PortC0…PortC7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti dapat dilihat pada tabel dibawah ini.
Tabel 2.2 Fungsi Khusus Port C Pin PC7
Fungsi khusus TOSC2 ( Timer Oscillator Pin2)
PC6
TOSC1 ( Timer Oscillator Pin1)
PC5
Input/Output
PC4
Input/Output
PC3
Input/Output
PC2
Input/Output
PC1
SDA ( Two-wire Serial Buas Data Input/Output Line)
PC0
SCL ( Two-wire Serial Buas Clock Line)
5. Port D (PortD0…PortD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti yang terlihat pada tabel dibawah ini.
Tabel 2.3 Fungsi Khusus Port D Pin PD7
Fungsi khusus OC2 (Timer/Counter Output Compare Match Output)
Universitas Sumatera Utara
PD6
ICP (Timer/Counter1 Input Capture Pin)
PD5
OC1A (Timer/Counter1 Output Compare A Match Output)
PD4
OC1B (Timer/Counter1 Output Compare B Match Output)
PD3
INT1 (External Interrupt 1 Input)
PD2
INT0 (External Interrupt 0 Input)
PD1
TXD (USART Output Pin)
PD0
RXD (USART Input Pin)
6.
RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.
7.
XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.
8.
AVCC merupakan pin masukan tegangan untuk ADC.
9.
AREFF merupakan pin masukan tegangan referensi ADC.
2.2
Motor DC
Motor DC (Direct Current) adalah peralatan elektromagnetik dasar yang berfungsi untuk mengubah tenaga listrik menjadi tenaga mekanik yang desain awalnya diperkenalkan oleh Michael faraday lebih dari seabad yang lalu (E. Pitowarno, 2006). Motor DC dikendalikan dengan menentukan arah dan kecepatan putarnya. Arah putaran motor DC adalah searah dengan arah putaran jarum jam (Clock Wise/CW) atau berlawanan arah dengan arah putaran jarum jam (Counter Clock Wise/CCW), yang bergantung dari hubungan kutub yang diberikan pada motor DC. Kecepatan putar motor DC diatur dengan besarnya arus yang diberikan.
Gambar 2.2 Sebuah motor DC (Innovative Electronics)
Universitas Sumatera Utara
Motor DC dipakai untuk menggerakkan roda robot. Digunakan H-Brighge IC L298 sebagai penguat motor DC yang berfungsi sebagai driver, sebab sangat tidak mungkin mengendalikan motor DC langsung dari mikrokontroler yang memiliki arus dan tegangan terbatas. Untuk itu digunakan H-Brihge sebagai driver motor DC (H.Andrianto, 2008).
Metode Pulsa with modulation atau PWM dapat digunakan untuk mengatur kecepatan motor dan untuk menghindarkan rangkaian mengkomsumsi daya berlebih. PWM dapat mengatur kecepatan motor karena tegangan yang diberikan dalam selang waktu tertentu saja. PWM ini dapat dibangkitkan melalui software. Lebar pulsa PWM dinyatakan dalam Duty Cycle. Misalnya duty cycle 10 %, berarti lebar pulsa adalah 1/10 bagian dari satu perioda penuh (E. Pitowarno, 2006).
Berikut adalah rumusan frekuensi sinyal keluaran pin output compare OC1A/OC1B dengan menggunakan timer/counter1 (A.Bejo, 2008): a.
Mode Phase Correct PWM fOC1A_PCP
=
fOSC
…….(2.1)
2 * N * (1+TOP) fOC1B_PCP
=
fOSC
…….(2.2)
2 * N * (1+TOP) D
=
OCR1A+OCR1B * 100 %
…….(2.3)
TOP Keterangan:
b.
fOC1A_PCP
= frekuensi output OC1A mode PCP
fOC1B_PCP
= frekuensi output OC1B mode PCP
fOSC
= frekuensi kristal/ osilator
D
= duty cycle
N
= skala clock (Tabel 2.1)
TOP
= nilai maksimum counter (TCNT1)
Mode CTC fOC1A_CTC
=
fOSC
……..(2.4)
2 * N * (1 + OCR1A) fOC1B_CTC
=
fOSC
……..(2.5)
2 * N * (1 + OCR1B)
Universitas Sumatera Utara
Keterangan:
c.
fOC1A_CTC
= frekuensi output OC1A mode CTC
fOC1B_CTC
= frekuensi output OC1B mode CTC
fOSC
= frekuensi Kristal/ osilator
N
= skala clock (Tabel 2.1)
OCR1A
= isi register OCR1A
OCR1B
= isi register OCR1B
Mode Fast PWM fOC1A_FastPWM =
fOSC
……..(2.6)
N * (1 + TOP) fOC1B_FastPWM
=
fOSC
……..(2.7)
N * (1 + TOP) Keterangan: fOC1A_FastPWM = frekuensi output OC1A mode fast PWM fOC1B_FastPWM = frekuenai output OC1B mode fast PWM fOSC
= frekuensi Kristal/ osilator
N
= skala clock (Tabel 2.1)
TOP
= nilai maksimum counter (TCNT1)
Tabel 2.4 Skala Clock Timer/Counter CS12
CS11
CS10
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
Deskripsi
Tidak ada clock, timer/counter berhenti. Skala clock = 1, (clock timer = clock osilator) Skala clock = 8, (clock timer = 1/8 clock osilator) Skala clock = 64, (clock timer = 1/64 clock osilator) Skala clock = 256, (clock timer = 1/256 clock osilator) Skala clock = 1024, (clock timer = 1/1024 clock osilator) Sumber clock eksternal pada pin T0, clock pada transisi turun. Sumber clock eksternal pada pin T0, clock pada transisi naik.
Sumber : Data sheet ATmega8535
Universitas Sumatera Utara
IC L298 sudah mencukupi digunakan sebagai rangkain driver. Cukup dihubungkan ke mikrokontroler dan diberi tegangan sebesar 7 volt dengan arus minimal 2 ampere rangkaian driver berbasis L298 sudah dapat digunakan. Selain itu, supply IC L298 dapat diberi tegangan sampai 50 Volt (Data Sheet L298).
Gambar 2.3 Konfigurasi pin IC L298 (Data sheet L298)
Untuk menjalankan motor, pin enable A dan enable B pada IC L298 harus diberi logika 1. Current sensing A dan current sensing B dihubungkan ke ground. Input 1 dan input 2 masing-masing berlogika 1 dan 0, output 1 dan output 2 dihubungkan ke motor.
2.3
Led Super Bright Merah dan Photo Dioda
Led super bright merah dan photo dioda dapat digunakan sebagai sensor halangan. Photo dioda bekerja jika mendapat cahaya. Prinsip kerjanya yaitu led super bright memancarkan cahaya ke photo dioda sehingga photo dioda menjadi aktif. Jika mendeteksi adanya halangan, maka photo dioda akan berlogika low dan jika tidak ada halangan maka photo dioda akan berlogika high. Logika high dan low inilah yang harus dibaca mikrokontroler untuk mengambil keputusan. Disamping itu, digunakan rangkaian op-amp IC LM 324 sebagai penguat keluaran photo dioda.
2.4
Rangkaian Sensor dan Komparator
Komparator berfungsi untuk membandingkan input yang diterima dari sensor dengan tegangan referensi. Jika input dari sensor lebih besar dari input tegangan referensi,
Universitas Sumatera Utara
maka output akan berlogika high. Sebaliknya, jika tegangan referensi lebih besar dari input sensor, maka output akan berlogika low. Komparator konvensional umumnya dapat menggunakan IC LM 324 atau LM 339 yang merupakan sebuah penguat operasional (op-amp) (W. Budiharto, 2004). Perbedaan input positif dan input negatif menyebabkan keluaran pada pin output. Perbedaan ini diatur menggunakan potensiometer dimana pada penerapan pada robot dipasang sensor Led super bright dan Photo dioda.
Gambar 2.4 IC LM 324 (Data sheet LM324)
Sensor analog dalam aplikasi selalu berhadapan dengan berbagai macam gangguan. Selain itu sensor memiliki impedansi dan jangkauan tegangan output yang tidak selalu kompatibel dengan perangkat data yang digunakan. Sensor garis yang output-nya analog perlu dikuatkan
agar jangkauannya maksimal. Untuk itu
diperlukan perlakuan penyelarasan sinyal antara sensor dengan mikrokontroler (H. Andrianto, 2008).
Gambar 2.5 Rangkaian sensor garis menggunakan IC LM 324
2.5
Bahasa Pemrograman ATmega8535
Pemrograman mikrokontroler ATmega8535 dapat menggunakan low level language (assembly) dan high level language (C, Basic, Pascal, JAVA,dll) tergantung compiler
Universitas Sumatera Utara
yang digunakan (Widodo Budiharto, 2006). Bahasa Assembler mikrokontroler AVR memiliki kesamaan instruksi, sehingga jika pemrograman satu jenis mikrokontroler AVR sudah dikuasai, maka akan dengan mudah menguasai pemrograman keseluruhan mikrokontroler jenis mikrokontroler AVR. Namun bahasa assembler relatif lebih sulit dipelajari dari pada bahasa C.
Untuk pembuatan suatu proyek yang besar akan memakan waktu yang lama serta penulisan programnya akan panjang. Sedangkan bahasa C memiliki keunggulan dibanding bahasa assembler yaitu independent terhadap hardware serta lebih mudah untuk menangani project yang besar.
Bahasa
C
memiliki
keuntungan-
keuntungan yang dimiliki bahasa assembler (bahasa mesin), hampir semua operasi yang dapat dilakukan oleh bahasa mesin, dapat dilakukan dengan bahasa C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C terletak diantara bahasa pemrograman tingkat tinggi dan assembly (Agus Bejo,2007).
2.6
Software ATmega8535 Editor dan Simulator
2.6.1
Software ATmega8535 Editor
Instruksi‐instruksi yang merupakan bahasa C tersebut dituliskan pada sebuah editor, yaitu Code Vision AVR. Tampilannya seperti berikut ini:
Gambar 2.6 Tampilan Code Vision AVR
Universitas Sumatera Utara
2.6.2
Software Downloader
Melakukan download program ke mikrokontroler dapat menggunakan ponyprog2000. Tampilannya seperti di bawah ini:
Gambar 2.7 Tampilan Ponyprog2000
Universitas Sumatera Utara