5
BAB II
LANDASAN TEORI
2.1 Mikrokontroler ATmega8535
Atmel AVR adalah jenis mikrokontroller yang paling sering dipakai dalam bidang elektronika dan instrumentasi. Arsitektur mikrokontroler jenis AVR 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.
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. 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. Memori merupakan bagian yang sangat penting pada mikrokontroler. Mikrokontroler memiliki dua macam memori yang sifatnya berbeda. Read Only Memory (ROM) yang isinya tidak berubah meskipun IC
Universitas Sumatera Utara
6
kehilangan catu daya. Dimana memori penyimpanan progam ini dinamakan juga sebagai memori progam. Random Access Memori (RAM) isinya akan sirna begitu IC kehilangan catu daya, dipakai untuk menyimpan data pada saat progam bekerja. RAM yang dipakai untuk menyimpan ini data disebut sebagai memori data. Ada berbagai jenis ROM untuk mikrokontroler dengan progam yang sudah baku dan diproduksi secara massal, progam itu diisikan ke dalam ROM pada saat IC mikrokontroler dicetak di pabrik IC. Untuk keperluan tertentu mikrokontroler mengunakan ROM yang dapat diisi ulang atau Programmable-Erasable ROM yang disingkat menjadi PEROM atau PROM. Dulu banyak dipakai UV-EPROM (Ultra Violet Erasable Programmable ROM) yang kemudian dinilai mahal dan ditinggalkan setelah ada flash PEROM yang harganya jauh lebih murah.
ATMega8535 memiliki On-Chip In-System Reprogrammable Flash Memory untuk menyimpan program. Untuk alasan keamanan, memori program dibagi menjadi dua bagian yaitu boot flash section dan application flash section. Boot flash section digunakan untuk menyimpan program boot loader, yaitu program yang harus dijalankan pada saat AVR reset atau pertama kali diaktifkan. Application flash section digunakan untuk menyimpan program aplikasi yang dibuat user. AVR tidak dapat menjalankan program aplikasi ini sebelum menjalankan program boot loader.
Mikrokontroler merupakan suatu terobosan teknologi mikrokontroler dan mikrokomputer menjadi kebutuhan pasar dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semikonduktor dengan kandungan transistor yang lebih banyak namun hanya membutuhkan ruang kecil serta dapat diproduksi secara massal (dalam jumlah yang banyak) sehingga harga menjadi murah (dibandingkan mikroprosesor). Sebagai
Universitas Sumatera Utara
7
kebutuhan pasar, mikrokontroler hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan pada alat-alat bantu dan mainan yang lebih canggih.
Sebagai contoh yang mungkin dapat memberikan gambaran yang jelas dalam penggunaan mikrokontroler adalah pada aplikasi alat ukur tinggi badan otomatis. Umumnya alat ukur tinggi badan masih bersifat manual, dimana pengguna harus menaikkan dan menurunkan sendiri palang atas kepala, dan kemudian membaca penunjukan skalanya. Sementara itu, bagi anak kecil atau orang yang tubuhnya pendek tentu akan kesulitan atau bahkan tidak dapat melakukannya sendiri. Oleh karenanya dengan adanya alat ukur tinggi badan yang berbasis kendali elektronika, orang yang hendak mengetahui tinggi badannya cukup berdiri di depan alat, dan secara otomatis alat tersebut akan mengukur dan menampilkannya pada display, yang mana semua itu bisa diperoleh dari mikrokontroler yang digunakan.
Universitas Sumatera Utara
8
2.1.1 Arsitektur ATMega8535
Gambar 2.1.1. Diagram Blok Fungsional ATmega8535
Gambar diatas memperlihatkan bahwa ATmega8535 memiliki bagian sebagai berikut: 1. Saluran I/O sebanyak 32 buah, yaitu PortA (8 buah), Port B (8 buah), Port C (8 buah), dan Port D (8 buah). 2. Analog Digital Converter (ADC) sebanyak 8 saluran. 3. Tiga buah Timer/Counter (2 buah timer/counter 8-bit dan 1 buah timer/counter 16-bit).
Universitas Sumatera Utara
9
4. CPU yang terdiri atas 32 buah register. 5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 512 byte. 7. Memori Flash sebesar 8 Kbyte dengan memiliki fasilitas In-System Programming. 8. Unit interupsi internal dan eksternal. 9. Port antarmuka SPI (Master/Slave SPI serial interface) 10. Internal EEPROM (Electrically Ersable Programmable Read Only Memori) sebesar 512 byte yang diprogram saat operasi. 11. Antarmuka komparator analog. 12. Port USART untuk komunikasi serial dengan kecepatan maksimal 12,5 Mbps. 13. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz. 14. Serial TWI atau I2C.
Universitas Sumatera Utara
10
2.1.2 Konfigurasi Pin ATmega8535
Gambar 2.1.2 Konfigurasi Pin ATmega8535
Konfigurasi pin ATmega8535 dapat dilihat pada gambar diatas secara fungsional sebagai berikut: 1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya. 2. GND merupakan pin ground. 3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC. 4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus untuk Timer/Counter, Komparator analog, dan SPI. 5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin khusus untuk TWI, Komparator analog, dan Timer Oscilator. 6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin khusus untuk Interupsi eksternal, dan Komunikasi serial.
Universitas Sumatera Utara
11
7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroller. 8. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal. 9. AVCC merupakan pin masukan tegangan untuk ADC. 10. AREF merupkan pin masukan tegangan referensi ADC.
2.2. LCD (Liquid Crystal Display)
Kegunaan LCD banyak sekali dalam perancangan suatu sistem dengan menggunakan mikrokontroler, LCD (Liquid Crysral Display) dapat berfungsi untuk menampilkan suatu nilai hasil sensor, menampilkan teks, atau menampilkan menu pada aplikasi mikrokontroler.
Gambar 2.2 Bentuk LCD LMB162A
Adapun konfigurasi dan deskripsi dari pin-pin LCD ini antara lain: 1. Pin 1 dihubungkan ke Ground. 2. Pin 2 dihubungkan ke Vcc (+5V). 3. Pin 3 dihubungkan ke bagian tengan potensiometer 10K Ohm sebagai pengatur kontras. 4. Pin 4 untuk Register Selection (RS). Jika diberi nilai logika 1 (High) = display data dan jika diberi nilai logika 0 (Low) = Write Operational.
Universitas Sumatera Utara
12
5. Pin 5 digunakan untuk mengatur fungsi LCD. Jika di set ke logika 1 (high, +5V) maka LCD berfungsi untuk membaca data, jika pin ini di set ke logika 0 (low, 0V) akan berfungsi untuk menulis data. 6.
Pin 6 adalah terminal enable (Enable Signal). Berlogika 1 setiap kali pengiriman atau pembaca data.
7. Pin 7 – Pin 14 adalah saluran dua arah (bi-directional) data 8 bit dan 4 bit bus data (untuk 4 bit pin data yang digunakan Pin 11 – Pin 14). 8. Pin 15 dan Pin 16 adalah tegangan untuk menyalakan lampu LCD.
2.3. Kapasitor
Kapasitor adalah komponen elektronika yang dapat menyimpan muatan listrik. Struktur sebuah kapasitor terbuat dari 2 buah plat metal yang dipisahkan oleh suatu bahan dielektrik atau penyekat (isolator). Bahan-bahan dielektrik yang umum dikenal misalnya udara vakum, keramik, gelas dan lain-lain. Jika kedua ujung plat metal diberi tegangan listrik, maka muatan-muatan positif akan mengumpul pada salah satu kaki elektroda metalnya dan pada saat yang sama muatan-muatan negatif terkumpul pada ujung metal yang satu lagi. Muatan positif tidak dapat mengalir menuju ujung kutup negatif dan sebaliknya muatan negatif tidak bisa menuju ke ujung kutup positif karena terpisah oleh bahan yang non-konduktif. Muatan elektrik ini “tersimpan” selama tidak ada konduktif pada ujung-ujung kakinya. dielektrik
Elektroda
Elektroda
Gambar 2.3. Skema kapasitor.
Universitas Sumatera Utara
13
Kapasitor merupakan komponen pasif elektronika yang sering dipakai didalam merancang suatu sistem yang berfungsi untuk filter, dan penyimpan energi listrik. Didalamnya 2 buah pelat elektroda yang saling berhadapan dan dipisahkan oleh sebuah insulator. Sedangkan bahan yang digunakan sebagai insulator dinamakan dielektrik. Ketika kapasitor diberikan tegangan DC maka energi listrik disimpan pada tiap elektrodanya. Selama kapasitor melakukan pengisian, arus mengalir. Aliran arus tersebut akan berhenti bila kapasitor telah penuh. Yang membedakan tiap - tiap kapasitor adalah dielektriknya. Berikut ini adalah jenis kapasitor yang dipergunakan dalam perancangan ini.
2.3.1 Kapasitor Keramik
Kapasitor ini menggunakan bahan titanium acid barium untuk dielektriknya. Karena tidak dikonstruksi seperti koil maka komponen ini dapat digunakan pada rangkaian frekuensi tinggi. Biasanya digunakan untuk melewatkan sinyal frekuensi tinggi menuju ke ground. Kapasitor ini tidak baik digunakan untuk rangkaian analog, karena dapat mengubah bentuk sinyal. Jenis ini tidak mempunyai polaritas dan hanya tersedia dengan nilai kapasitor yang sangat kecil.
Gambar 2.3.1. Kapasitor Keramik
Universitas Sumatera Utara
14
2.4. Resistor
Resistor komponen pasif elektronika yang berfungsi untuk membatasi arus listrik yang mengalir. Berdasarkan kelasnya resistor dibagi menjadi 2 yaitu : Fixed Resistor dan Variable Resistor. Dan umumnya terbuat dari carbon film atau metal film, tetapi tidak menutup kemungkinan untuk dibuat dari material yang lain.
Pada dasarnya semua bahan memiliki sifat resistif namun beberapa bahan tembaga perak emas dan bahan metal umumnya memiliki resistansi yang sangat kecil. Bahan–bahan tersebut menghantar arus listrik dengan baik, sehingga dinamakan konduktor. Kebalikan dari bahan yang konduktif, bahan material seperti karet, gelas, karbon memiliki resistansi yang lebih besar menahan aliran elektron dan disebut sebagai insulator.
2.5. Sensor Suhu LM35
IC LM35 dari National Semiconductor adalah sensor suhu yang teliti dan terkemas dalam bentuk Integrated Circuit (IC), dimana output tegangan keluaran sangat linear dengan perubahan suhu. Sensor ini berfungsi sebagai pegubah dari besaran fisis suhu ke besaran tegangan yang memiliki koefisien sebesar 10 mV/°C yang berarti bahwa kenaikan suhu 1°C maka akan terjadi kenaikan tegangan sebesar 10 mV.
Sensor suhu LM35 ini tidak memerlukan pengkalibrasian atau penyetelan dari luar karena ketelitiannya sampai lebih kurang seperempat derajat celcius pada temperatur ruang. Interval sensor mulai dari – 55°C sampai dengan +150°C, IC LM35 penggunaannya sangat mudah, difungsikan sebagai kontrol dari indikator tampilan
Universitas Sumatera Utara
15
catu daya terpisah. Tegangan sensor ini diberikan ke sensor adalah sebesar 5 volt, sehingga dapat digunakan dengan catu daya tunggal dengan ketentuan bahwa LM35 hanya membutuhkan arus sebesar 60 μA hal ini berarti juga LM35 mempunyai kesalahan pembacaan yang rendah yaitu kurang dari 0,5 ºC pada suhu 25 ºC (Data sheet LM35). Tegangan output-nya adalah analog dapat langsung dihubungkan dengan salah satu port mikrokontroler yang memiliki kemampuan ADC, misalnya ATmega8535. Dan untuk hasil yang lebih baik dan mengurangi pengaruh noise, output dari LM35 dapat diperkuat dengan sebuah penguat tegangan.
Beberapa varian LM35: • LM35, LM35A memiliki jangkauan -55ºC hingga +150ºC. • LM35C, LM35CA memiliki jangkauan -40ºC hingga +110ºC. • LM35D memiliki jangkauan 0ºC hingga +100ºC.
Gambar 2.5. Bentuk fisik IC LM35.
Adapun keistimewaan dari IC LM 35 adalah : 1. Kalibrasi dalam satuan derajat celcius. 2. Linearitas +10 mV/ º C. 3. Akurasi 0,5 º C pada suhu ruang. 4. Range +2 º C – 150 º C. 5. Dioperasikan pada catu daya 4 V – 30 V. 6. Arus yang mengalir kurang dari 60 μA.
Universitas Sumatera Utara
16
2.6 Trimpot
Trimpot merupakan suatu komponen elektronik yang berfungsi sebagai hambatan yang memiliki nilai hambatan yang dapat diubah sesuai dengan keinginan. Trimpot memiliki fungsi yang sama dengan rangkaian pembagi tegangan adalah:
(a)
(b)
(c)
Gambar 2.6 (a) Trimpot, (b) Simbol trimpot, (c) Rangkaian pembagi tegangan
2.7. Pemrograman Bahasa C
Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk sejumlah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan mengunakan bahasa C mudah sekali untuk dipindahkan dari satu jenis mesin ke jenis mesin lainnya. Hal ini berkat adanya standarisasi bahasa C yaitu berupa standar ANSI (American National Standards Institute) yang dijadikan acuan oleh para pembuat kompiler C.
Universitas Sumatera Utara
17
2.7.1. Bentuk Dasar Program C
Sebuah program dalam bahasa C setidaknya harus memiliki sebuah fungsi. Fungsi dasar ini disebut dengan fungsi utama (fungsi main) dan memiliki kerangka program sebagai berikut: void main (void) { }// pernyataan-pernyataan Jika kita memiliki beberapa fungsi yang lain maka fungsi utama inilah yang memiliki kedudukan paling tinggi dibandingkan fungsi-fungsi yang lain sehingga setiap kali program dijalankan akan selalu dimulai dari memanggil fungsi utama terlebih dahulu. Fungsi-fungsi yang lain dapat dipanggil setelah fungsi utama dijalankan melalui pernyataan-pernyataan yang berada didalam fungsi utama.
Contoh: // prototype fungsi inisialisasi port Void inisialisasi_port (char A, char B, char C, char D) { DDRA = A ; DDRB = B ; DDRC = C ; DDRD = D ; } // fungsi utama void main (void) { Inisialisasi_port (0xFF, 0xF0, 0x0F, 0x00) ; }
Universitas Sumatera Utara
18
2.7.2. Pengenal
Pengenal (identifier) merupakan sebuah nama yang diisikan oleh pemrogram untuk menunjukkan identitas dari sebuah konstanta, variable, fungsi, label atau tipe data khusus. Pemberian nama sebuah pengenal dapat ditentukan bebas sesuai keinginan pemrogram tetapi harus memenuhi aturan berikut: 1. Karakter pertama tidak boleh mengunakan angka. 2. Karakter kedua dapat berupa huruf, angka, atau garis bawah. 3. Tidak boleh menggunakan spasi. 4. Case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda. 5. Tidak boleh menggunakan kata-kata yang merupakan operator dalam pemrograman C, misalnya: void, short, const, if, bit, long, case, do, switch, char, float, for, else, break, int, double, include, while.
2.7.3. Tipe Data
Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi setiap instruksi yang akan dilaksanakan oleh komputer. Misalnya saja 5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5 dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika keduanya bertipe float maka akan menghasilkan nilai 2.5000000. Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih efisien dan efektif.
Universitas Sumatera Utara
19
2.7.4 Variabel Bertanda (Signed) dan Tak Bertanda (Unsigned)
Untuk pendeklarasian tipe data yang berupa bilangan bulat yaitu char, int, short dan long
dapat
ditambahkan
signed
atau
unsigned.
Signed
digunakan
untuk
mendefenisikan bahwa data yang disimpan dalam variabel adalah bertanda sedangkan unsigned untuk data yang tidak bertanda. Contoh: Unsigned char data1; Signed char data2; Pada contoh diatas variabel data1 bertipe char (1 byte) dan tidak bertanda (unsigned) sehingga dapat menyimpan data dari 0 sampai 255. Sedangkan variabel data2 bertipe char (1 byte) dan bertanda (signed) sehingga dapat menyimpan data dari -128 sampai 127.
2.7.5 Pengarah Preprosesor
Pengarah preprosesor digunakan untuk mendefenisikan prosesor yng digunakan, dalam hal ini adalah untuk mendefenisikan jenis mikrokontroler yang digunakan. Dengan pengarah preprosesor ini maka pendeklarasian register-register dan penamaanya dilakukan pada file lain yang disisipkan dalam program utama dengan sintaks sebagai berikut: # include Contoh:# include <mega 8535.h>
2.7.6 Pernyataan
Pernyataan adalah satu buah instruksi lengkap yang berdiri sendiri. Berikut adalah contoh sebuah pernyataan: PORTC = 0x0F;
Universitas Sumatera Utara
20
Pernyataan PORTC = 0x0F; merupakan sebuah instruksi untuk mengeluarkan data 0x0F ke Port C.
2.7.7 Fungsi Pustaka
Bahasa C memiliki sejumlah fungsi pustaka yang berada pada file-file tertentu dan sengaja disediakan untuk menangani berbagai hal dengan cara memanggil fungsifungsi yang telah dideklarasikan dalam file tersebut. Dalam banyak hal, pustakapustaka yang tersedia tidak berbentuk kode sumber melainkan dalam bentuk yang telah dikompilasi. Penggunaan fungsi pustaka ini adalah sebagai berikut: # include Contoh: # include
Beberapa fungsi pustaka yang telah disediakan oleh CodeVisionAVR antara lain adalah: 1. Fungsi Tipe Karakter (ctype.h). 2. Fungsi Standar I/O (stdio.h). 3. Fungsi matematika (math.h). 4. Fungsi String (string.h). 5. Fungsi Konversi BCD (bcd.h). 6. Fungsi Konversi Akses Memori (mem.h). 7. Fungsi Tunda (delay.h). 8. Fungsi LCD (lcd.h). 9. Fungsi I2C (i2c.h), Fungsi SPI (spi.h). 10. Fungsi Real Time Clock (RTC) (ds 1302.h, ds1307.h).
Universitas Sumatera Utara
21
11. Fungsi Sensor Suhu LM75, DS1621 dll (lm75.h, ds1621.h). 12. Fungsi Sensor Suhu LM75, DS1621 dll (lm75.h, ds1621.h).
2.7.8 Pernyataan IF
Pernyataan if digunakan untuk melakukan pengambilan keputusan terhadap dua buah kemungkinan yaitu mengerjakan suatu blok pernyataan atau tidak. Bentuk pernyataan if adalah sebagai berikut: If (kondisi) { // blok pernyataan yang akan dikerjakan // jika kondisi if terpenuhi } Contoh: If (PINA>0x80) { Dataku = PINA; PORTC=0xFF; } Pernyataan if diatas akan mengecek apakah data yang terbaca pada Port A (PINA) nilainya lebih dari 0x80 atau tidak, jika ya maka variabel dataku diisi dengan nilai PINA dan data 0xFF dikeluarkan ke port C. Apabila dalam blok pernyataan hanya terdapat satu pernyataan saja maka tanda { dan } dapat dihilangkan seperti contoh berikut: If (PINA>0x80) PORTC = 0xFF
2.8. CodeVisionAVR
CodeVisionAVR merupakan salah satu software kompiler yang khusus digunakan untuk mikrokontroler keluarga AVR. CodeVisionAVR merupakan yang terbaik bila dibandingkan dengan kompiler-kompiler yang lain karena beberapa kelebihan yang dimiliki oleh CodeVisionAVR antara lain: 1. Menggunakan IDE (Integrated Development Environment). 2. Fasilitas yang disediakan lengkap (mengedit program, mengkompile program, mendownload program) serta tampilannya terlihat menarik dan mudah
Universitas Sumatera Utara
22
dimengerti. Kita dapat mengatur settingan editor sedemikian rupa sehingga membantu memudahkan kita dalam penulisan program. 3. Mampu membangkitkan kode program secara otomatis dengan menggunakan fasilitas CodeWizardAVR. 4. Memiliki fasilitas untuk mendownload program langsung dari CodeVisionAVR dengan menggunakan hardware khusus seperti Atmel STK500, Kanda System STK200+/300 dan beberapa hardware lain yang telah didefenisikan oleh CodeVisionAVR. 5. Memiliki fasilitas debugger sehingga dapat menggunakan software compiler lain untuk mengecek kode assembler nya, contohnya AVRStudio. 6. Memiliki terminal komunikasi serial yang terintegrasi dalam CodeVisionAVR sehingga dapat digunakan untuk membantu pengecekan program yang telah dibuat khususnya yang menggunakan fasililtas komunikasi serial UART.
CodeVision chip programmer Salah satu kelebihan dari CodeVisionAVR adalah tersedianya fasilitas untuk mendownload program ke mikrokontroler yang telah terintegrasi sehingga demikian CodeVisionAVR ini selain dapat berfungsi sebagai software kompiler juga dapat berfungsi sebagai software programmer/ downloader. Jadi kita dapat melakukan proses download program yang telah dikompile dengan menggunakan software CodeVisionAVR juga.
Universitas Sumatera Utara