5
BAB II LANDASAN TEORI
2. 1
Mikrokontroler AVR Pada saat ini penggunaan mikrokontroler daapt kita temui pada berbagai
peralatan, misalnya peralatan yang terdapat dirumah tangga, seperti handphone, microwave
oven,
televisi,
mesin
cuci,
sistem keamanan rumah,
dll.
Mikrokontroler dapat digunakan untuk berbagai aplikasi misalnya untuk pengendalian, otomasi industri, akuisisi data, telekomunikasi dan lain-lain. keuntungan menggunakan mikrokontroler
yaitu harganya
murah, dapat
diprogram berulang kali, dan dapat diprogram sesuai dengan keinginan.
Gambar 2.1 Bentuk fisik mikrokontroler ATmega8535
Mikrokontroler adalah IC yang dapat diprogram berulang kali, baik ditulis atau
dibaca
dimana
sudah
terintegrasi
ruang
penyimpanan
program,
mikroprosesor, ADC (Analog to Digital Converter) dan perangkat pendukung lainnya. Seiring meningkatnya perkembangan elektronika, mikrokontroler turut memberi andil sangat besar didalam pengontrolan otomatis dan semi otomatis khususnya didunia industri. Seperti halnya IC pada umumnya, mikrokontroler merupakan kumpulan transistor-transistor sangat kecil yang membentuk suatu
6
gerbang logika dan terbungkus didalam lapisan silikon, dapat dikatakan bahwa mikrokontroler adalah IC yang sudah memenuhi komponen utama komputer sederhana. Salah satu mikrokontroler yang banyak digunakan saat ini yaitu mikrokontroler keluarga AVR. AVR adalah mikrokontroler berteknologi RISC (Reduce Instruction Set Computing) 8 bit yang dikembangkan berdasarkan arsitektur Harvard dan diperkenalkan oleh Atmel pada tahun 1996. AVR adalah singkatan dari Advance Versatile RISC atau Alf and Vegard’s Risc processor yang berasal dari nama dua mahasiswa Norwegian Institute of Technology (NTH), yaitu Alf-Egil Bogen dan Vegard Wollan sebagai penemunya.
Gambar 2.2 Arsitektur Mikrokontroler AVR RISC
7
Dari gambar diatas, AVR menggunakan arsitektur Harvard dengan memisahkan antara memori dan bus untuk program dan data untuk memaksimalkan kemampuan dan kecepatan. Instruksi didalam memori program dieksekusi dengan pipelining single level. Dimana ketika satu instruksi dieksekusi, instruksi berikutnya diambil dari memori program. Konsep ini mengakibatkan instruksi dieksekusi setiap clock cycle. CPU terdiri dari 32 x 8-bit general purpose register yang dapat diakses denga cepat dalam satu cycle clock, yang mengkibatkan operasi Arithmatic Logic Unit (ALU) dapat dilakukan dalam satu cycle. Pada operasi ALU, dua operand berasal dari register, kemudian operasi dieksekusi dan hasilnya disimpan kembali pada register dalam satu clock cycle. Operasi aritmatik dan logic pada ALU akan mengubah bit-bit yang terdapat pada Status Register (SREG). Proses pengambilan instruksi dan pengeksekusian instruksi berjalan secara parallel. -
ALU (Arithmetic Logic Unit) Adalah prosesor yang bertugas mengeksekusi (eksekutor) kode program yang ditunjuk oleh program counter.
-
Flash Program Memory Flash memory PEROM bertugas menyimpan program (software) yang kita buat dalam bentuk kode-kode program (berisi alamat memori beserta kode program dalam ruangan memori alamat tersebut) yang telah kita compile kedalam bentuk bilangan heksa atau biner.
-
Program Counter (PC) Program Counter adalah komponen yang bertugas menunjukkan ke ALU alamat program memori yang harus diterjemahkan oleh kode program dan dieksekusi. Sifat dari PC adalah linear artinya dia menghitung naik satu bilangan yang bergantung alamat awalnya. Misalnya jika isi PC 0x000 maka dia akan naik satu menjadi 0x001 yang berarti menyuruh ALU mengeksekusi kode program yang berada pada alamat 0x001 program memori.
-
General Purpose Register (GPR) adalah register file atau register kerja (R0-R31) yang mempunyai ruangan 8 bit. Tugas GPR adalah
8
tempat mengeksekusi kode-kode program, setiap instruksi dalam ALU melibatkan GPR. (Data sheet AVR). Mikrokontroler dibandingkan
dengan
keluarga
AVR
mikrokontroler
memiliki lain,
beberapa
kelebihan
keunggulan
yang
dimiliki
mikrokontroler AVR diantaranya memiliki kecepatan eksekusi program yang lebih cepat karena sebagian besar instruksi program dieksekusi dalam 1 siklus clock, lebih cepat dibandingkan dengan mikrokontroler MCS51 yang memiliki arsitektur CISC (Complex Instruction Set Compute) dimana mikrokontroler MCS51 membutuhkan 12 siklus clock untuk mengeksekusi 1 instruksi program. Disamping itu, mikrokontroler AVR memiliki fitur yang lengkap seperti sudah tersedianya ADC internal, EEPROM internal, Timer/Counter, Watchdog Timer, PWM, Port I/O, komunikasi serial, komparator, I2C, dll. Sehingga dengan fasilitas yang lengkap ini, programer dan desainer elektronika dapat menggunakannya untuk berbagai aplikasi sistem elektronika seperti robot, otomasi industri, peralatan telekomunikasi, dan berbagai keperluan lain. (Bejo, Agus 2007).
Gambar 2.3 Pin I/O mikrokontroler ATmega8535
9
Secara umum, mikrokontroler AVR dikelompokkan menjadi 3 kelompok, yaitu keluarga AT90Sxx, ATmega, dan ATtiny. Namun seiring permintaan pelanggan akan kebutuhan mikrokontroler pada aplikasi khusus, Atmel menyediakan juga mikrokontroler AVR untuk aplikasi tersebut. Table 2.1. Mikrokontroler Keluarga AVR Mikrokontroler AVR
Memori
Tipe
Jumlah Pin
Flash
EEPROM
SRAM
ATtiny AVR
8 - 32
1-2 K
64 - 128
0 - 128
AT90Sxx
20 - 44
1 - 8K
128 - 512
0 - 1K
ATmega
32 - 64
8 - 128K
512 - 4K
512 - 4K
Sumber: (Bejo, Agus 2007)
10
Gambar 2.4 Blok diagram mikrokontroler ATmega8535
11
Konfigurasi pin ATmega8535 dikemas dalam kemasan 40 pin DIP (Dual Inline Package) seperti terlihat pada gambar 2.3. Dari gambar diatas 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 dibawah ini. Tabel 2.2 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)
PB3
OC0 (Timer/Counter0 Output Compare Match Output) AIN0 (Analog Comparator Positive Input)
PB2
INT2 (External Interrupt 2 Input)
PB1
T1 (Timer/ Counter1 External Counter Input) T0 T1 (Timer/Counter External Counter Input)
PB0
XCK (USART External Clock Input/Output)
5. Port C (PortC0…PortC7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti dapat dilihat pada tabel dibawah ini.
12
Tabel 2.3 Fungsi khusus Port C Pin
Fungsi khusus
PC7
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)
6. Port D (PortD0…PortD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti yang terlihat pada tabel dibawah ini. Tabel 2.4 Fungsi khusus Port D Pin
Fungsi khusus
PD7
OC2 (Timer/Counter Output Compare Match Output)
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)
13
7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler. 8. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal. 9. AVCC merupakan pin masukan tegangan untuk ADC. 10. AREFF merupakan pin masukan tegangan referensi ADC.
2. 2
Sensor TGS2620 Sensor TGS 2620 adalah salah satu sensor yang dapat digunakan untuk
mendeteksi gas etanol diudara atau gas yang dianggap mewakili gas alkohol dan dikembangkan oleh Figaro, sebuah perusahaan semikonduktor khususnya sensor dan transduser. Sensor TGS 2620 bekerja menggunakan prinsip perubahan resistansi dan hanya peka terhadap gas etanol. Setiap perubahan gas etanol pada udara sekitar menyebabkan perubahan resistansi yang berpengaruh terhadap perubahan nilai tegangan yang dikeluarkan oleh sensor. Bentuk fisik sensor TGS 2620 seperti gambar berikut.
Gambar 2.5 Sensor TGS 2620 Sensor TGS 2620 dilengkapi dengan heater untuk memanaskan sensor agar hasil pengukuran lebih akurat. Respon yang dikirimkan oleh sensor TGS 2620 adalah tegangan analog, artinya output sensor TGS 2620 berupa tegangan yang bervariasi sesuai dengan hasil bacaan sensor terhadap gas etanol diudara sekitar. Sebagai contoh, pada udara bersih tegangan sensor berkisar antara 2,1 Volt sampai 2,6 Volt, sedangkan pada udara yang telah terkotaminasi gas etanol tegangannya berubah menjadi 3,5 Volt sampai 4,8 Volt. Selisih tegangan keluaran sensor ini dijadikan acuan untuk mendeteksi gas etanol. Sensor TGS 2620 dapat digunakan untuk mendeteksi gas etanol dari 50 ppm sampai 5000 ppm. (datasheet TGS 2620).
14
Gambar 2.6 Sensitifitas sensor TGS 2620
Gambar 2.7 Rangkaian instalasi sensor TGS 2620
15
Gambar 2.8 Spesifikasi sensor TGS 2620
2. 3
Bahasa Pemrograman C Pemrograman
mikrokontroler
AVR
dapat
dilakukan
dengan
menggunakan berbagai bahasa pemrograman dari low level language (assembly) sampai high level language (C, Basic, Pascal, JAVA,dll) tergantung compiler yang digunakan. Bahasa assembler mikrokontroler AVR memiliki kesamaan instruksi, sehingga jika pemrograman satu jenis mikrokontroler AVR sudah dikuasai, maka relatif lebih mudah untuk menguasai pemrograman keseluruhan mikrokontroler AVR, namun bahasa assembler relatif lebih sulit dipelajari dari
16
pada bahasa C. Untuk pembuatan suatu proyek yang besar akan memakan waktu yang lama serta penulisan programnya relatif 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 assembly (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 .(Andrianto, Heri,2008). Pada tugas akhir ini, mikrokontroler AVR yang digunakan adalah ATmega8535 sedangkan software compiler-nya menggunakan CodeVisionAVR.
2. 4
LCD (Liquid Crystal Display) LCD (Liquid Crystal Display) adalah display dari bahan cairan kristal
yang pengoperasiannya menggunakan sistem dot matrik. LCD banyak digunakan sebagai display pada alat-alat elektronika seperti jam tangan digital, multimeter digital, handphone, dan sebagainya. Pada tugas akhir ini, LCD digunakan untuk mengamati sensor ketika uji coba dan sebagai tampilan komentar. LCD sangat membantu dalam hal pengamatan karena tampilannya yang menarik, mudah dibaca dan proses instalasi kemikrokontroler ATmega8535 tidak terlalu sulit. (Andrianto, Hery. 2008).
Gambar 2.9 LCD M1632 M1632 merupakan modul LCD dengan tampilan 16 x 2 baris dengan konsumsi daya rendah. Modul tersebut dilengkapi dengan mikrokontroler yang didesain khusus untuk mengendalikan LCD. Mikrokontroler HD44780 buatan
17
Hitachi yang berfungsi sebagai pengendali LCD memiliki CGROM (Character Generator Read Only Memory), CGRAM (Character Generator Random Access Memory), dan DDRAM (Display Data Random Access Memory), berikut ini bagian-bagian dari LCD M1632. 2.4.1 DDRAM DDRAM merupakan memori tempat karakter yang ditampilkan berada. Contoh, untuk karakter ‘L’ atau 4CH yang ditulis pada alamat 00, karakter tersebut akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut ditulis pada alamat 40, maka karakter tersebut akan tampil pada baris kedua kolom pertama dari LCD. 2.4.2 CGRAM CGRAM merupakan memori untuk menggambarkan pola karakter dimana bentuk dari karakter dapat berubah-ubah sesuai keinginan. Namun, memori akan hilang saat power supply tidak diaktifkan sehingga pola karakter akan hilang. 2.4.3 CGROM CGROM merupakan memori untuk menggambarkan pola sebuah karakter dimana pola tersebut sudah ditentukan secara permanen dari HD44780 sehingga pengguna tidak dapat mengubahnya lagi. Namun, oleh karena ROM bersifat permanen, pola karakter tersebut tidak akan hilang walaupun power supply tidak aktif. (Wardhana, Lingga. 2006).
Gambar 2.10 Konfigurasi pin LCD M1632
18
2.4.4 Register HD44780 memiliki dua buah register yang aksesnya diatur menggunakan kaki RS. Pada saat RS berlogika 0, register yang diakses adalah register perintah, dan pada saat RS berlogika 1, register yang diakses adalah register data. Register perintah adalah register dimana perintah-perintah dari mikrokontroler ke HD44780 pada saat proses penulisan data atau tempat status dari HD44780 dapat dibaca pada saat pembacaan data. Register data adalah register dimana mikrokontroler dapat menuliskan atau membaca data kea tau dari DDRAM. Penulisan data pada register akan menempatkan data tersebut ke DDRAM sesuai dengan alamat yang telah diatur sebelumnya. (Wardhana, Lingga. 2006).
2. 5
Regulator AN7805 dan Transistor Tegangan sumber untuk alat pendeteksi gas etanol bersumber dari battery
9 Volt DC, sedangkan tegangan yang diperlukan rangkaian ± 5 Volt DC. Untuk menurunkan tegangan menjadi ± 5 Volt DC dapat menggunakan IC regulator AN7805.
Gambar 2.11 Bentuk fisik regulator AN7805 Bentuk fisik AN7805 hampir sama dengan transistor, perbedaannya adalah fungsi tiap-tiap kaki dimana pada regulator tidak terdapat basis, kolektor atau emitor. Yang dimiliki regulator 7805 adalah input Vcc, Ground, dan output.
19
Transistor adalah salah satu komponen semikonduktor yang banyak dipakai didalam aplikasi elektronika sebagai saklar atau sebagai penguat. Besarnya tegangan yang dapat melewati pin transistor tergantung dengan jenis transistor itu sendiri. Alat pendeteksi Alkohol menggunakan transistor TIP31, transistor ini dipakai untuk menguatkan tegangan output dari mikrokontroler ke beban. Beban tersebut adalah alarm.
Gambar 2.12 Transistor TIP31 Transistor secara umum dibagi menjadi 2 macam, yaitu NPN dan PNP. Transistor TIP31 adalah salah satu transistor dengan tipe NPN, yaitu jika basis diaktifkan, dapat mengalirkan tegangan dari kolektor ke emitor.
2. 6
Codevision AVR Kompilator (compiler) dapat diartikan sebagai suatu penerjemah, artinya
kumpulan kode program yang ditulis dalam suatu bahasa pemrograman tertentu untuk diterjemahkan oleh kompilator ke bahasa assembly, selanjutnya diterjemahkan kembali menjadi kode objek yang dikenali oleh komputer. Dengan begitu, komputer dapat merespon permintaan kita dengan melakukan sesuatu sesuai dengan apa yang kita perintahkan. Banyak sekali editor dan kompilator yang dapat digunakan untuk membuat program C pada mikrokontroler AVR seperti IAR C, C-AVR, AVRGCC, Dunfields AVR, LCC-AVR, CodeVisionAVR, dan masih banyak lagi piranti lunak lainnya yang mendukung pembuatan program mikrokontroler AVR berbasis bahasa C. CodeVisionAVR adalah salah satunya, sebuah piranti lunak yang dikembangkan oleh Pavel Haiduc, HP Infotech yang akan kita gunakan sebagai kompilator penulisan program.
20
AVRStudio merupakan software khusus untuk bahasa assembly yang mempunyai fungsi sangat lengkap, yaitu dapat digunakan untuk menulis program, kompilasi, simulasi dan download program ke IC mikrokontroler AVR. Sedangkan CodeVisionAVR merupakan software C – Cross Compiler, dimana program dapat ditulis dalam bahasa C, CodeVisionAVR memiliki IDE (Integrated Development Environment) yang lengkap, dimana penulisan program, compile, link, pembuatan kode mesin (assembler) dan download program ke chip mikrokontroler AVR dapat dilakukan menggunakan CodeVisionAVR. Selain itu ada fasilitas terminal, yaitu untuk melakukan komunikasi serial dengan mikrokontroler yang sudah diprogram. Proses download program ke IC mikrokontroler dapat menggunakan system download secara ISP (In – Systems Programming). In – Systems Programmable Flash on-chip mengizinkan memori program untuk diprogram ulang dalam sistem menggunakan hubungan SPI. Editor adalah tempat dimana kita merancang program, menuliskan program, dan mengedit program. Kompilator (Compiler) adalah fasilitas dari CodeVisionAVR untuk mengubah barisan-barisan program menjadi bahasa mesin yang dikenali oleh computer sehingga komputer akan merespon permintaan sesuai dengan yang diperintahkan. Sedangkan downloader adalah fasilitas dari CodeVisionAVR untuk download program ke mikrokontroler AVR. Berdasarkan spesifikasi yang dikembangkan oleh perusahaan, compiler C yang digunakan oleh CodeVisionAVR hampir mengimplementasikan seluruh komponen standar bahasa C yang telah distandarisasikan oleh ANSI, yaitu sebuah lembaga dunia untuk menyeragamkan kompilator berbasis bahasa C, seperti strukstur program, jenis tipe data, jenis operator, dan library standar bahasa C.
21
Gambar 2.13 Editor CodeVisionAVR
2.7
ADC (Analog to Digital Converter) Analog to Digital Converter (ADC) adalah pengubah input analog
menjadi kode – kode digital. ADC banyak digunakan sebagai pengatur proses industri, komunikasi digital dan rangkaian pengukuran/pengujian. Umumnya ADC digunakan sebagai perantara antara sensor yang kebanyakan analog dengan system computer seperti sensor suhu, sensor cahaya, sensor tekanan/berat, sensor aliran dan sebagainya kemudian diukur menggunakan sistem digital (komputer). ADC (Analog to Digital Converter) memiliki 2 karakter prinsip, yaitu kecepatan sampling dan resolusi. Kecepatan sampling suatu ADC menyatakan seberapa sering sinyal analog dikonversikan kebentuk digital pada selang waktu tertentu. Kecepatan sampling biasanya dinyatakan dalam sample per second (SPS). Resolusi ADC menentukan ketelitian nilai hasil konversi ADC. Sebagai contoh : ADC 8 bit akan memiliki output 8 bit data digital, ini berarti sinyal input dapat dinyatakan dalam 255 (2n – 1) nilai diskrit. ADC 12 bit memiliki 12 bit output data digital, ini berarti sinyal input dapat dinyatakan dalam 4096 nilai
22
diskrit. Dari contoh diatas, ADC 12 bit akan memberikan ketelitian nilai hasil konversi yang jauh lebih baik dari pada ADC 8 bit. Prinsip ADC adalah mengkonversi sinyal analog kedalam bentuk besaran yang merupakan rasio, perbandingan sinyal input dan tegangan referensi. Sebagai contoh, bila tegangan referensi (Vref) 5 Volt, tegangan input 3 Volt, rasio input terhadap referensi adalah 60 %. Jadi, jika menggunakan ADC 8 bit dengan skala maksimum 255, akan didapatkan sinyal digital sebesar 60 % x 255 = 153 (dalam bentuk desimal) atau 10011001 (dalam bentuk biner).