• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI

2.4 Komparator Tegangan (IC LM311)

Komparator adalah sebuah rangkaian penguat yang memiliki dua buah input. Tegangan output yang dihasilkannya sebanding dengan selisih antara dua tegangan inputnya. Gain komparator kurang – lebih adalah sebesar 200.000, sehingga selisih input sebesar hanya 100 µV pun sudah cukup untuk menurunkan output mendekati 0 V atau mendekatkannya hingga mencapai tegangan catu.

Pada komparator tipe LM311N terdapat 23 buah transistor, 2 dioda, dan 19 resistor. Komponen – komponen ini, beserta seluruh sambungannya, dibuat di atas sebuah chip silikon yang berukuran sangat kecil. Chip ini ditempatkan didalam sebuah kemasan 8-pin.

(a) Pin (b) Bentuk Fisik Gambar 2.5 IC LM311N

Gambar di atas memperlihatkan sebuah kemasan IC 8-pin. Pin 1 dapat diidentifikasikan dengan merujuk pada sebuah ’lingkaran’ kecil di badan IC

(gambar 2.5 b). Pin – pin lainnya diberi nomor sebagaimana diperlihatkan dalam gambar.

Dua buah input ke rangkaian penguat adalah iput non–pembalik (+) dan input pembalik (-). Output yang dihasilkan akan bernilai positif apabila input (+) lebih besar dari input (-). Output akan mendekati 0 V apabila input (+) lebih kecil dari input (-).

Piranti ini membutuhkan sebuah catu daya mode–ganda (dapat imemberikan tegangan positif dan negatif). Pin 1 dihubungkan ke V. Pn 8 dihubungkan ke jalur positif catu daya. Pin 4 disambungkan ke jalur negatif catu daya. Pasokan tegangan positif dan tegangan negatif, keduanya harus sama besar namun berlawanan polaritasnya.

2.5 Mikrokontroler AVR Seri ATMega8 2.5.1 Sekilas tentang AVR

Ada beberapa definisi AVR, yaitu AVR : Alf and Vegard RISC atau AVR : Advanced Virtual RISC atau RISC: Reduced Instruction Set Computer

Arsitektur mikrokontroler jenis AVR pertamakali 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 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.

2.5.2 Karakteristik Mikrokontroler ATMega 2.5.2.1 Fitur ATMega8

Fitur yang tersedia adalah :

• Frekuensi clock maksimum 16 MHz • Jalur program I/O 23 buah

• Analog to Digital Converter 10 bit sebanyak 6 jalur • Timer/Counter sebanyak 3 buah

• CPU 8 bit yang terdiri dari 32 register • Watchdog Timer dengan osilator internal • SRAM sebesar 1 kbyte

• Memori Flash sebesar 8 Kbyte dengan kemampuan read while write • Interrupt internal maupun eksternal

• Port komunikasi SPI

• EEPROM sebesar 512 byte yang dapat diprogram saat operasi • Analog Comparator

2.5.2.2 Konfigurasi Pin ATMega8

Gambar 2.6 Konfigurasi Pin ATMega8

2.5.2.3 Peta Memory ATMega8

ATMega8 memiliki dua jenis memori yaitu Data Memory dan Program Memory ditambah satu fitur tambahan yaitu EEPROM Memory untuk penyimpan data.

• Program Memory

ATMega8 memiliki On-Chip In-System Reprogrammable Flash Memory untuk menyimpan program. Untuk alasan keamanan, program memory 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 pertamakali diaktifkan. Application Flash Section digunakan untuk menyimpan program aplikasi yang dibuat user. AVR tidak dapat menjalankan program aplikasi ini sebelum menjalankan program Boot Loader.

Besarnya memori Boot Flash Section dapat diprogram dari 128 word sampai 1024 word tergantung setting pada konfigurasi bit di register BOOTSZ. Jika Boot Loader diproteksi, maka program pada Application Flash Section juga sudah aman.

Gambar 2.7 Peta Program Memory

• Data Memory

Gambar berikut menunjukkan peta memori SRAM pada ATMega8. Terdapat 608 lokasi address data memori. 96 lokasi address digunakan untuk Register File dan I/O Memory sementara 512 lokasi address lainnya digunakan untuk internal data SRAM. Register File terdiri dari 32 general purpose working register, I/O register terdiri dari 64 register.

Gambar 2.8 Peta Data Memory

• EEPROM Data Memory

ATMega8 memiliki EEPROM sebesar 512 byte untuk menyimpan data. Lokasinya terpisah dengan system address register, data register dan control register yang dibuat khusus untuk EEPROM.

2.5.3 Status Register (SREG)

Status Register adalah register yang memberikan informasi yang dihasilkan dari eksekusi instuksi aritmatika. Informasi ini berguna untuk mencari alternatif alur program sesuai dengan kondisi yang dihadapi.

Bit 7 – I: Global Interrupt Enable

Jika bit Global Interrupt Enable diset, maka fasilitas interupsi dapat dijalankan. Bit ini akan clear ketika ada interrupt yang dipicu dari hardware, setelah program interrupt dieksekusi, maka bit ini harus di set kembali dengan instruksi SEI. Bit 6 – T: Bit Copy Storage

Instruksi bit copy BLD dan BST menggunakan bit T sebagai sumber atau tujuan dalam operasi bit.

Bit 5 – H: Half Carry Flag Bit 4 – S: Sign Bit

Bit S merupakan hasil exlusive or dari Negative Flag N dan Two’s Complement Overflow Flag V.

Bit 3 – V: Two’s Complement Overflow Flag Digunakan dalam operasi aritmatika

Bit 2 – N : Negative Flag

Jika operasi aritmatika menghasilkan bilangan negatif, maka bit ini akan set. Bit 1 – Z: Zero Flag

Jika operasi aritmatika menghaslkan bilangan nol, maka bit ini akan set. Bit 0 – C: Carry Flag

2.5.4 Bahasa Assembly AVR

Bahasa yang dipakai untuk memprogram mikrokontroler AVR adalah bahasa assembly AVR atau bahasa C. Dalam tugas akhir ini semua program ditulis dalam bahasa assembly AVR.

Berikut adalah contoh sebuah program aplikasi untuk mikrokontroler AVR :

Sebuah program harus terdiri dari dua bagian, yaitu inisialisasi program dan program utama. Inisialisasi program harus disertakan agar program utama dapat berjalan. Berikut adalah urutan langkah inisialisasi program :

1. Menentukan jenis mikrokontroler yang digunakan dengan cara memasukkan file definisi device (m8535def.inc) kedalam program utama.

2. Menuliskan original address program, yaitu 0x0000. Kemudian dilanjutkan dengan instruksi rjmp / relative jump ke label main. Hal ini dimaksudkan agar program memory tidak tumpang tindih dengan data memory.

3. Menentukan isi Stack Pointer dengan address terakhir RAM (RAMEND). Untuk ATMega8 yaitu 0x025F. Ini dimaksudkan agar program utama mulai ditulis setelah address terakhir RAM.

2.5.5 Operasi Port Input Output 2.5.5.1 Register I/O

Setiap port ATMega8535 terdiri dari 3 register I/O yaitu DDRx, Portx dan PINx.

• DDx (Data Direction Register)

Register DDx digunakan untuk memilih arah pin. Jika DDx = 1, maka Pxn sebagai pin output. Jika DDRx = 0, maka Pxn sebagai input.

• Portx (Port Data Register)

Register Portx digunakan untuk 2 keperluan yaitu untuk jalur output atau untuk mengaktifkan resistor pullup.

1. Portx berfungsi sebagai output jika DDRx = 1, maka : Portxn = 1 maka pin Pxn akan berlogika high. Portxn = 0 maka pin Pxn akan berlogika low.

2. Portx berfungsi untuk mengaktifkan resistor pullup jika DDRx = 0, maka :

Portxn = 1 maka pin Pxn sebagai pin input dengan resistor pull up. Portxn = 0 maka pin Pxn sebagai output tanpa resistor pull up.

Tabel 2.3 Konfigurasi Port

Catatan :

x menunjukkan nama port (A,B,C,D) n menunjukkan nomor bit (0,1,2,3,4,5,6,7)

• PINx (Port Input Pin Address) Digunakan sebagai register input.

2.5.5.2 Operasi Register I/O

in : membaca data I/O port ke dalam register contoh : in r16,PinA

out : menulis data register ke I/O port contoh : out PortA,r16

ldi : (load immediate) : menulis konstanta ke register sebelum konstanta tersebut dikeluarkan ke I/O port

contoh : ldi r16,0xff

sbi : (set bit in I/O) : membuat logika high pada sebuah bit I/O port contoh : sbi PortB,7

cbi : (clear bit in I/O) : membuat logika low pada sebuah bit I/O port contoh : cbi PortB,5

sbic : (skip if bit in I/O is clear) : lompati satu instruksi jika bit I/O port dalam kondisi clear/low

contoh : sbic PortA,3

sbis : (skip if bit in I/O is set) : lompati satu instruksi jika bit I/O port dalam kondisi set/high

contoh : sbis PortB,3

2.5.6 Operasi Aritmatika Instruksi Aritmatika

add : Menambahkan isi dua register.

Contoh : add r15,r14 ; r15=r15+r14

adc : Menambahkan isi dua register dan isi carry flag Contoh : adc r15,r14 ; r15=r15+r14+C

sub : Mengurangi isi dua register.

mul : Mengalikan dua register. Perkalian 8 bit dengan 8 bit menghasilkan bilangan 16 bit yang disimpan di r0

untuk byte rendah dan di r1 untuk byte tinggi. Untuk memindahkan bilangan 16 bit antar register digunakan instruksi movw (copy register word)

Contoh : mul r21,r20 ; r1:r0=r21*r20

2.5.7 Operasi Logika Instruksi Logika

and : Untuk meng-and-kan dua register

Contoh : and r23,r27 ; r23=r23 and r27

andi : Untuk meng-and-kan register dengan konstanta immediate Contoh : andi r25,0b11110000

or : Untuk meng-or-kan dua register

Contoh : or r18,r17 ; r18=r18 or r17

ori : Untuk meng-or-kan register dengan konstanta immediate Contoh : ori r15,0xfe

inc : Untuk menaikkan satu isi sebuah register Contoh : inc r14

dec : Untuk menurunkan satu isi sebuah register Contoh : dec r15

clr : Untuk mengosongkan (membuat jadi nol) isi register Contoh : clr r15 ; r15=0x00

ser : Set all bit in register. Membuat jadi satu isi register Contoh : ser r16 ; r16=0xff

2.5.8 Operasi Percabangan Instruksi Percabangan

sbic (skip if bit in I/O is cleared) : Skip jika bit I/O yang diuji clear sbis (skip if bit in I/O is set) : Skip jika bit I/O yang diuji set

cp (compare) : Membandingkan isi dua register mov (move) : Meng-copy isi dua register

cpi (compare with immediate) : Membandingakan isi register dengan konstanta tertentu.

breq (branch if equal) : Lompat ke label tertentu jika suatu hasil

perbandingan adalah sama.

brne (branch if not equal) : Lompat ke label tertentu jika suatu hasil perbandingan adalah tidak sama.

rjmp (relative jump) : Lompat ke label tertentu. rcall (relative call) : Memanggil subrutin.

ret (return) : Keluar dari sub rutin.

2.5.9 Interupsi

Interupsi adalah kondisi yang memaksa mikrokontroler menghentikan sementara eksekusi program utama untuk mengeksekusi rutin interrupt tertentu /

Interrupt Service Routine (ISR)

Setelah melaksanakan ISR secara lengkap, maka mikrokontroler akan kembali melanjutkan eksekusi program utama yang tadi ditinggalkan.

Tabel 2.4 Sumber Interupsi Atmega 8

2.5.10 Liquid Crystal Display 2.5.10.1 Konfigurasi Pin LCD 16x2

LCD (Liquid Crystal Display) adalah modul penampil yang banyak digunakan karena tampilannya menarik. LCD yang paling banyak digunakan saat ini ialah LCD M1632 refurbish karena harganya cukup murah. LCD M1632 merupakan modul LCD dengan tampilan 2x16 (2 baris x 16 kolom) dengan konsumsi daya rendah. Modul tersebut dilengkapi dengan mikrokontroler yang didesain khusus untuk mengendalikan LCD.

Gambar 2.9 Konfigurasi Pin LCD 16 Karakter x 2 Baris

Dokumen terkait