6
BAB 2
LANDASAN TEORI
2.1.
Radio Frequency Indentification (RFID)
Radio Frequency Indentification (RFID)
merupakan salah satu bentuk auto-ID.
Teknologi RFID pertama kali digunakan untuk mengidentifikasi kawan atau lawan sejenis pesawat terbang pada dunia II. Pesawat perang dilengkapi dengan radio transponder yang akan memberi respon apabila diberi sinyal introgated.
RFDI transfonder atau tag berisi identitas objek barang, jenis, model dan nomor serial yang untuk, atau data yang diperlukan untuk memberikan abtraksi keterangan barang. Tag RFID mempunyai beberapa keuntungan jika dibandingkan dengan sistem optical barcode. Data yang ada pada tag dapat dibaca saecara otomatis. Arah pembacannya tidak langsung (non line of sight), pembacaannya dapat menenbus bahan nonkonduktor seperti kertas karton atau kardus, dapat dibaca beberapa ratus tag perdetik dan dapat dibaca dari jarak beberapa meter tanpa memperhatikan arah pembacaannya.
Inductive Coupled RFID Tag dan Capacitive Coupled RFID Tag a) Inductive Coupled RFID tag terdiri dari dua jenis yaitu yang aktif (yang menggunakan baterai) dan fasif tidak mengunakan baterai, yang tidak menggunakan baterai hanya dapat dibaca saja, sedangkan yang menggunakan
Universitas Sumatera Utara
7
baterai dapat dibaca dan ditulis, baik untuk menambah data maupun menghapusnya. Bahan yang digunakan untuk membuat induktive coupled RFID tag terdiri dari bahan-bahan sebagai berikut: 1. Silicon Microprocessor Silikon microprocessor adalah subuah chip yang terletak dalam sebuah tag yang berfungsi sebagai penyimpan data. 2. Metal Coil Metal coil merupakan komponen yang terbuat dari kawat aluminium yang berfungsi sebagai antena yang beroperasi pada frekuensi 13,56 MHz. Jika sebuah tag masuk kedalam jangkauan reader maka antena ini akan mengirimkan data yang ada pada tag kepada reader terdekat. 3. Encapsulating Material Encapsulating material adalah bahan yang membungkus tag yang terbuat dari bahan kaca.
b) Capacitive Coupled RFID Tag Secara struktur Capasitive Coupled RFID tag dapat berubah, tetapi bahan ukurannya berubah dengan maksud untuk menekan biaya produksi. Capacitive coupled RFID tag terdiri dari bahan sebagai berikut: 1. Silicon Microprocessor Ukuran dalam capative RFID silicon microprocessor-nya (3mm²) lebih kecil dari pada ukuran inductive RFID. Microprocessor ini dapat menyimpan data sebsar 96-bit, yang mampu menyimpan jutaan angka sekaligus sebagai kode.
Universitas Sumatera Utara
8
2. Conductive Carbon Ink Conductive carbon ink adalah tinta karbon yang memilki sifat dapat menghantarkan listrik. Tintah inilah yang berfungsi sebagai antena. Tinta ini dicetakkan diatas sebuah kertas yang melapisi silicon microprocessor. 3. Kertas Kertas inilah yang melapisi microprocessor dan tempat tintah dicetakan. Pengginaan bahan kertas menjadikan label jenis ini mudah menghancurkan bila sudah tidak dipakai.
Komponen RFID RFID terdiri dari tiga komponen sebagai berikut : 1. RFID Tag atau transponder, yang menampung indentifikasi data objek. 2. RFID Tag reader atau transciver yang berfungsi untuk membaca dan menulis data tag. 3. Server data base berfungsi untuk kumpulan record isi dari tag.
Tag Tag (kartu/label) secara fisik ditempelkan pada barang. Tag tersusun dari microchip yang berfungsi untuk menyimpan dan komputasi yang disatukan dengan lilitan antena yang berfungsi untuk komunikasi.
Menurut klasifikasi tag dibedakan menjadi tiga yaitu : aktif, semi-fasif dan fasif. 1. Tag aktif mempunyai sumber tenaga seperti baterai dan dapat dilakukan komunikasi untuk dibaca dan ditulis.
Universitas Sumatera Utara
9
2. Tag semi-pasif mempunyai baterai tetapi hanya dapat merespon transmisi yang datang (incoming transmissions). 3. Tag pasif menerima tenaga dari reader, antena yang akan menjadi sumber tenaga dengan memanfaatkan medan magnet yang ditimbulkan dari pembaca (reader). Pada tabel 2.1. terlihat klasifikasi tag. Pasif
Semi-pasif
Aktif
Sumber daya
Pasif
Baterai
Baterai
Transmitter
Pasif
Pasif
Aktif
100 meter
1000 meter
Jangkauan maksimal
10 meter
Tabel 2.1. Klasifikasi tag
Tag Reader Tag reader berfungsi untuk membaca data yang ada pada tag melewati RF interface. Untuk menambah fungsi reader dilengkapi dengan internal storage, dan aplikasi peragkat lunak untuk menyimpan data pada server database. Pada prakteknya tag reader dapat berupa perangkat keras yang terletqk pada suatu tampat yang tetap. Pada aplikasinya tag reader dapat membaca sendiri tag yang dideteksi (smart self). Tag reader smart self dapat mendeteksi ketika ada penambahan keluar.Pada dasarnya tag reader merupakan suatu peralatan yang sederhana dan dapat digabungkan kedalam perlengkapan mobile seperti telepon selular atau PDAs.
RFID Tag Reader Tag reader berfungsi untuk membaca data yang ada pada tag melewati RF interface. Untuk menambah fungsi reader dilengkapi dengan internal storage, dan aplikasi
Universitas Sumatera Utara
10
peragkat lunak untuk menyimpan data pada server database. Pada prakteknya tag reader dapat berupa perangkat keras yang terletak pada suatu tampat yang tetap. Pada aplikasinya tag reader dapat membaca sendiri tag yang dideteksi (smart self). Tag reader smart self dapat mendeteksi ketika ada penambahan keluar.Pada dasarnya tag reader merupakan suatu peralatan yang sederhana dan dapat digabungkan kedalam perlengkapan mobile seperti telepon selular atau PDA. Modul reader tersedia dengan variasi yang luas di pasaran. Variasi tersebut dimulai dari perbedaan vendor produsen, perbedaan kompatablitas dengan tag dan sebagainya. Dari variasi yang ada, disini digunakan Modul reader ID-20 dari Innovations Electronic. Pemilihan ini disasarkan pada ketersediaan produk di pasaran dan keterjangkauan harga.Meskipun berupa modul yang masih perlu dirakit, kebanyakan rangkaian inti ID-20 yang diperlukan untuk fungsi pembacaan tag RFID telah tersedia dalam modul. Sangat sedikit rangkaian luar yang diperlukan untuk menjalankan fungsi standar.
Gambar 2.1. Bentuk RFID Reader
Innovations Electronic mengeluarkan beberapa produk modul ID, yaitu ID-2, ID-12 dan ID-20. Salah satu pembeda dari seri ini adalah rentang jarak bacanya seperti terlihat pada Tabel 2.2.
Universitas Sumatera Utara
11
Tabel 2.2. Karakteristik Fisik dan Operasi Seri Modul ID
Cara kerja RFID Telah dijelaskan bahwa tag ada yang memiliki sumber listrik sendiri dan ada yang tidak. Cara kerja untuk tag yang tidak memiliki energi antenalah yang mengambil tenaga dari reader akan memodulasi medan magnet untuk berkomunikasi mengirim data ke reader. Data yang diterima reader kan diteruskan menuju host komputer atau server database. Data yang masuk pada host komputer akan diolah sesuai dengan program aplikasi yang ada di komputer.
Gambar 2.2, berikut adalah gambaran singkat cara kerja Sistem RFID. RFID reader selalu dalam kondisi siap untuk membaca kehadiran transponder. Ketika suatu transponder masuk ke dalam jangkauan gelombang radio dari reader, transponder langsung mengirimkan data yang dibawa secara nirkabel. RFID reader segera menerima data yang dikirimkan lalu melewatkan data itu ke aplikasi atau software untuk dilakukan pengolahan.
Universitas Sumatera Utara
12
Gambar 2.2. Cara Kerja Sistem RFID
Kegunaan RFID Auto-ID sistem RFID memfunyai kelebihan da[at membaca 100 tag tiap detik, dengan jangkauan pembacaan antara 10 meter sampai dengan 100 meter, dapat membaca tag yang terhalang bahan non konduktor (kertas, karton, kardus) tanpa mempertibangkan arah pembacaan. Dengan mempunyai kelebihan seperti di atas, tag RFID dapat digunakan untuk pemberian label pada inventori di pabrik, perpustakaan, toko, atau bahkan dapat digunakan untuk memberi ID pada hewan ternak.
2.2.
Bahasa Pemrograman C
2.2.1. Struktur Pemrograman C
Srukttur penulisan bahasa C secara umum terdiri atas empat blok, yaitu: 1. Header, 2. Deklarasi konstanta global dan atau variabel, 3. Fungsi dan atau prosedur (bisa dibawah progarm utama), 4. progaran utama.
Universitas Sumatera Utara
13
Secara umum, pemrograman C paling sederhana dilakukan dengan hanya menuliskan priogram utamanya saja, yaitu: void main (void) { ... } Secara utuh adalah sebagai berikut: /*HEADAER untuk memanggil library yang akan digunakan */ #include <90s2313.h> # include <stdio.h> /*deklarasi konstanta dan atau variable global */ unsigned char dt,xx; char but [33]; /*Deklarasi fungsi dan atau prosedur */ usigned char lampu (unsigned char bint) { PORTA=bitn & 0x3C: } /*Program Utama */ void main (void); /*Deklarasi konstanta dan atau variabel lokal*/* Char data; PORTA= 0xF0; DDRA=0xF0;
While (1) {
Universitas Sumatera Utara
14
... }; }
Header Header berisi include file (hex), yaitu library (pustaka) yang akan digunakan dalam pemrograman. Contoh: #include <90s2313.h> # include <delay.h> # include <stdio.h> Konstanta Penulisan konstanta adalah sebagai berikut: 1. Integer atau long integer dapat ditulis dengan format desimal (contoh 1234), biner dengan awalan 0b (contoh 0b101001), hexa desimal dengan awalan 0x (contoh 0xFF) atau oktal dengan awalan 0 (contoh 0777). 2. Unsigned integer ditulis dengan diakhiri U (contoh 10000U). 3. Long integer ditulis dengan diakhiri L (contoh 99L). 4. Unsigned long integer ditulis dengan diakhiri UL (contoh 99UL). 5. Floating point ditulis dengan diakhiri F (contoh 123F).
Karakter konstanta dituliskan dalam tanda kutip (contoh ‘a’), sedangkan konstanta string harus dalam tanda kutip dua (“Saya Belajar C”).
Universitas Sumatera Utara
15
Label, Variabel, Fungsi Identifikasi label, variabel fungsi dapat berupa huruf (A...Z, a...z) dan angka (0...9), juga karakter underscore (_). Meskipun begitu identifikasi hanya bisa dimulai dengan huruf atau karakter undescore. Lebih penting lagi, indentifikasi ini Case is signifikant, yaitu huruf besar dan huruf kecil yang berbeda. Misal, variabel1 tidak sama Variabel1. Identifikasi bisa memuat sebanyak 32 karakter.
Komentar Komentar diawali dengan tanda ‘/*’ dan di akhiri dengan ‘*/’ Contoh: /* Ini komentar */ /* Ini komentar Multi baris */ Sedangkan komentar satu baris bisa dengan tanda ‘//’ Contoh: // Ini juga komentar
Aritmatika Simbol
contoh
+
c=a+b
Aritmatika Penjumlahan
n=n+2 -
c=a-b
Pengurangan
n=a-2 ++
++i
Kenaikan (increment), sama dengan i = i+1
Universitas Sumatera Utara
16
--
--i
Penurunan (decrement), sama dengan i = i-1
*
c = a*d
Perkalian
n = *2 /
c = a/b
Pembagian
n=/2 %
Sisa = a%b
Menghasilkan sisa dari pembagian. a dan b bilangan bulat
=
a=b
Pemberian nilai
+=
a+=2
Penambahan suatu nilai pada satu variabel yang sudah ada sebelumnya. Sama a = a+2
-=
a-=2
Pengurangan
suatu
nilai
pada suatu
variabel yang tidak ada sisanya *=
a*=2
Pengalian suatu nilai pada satu variabel yang sudah ada sebelumnya. Sama dengan a = a*2
/=
a/=2
Pembagian dari suatu nilai pada satu variabel yang sudah ada sebelumnya. Sama dengan a = a/2
%=
a/=2
Sisa dari suatu nilai pada suatu variabel yang sudah ada sebelumnya yang dibagi nilai atau variabel lain. Sama dengan a = a/2
Universitas Sumatera Utara
17
*
*pointer
Menunjukkan isi dari pointer
Tabel. 2.3. Perintah Aritmatika Logika Simbol
Contoh
==
If (a = = b)
Logika pembading Logika sama dengan digunakan dengan, digunakan
untuk
pembanding.
Menghasilkan nilai true jika a=b !=
If (a != b)
Tidak sama dengan. Mengahasilkan nilai true jika a ≠ b.
<
If (a < b)
Logika lebih kecil dari. Menghasilkan nilai true jika < b.
<=
If (a <= b)
Logika lebih kecil sama dengan dari. Menghasilkan nilai true jika a ≤ b.
>
If (a > b)
Logika lebih besar dari. Menghasilkan nilai true jika a > b.
>=
If (a >= b)
Logika lebih besar sama dengan dari. Menghasilkan nilai true jika a ≥ b.
!
If (! a)
NOT
&&
If (a == b
AND
&& a == c) ||
If (a ==b
OR
|| a==c)
Tabel 2.4. Tabel Perintah Logika .
Universitas Sumatera Utara
18
Percabangan a. if - then Bentuk umum dari percabangan ini adalah: if (kondisi) { // pernyataan }; Artinya adalah pernyataan akan dijalankan jika kondisi terpenuhi. Contoh: If (a<050) { PORTC+0x50; }; Dalam contoh ini PORTC akan dikirim data 0x55 (ingat mode heksa) jika nilai a lebih kecil dari 0x50. b. if – then – else bentuk umum dari percabangan ini adalah: if (kondisi) { // pernyataan a } Else { Pernyataan b Artinya adalah perntaan a akan dijalankan jika kondisi terpenuhi dan pernyataan b akan dijalankan jika kondisi tidak terpenuhi. Contoh; If (a<0x55) { PORTC=0x55;
Universitas Sumatera Utara
19
} Else { PORTC=0xAA; }; PORTC akan dikirim data 0x55 jika nilai a lebih kecil dari 0x50 dan PORTC akan dikirim data 0xAA jika a≥0x50. c. switch – case pernyataan switch – case digunakan jika terjadi banyak percabangan. Struktur penulisan pernyataan ini adalah sebagai berikut: ... Switch (ekspresi) { Case konstanta1: pernyatataan1 break; case konstanta2; pernyataan2 break; ... case konstantaN: pernyataanN break; } ... Contoh: ...
Universitas Sumatera Utara
20
switch (a) { Case 1 : PORTC=0x01; break; case 2 : PORTC=0x02; break; case 3 : PORTC=0x04; break; } ... PORTC akan dikirim 0x01 jika nilai a=1,PORTC akan dikirim data 0x02 jika nilai a=2 dan PORTC akan dikirim data 0x04 jika nilai a=3; c. Switch - case - default pernyataan switch - case – default hampir sama dengan switch – case. Yang membedakan adalah bahwa dengan adanya default maka jika terdapat kondisi case yang sesuai dengan ekpresi switch akan menuju pernyataan yang terdapat di bagian default. Struktur penulisan pernyataan ini adalah sebagai berikut: switch (ekspresi) { case konstanta1: pernyatataan1 break ; case konstanta2; break;
Universitas Sumatera Utara
21
pernyataan2 break; ... case konstantaN: PernyataanN break; default: Pernyataan-pernyataan; } Contoh: ... switch (a) { case 1 : PORTC=0x01; break; case 2 : PORTC=0x02; break; case 3 : PORTC=0x04; break; default: PORTC=0xFF; } ...
Universitas Sumatera Utara
22
PORTC akan dikirim data 0x01 jika nilai a=1, PORTC akan dikirim data 0x02, jika nilai a=2 dan PORTC akan dikirim data 0x04 jika nilai a=3 dan jika kondisi case tidak sesuai dengan ekspresi maka pernyataan di default akan dijalankan.
Perulangan a. for pernyataan for akan melakukan pengulangan dengan kali sesuai yang diinginkan. Struktur penulisan perulangan adalah sebagai berikut: ... for (mulai; kondisi; penambahan atau pengurangan) { Pernyataan – pernyataan: }; Mulai adalah diberikan nilai awal, kemudian kondisi adalah pengondisi dalam for yaitu jika kondisi bernilai true maka penyataan dalam for akan dijalankan. Penambahan atau pengurangan adalah penambahan atau pengurangan terhadap nilai awal. Contoh: ... a=1; for (i=1; 1<50; i++) { a=a*2; PORTC=a;; }; ...
Universitas Sumatera Utara
23
Contoh diatas akan melakukan perulangan 50 kali, yaitu dari satu hingga 50 dengan penambahan 1 (i++, lihat operator aritmatika). Hasilnya PORTC akan dikirim data 1, kemudian data 2, 4, 8, ... b. While bentuk dari perulangan ini adalah sebagai berikut : while (kondisi) { pernyataan-pernyataan ; } Jika kondisi memenuhi (bernilai true) maka pernyataan-pernyataan dibawahnya akan dijalnkan hingga selesai, kemnudian akan menguji kembali kondisi diatas. Contoh : ... i=1; a=1; while (i<50) { a=a*2; PORTC=a;; i++; }; ... c. Do – while Bentuk perulangan ini dikembalikan dari whlie – do, yaitu pernyataan dilakukan lebih dahulu kemudian diuji kondisinya. do { pernyataan–pernyataan;
Universitas Sumatera Utara
24
} while (kondisi); Contoh : ... i=1; a=1; do { a=a*2; PORTC=a;; i++; } while (i<50); ...
Konversi Pola (%) Karakter % _ dipakai sebagai operator konversi pola. Konversi pola akan sangat berguna pada saat kita menampilkan hasil ke LCD. 1. %d menampilkan bilangan bulkat positif Contoh : Sprintf (buff, “Angka %d”,14) ; 2. %o menampilkan bilangan oktal bulat. 3. %x menampilkan bilangan heksadesimal bulat. 4. %u menampikan bilangan desimal tanpa tanda. 5. %f menampilkan bilangan pecahan. 6. %i menampilkan bilangan integer.
Universitas Sumatera Utara
25
7. %c menampilkan karakter yang ditunjukkan bilangan ASCII.
Prosedur dan fungsi Seringkali dalam suatu program kita menemukan kelompok instruksi untuk suatu keperluan tertentu yang sering dijalankan. Kelompok instruksi ini bisa dibuat sebagai prosedur atau fungsi. Langkah ini akan dapat menghemat memori dibanding bila instruksi – instruksi tersebut ditulis berulang-ulang.
a. Prosedur Prosedur adalah suatu kumpulan instruksi untuk mengerjakan suatu keperluan tertentu tanpa mengembalikan suatu nilai. ... Viod nama_prosedur (parameter1, parameter2, parameterN) { } ... b. Fungsi Fungsi adalah suatu kumpulan instruksi untuk mengerjakan suatu keperluan tertentu dengan hasil akhir pengembalian nilai dari keperluan tersebut. ... Type
data
nama_fungsi
(parameter1,
parameter2,...
parameterN) { Pernyataan–pernyataan ; Return variable_hasil ;
Universitas Sumatera Utara
26
} ...
2.3. Mikrokontroler AT90S2313
Perkembangan teknologi telah maju dengan pesat dalam perkembangan dunia elektronika, khususnya dunia mikroelektronika. Penemuan silikon menyebabkan bidang ini mampu memberikan sumbangan yang amat berharga bagi perkembangan teknologi modern. Atmel sebagai salah satu vendor yang mengembangkan dan memasarkan produk mikroelektronika telah menjadi suatu teknologi standar bagi para desainer sistem elektronika masa kini. Dengan perkembangan terakhir, yaitu generasi AVR (Alf and Vegard’s Risc processor). Para desainer sistem elektronika telah diberi suatu teknologi yang memilki kapabilitas yang amat maju, tetapi dengan biaya ekonomis yang cukup minimal.
Mikrokontroler AVR memiliki arsitektur RISC 8 bit, di mana semua instruksi di kemas dalam kode 16-bit (16-bit word) dan sebagai besar instruksi dieksekusi dalam 1 (satu) siklus clok, berbeda dengan instruksi MCS%! Yang membutuhkan 12 siklus clok. Tentu saja itu terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang berbeda.AVR berteknologi RISC (Reduced Instruction Set Conputing), sedangkan seri MCS51 berteknologi CISC (complex Intruction Set Computing). Secara umum, AVR dapat dikompokkan menjadi 4 kelas, yaitu keluarga Attiny, keluarga AT90Sxx, Kelurga ATMega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitekktur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama.
Universitas Sumatera Utara
27
Oleh karena itu, dipergunakan salah satu AVR produk Atmel, yaitu AT90S2313,
pembelajaran
mikrokontroler
dengan
pemahaman
pemrogram
menggunakan simulasi yang terdapat pada sofware AVR dan juga praktek langsung hardware. Selain karena mudah didapatkan dan murah.
Tidak seperti sistem komputer, yang mampu menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka dan lain sebagainya), mikrokontroler hanya bisa digunakan untuk satu aplikasi tertentu saja. Perbedaan lainnya terletak pada perbandingan RAM dan ROM-nya. Pada sistem komputer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna disimpan dalam ruang RAM yang relatif besar dan rutin - rutin antarmuka perangkat keras disimpan dalam ruang ROM yang kecil. Sedangkan pada mikrokontroler, perbandingan ROM dan RAM-nya yang besar artinya program kontrol disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpanan sementara, termasuk register-register yang digunakan pada mikrokontroler yang bersangkutan.
2.3.1. Fitur AT90S2313
Mikrokontroler AT90S2313 memiliki fitur-fitur utama sebagai berikut: 1. 118 macam instruksi, 2. 32 x 8 Bit General Purpose Register, 3. Memori program Flash pada ROM 2 K Word (1 K x 16), 4. Memori data SRAM 128 Byte,
Universitas Sumatera Utara
28
5. Memori EEPROM 128 Byte, 6. Jalur I/O 15 Pin, 7. Timer/counter 2 buah, 8. Output PWM 1 Kanal, 9. Serial I/O menggunakan UART (Universal Asynchronous Receiver and Transmitter), dan 10. Komparator Analog.
AT90S2313 beredar dalam 2 jenis kemasan, yaitu 20 DIP dan 20 SOIC. Kemasannya yang cukup sederhana memudahkan kita yang hendak mempelajari caracara pemrograman mikrikontroler AVR tanpa harus dipusingkankan oleh Instalasi kabel yang melibatkan banyak jalur sebagai mana pada mikrokontroler dengan jumlah Pin diatas 40 buah.
Gambar 2.3. Konfigurasi Pin Mikrokontroler AT90S2313
2.3.2. Diskripsi Pin
a. VCC
Power Supply.
b. GND
Ground.
Universitas Sumatera Utara
29
c. Port B(PB7-PB0)
Port B merupkana Port I/O 8 - Bit bi-Directional. Pinpin pada Port ini dapat diberi Resistor pull – up internal secara individual. PB0 dan PB1 juga dapat digunakan untuk melayani input sebagai komparator analog. Buffer Port B dapat mencatu arus hingga 20 mA dan dapat secara langsung men-drive LED.
d. Port D (PD6-PD0)
Port D memiliki 7 buah pin I/O bi-directional, yakni PD6-PD0. Seperti halnya Port B, Pin-pin pada port ini juga mampu men-drive LED karena dapat mencatu arus hingga 20 mA.
e. RESET
Reset Input. Kondisi logika rendah “0” lebih dari 50 ns pada pin ini akan membuat mikrokontroler masuk ke dalam kondisi Reset.
d. XTAL1
Input bagi inverting osilator amplifier dan input bagi clock internal.
e. XTAL2
Output inverting osilator amplifier.
2.3.3. Arsitektur AT90S2313
Mikrokontroler AT90S2313 merupakan Mikrokontroler CMOS dengan daya rendah yang memiliki Arsitektur AVR RISC 8-bit. Arsitektur ini mendukung kemampuan untuk melaksanakan eksekusi intruksi hanya dalam satu siklus clock osilator.
Universitas Sumatera Utara
30
Gambar 2.4. Blok Diagram AT90S2313
Mikrokontroler AVR Memiliki Arsitektur hardware, di mana memori dan bus untuk program dan data di pisahkan. Dalam Arsitektur AVR, seluruh 32 register umum yang ada terhubung langsung ke ALU Prosesor. Hal inilah yang membuat AVR begitu cepat dalam mengeksekusi intruksi. Dalam satu siklus clock, terdapat dua register independent yang dapat diakses oleh satu intruksi. Teknik yang digunakan adalah fetch during execution atau memegang sambil mengerjakan. Hal ini berarti, dua operan dibaca dari dua register dilakukan eksekusi oprasi, dan hasilnya disimpan
Universitas Sumatera Utara
31
kembali dalam salah satu register, semuanya dilakukan dalam satu siklus clock. Arsitektur AVR AT90S2313 ditunjukkan dalam Gambar 2.3.
Gambar 2.5. Arsitektur AT90S2313
Dari 32 register yang ada, terdapat enam buah register yang dapat digunakan untuk pengamatan tidak langsung 16-bit sebagai sebagai register pointer. Register tersebut memiliki nama khusus, yaitu X, Y, dan Z. Masing-masing terdiri dari sepasang register. Register-register tersebut adalah R26: R27 (register X), R28:R29 (register Y), adan R30:R31 (registert Z). Selain ketiga pasangam reghister lagi yang dapat Anda gunakan bersama untuk pengolahan data 16-bit, yaitu R24:R25. Pasangan
Universitas Sumatera Utara
32
register ini tidak memiliki nama khusus sebagaimana ketiga pasanaan register yang disebutkan dimuka.
2.3.4. Organisasi Memori
MEMORI PROGRAM
MEMORI DATA
Gambar 2.6. Peta Momori AT90S2313
Dalam organisasi memori AVR, 32 register keperluan umum (GPR) menempati space data pada alamat terbawah, yaitu $00 sampai S1F. Sedangkan regiter-register khusus, untuk penanganan I/O dan kontril terhadap mikrokontroler, menempati 64 alamat berikutnya, yaitu mulai dari $20 hingga $5F. Register-register ini merupakan register-register yang khusus digunakan untuk melakukan
engaturan
fungsi terhadap berbagai peripheral mikrokontrolel semacam tombol register timer/counter, fungsi-fungsi I/O, dan sebagainya. Kelompok register ini dinamakan
Universitas Sumatera Utara
33
register I/O. Alamat memori berikutnya digunkan untuk SRAM 128 byte, yaitu pada lokasi $60 sampai dengnan $DF. Gambaran peta memori untuk AVR AT90S2313 ditunjukkan oleh gambar 2.7.
2.3.5. General Purpose Register
Seluruh instruksi operasi register dalam AVR memiliki akses langsung kesemua register. Kecuali untuk lima instruksi aritmatika logika yang mengoprasikan register dengan konstanta (SBCL, SUBI, CPI, ANDI, dan ORI) dan LDI yang mengoprasikan pemuatan data konstan imediet. Instruksi-instruksi tersebut dioperasikan hanya pada setengah lokasi register terakhir GPR (R16 sampai R31). Instruksi untuk operasi umum seperti SBC, SUB, CP, AND,OR, dan operasi lainnya yang mengoperasikan dua register atau satu register dapat melakukan akses terhadap seluruh register.
Gambar 2.7. General Purpose Register.
Universitas Sumatera Utara
34
Seperti telah disampaikan sebelunya, AT90S2313 memiliki dua buah port I/O yaitu portB dan PortD. Berukut ini penjelasan singkat mengenai kedua port I/O tersebut.
PORT B Port B merupakan I/O 8-bit bi-directional yang masing-masing pinnya dapat dikonfigurasi secara individual. Masing-masing pin dalam port ini juga memilki fasilitas berupa resistor pull-up internal yang berguna untuk memberikan kondisi yang tentu (tidak ngambang) pada saat dikonfirmasi sebagi input, tanpa harus memberikan pull-up eksternal. Untul memndukung penggunaan port ini, terhadap tiga buah alamat memori yang khusus digunkan untuk menangani fungsi port B.
Alamat memori tersebut adalah: 1. Data register (PORTB), berlokasi $18 ($38). Register ini bisa ditulis/baca
2. Data direction Register port B (DDRB), berlokasi pada $17 ($37). Register ini nvbisa dituli/baca.
3. Port B input Pin (PINB), berlokasi pada $16 ($36) PINB bukanlah suatu register, namun pin-pin fisik pada hardware mikrokontrolel. PINB ini hanya bisa dibaca.
Universitas Sumatera Utara
35
Ketika PORTB dibaca, maka data Latch dari PORTB akan dibaca, sedangkan bila pinB dibaca, maka logika yang sedang terjadi pada pin-pin Port B yang akan dibaca.
Beberapa pin pada Port B memilki fungsi alternatif, yang bisa digunakan sesuai dengan kebutuhan. Pin-pin tersebut adalah PB0, PB1, PB3, PB5, PB6, dan PB7.
Pin Port B
Fungsi Alternatif
PB0
AINO (Input positif untuk komparator analog)
PB1
AINI ( Input negatif untuk komparator analog)
PB3
OCI (Output Timer/Counter1)
PB5
MOSI (Jalur input data untuk download memori)
PB6
MISO (Jalur output data untuk download memori)
PB7
SCK (Input clock serial)
Tabel 2.5. Fungsi Alternatif Port B
PORT D Sebgaimana Port B, Port D juga memiliki tiga buah lokasi memori yang berkaitan dengan penggunaannya sebagai port I/O. Memori tersebut adalah PORTD, DDRD, dan PIND. 1. PORTD (Data Direction), berlokasi pada #12 ($32).
Universitas Sumatera Utara
36
2. DDRD (Data Direction Register Port D), berlokasi pada $11(31).
3. PIND (Port D Input Pins), berlokasi pada $10 ($30). PIND bukanlah register, dan berbeda dengan dua memori yang lain, PIND hanya bisa dibaca.
Format Port D mirip dengan Port B dalam hal cara konfigurasi I/O dan penggunaan resisitor pull-up. Hal yang sedikit membekan dengan Port B adalah pada Port D, jumlah bit/pin yang bisa digunakan hanya 7 buah. Hal ini sesuai dengan jumlah pin yang ada pada Port D. Pin-pin pada Port D diberi nama PD6..PD0. Selain itu semua pin pada Port D juga memilki fungsi khusus.
Pin Port D
Fungsi Alternatif
PD0
RXD (Receive data input for the UART)
PD1
TXD (Transmit data output for the UART)
PD2
INT0 (External interrupt 0 input)
PD3
INT1 (External interrupt 1 input)
PD5
TO (Timer/Counter0 external input)
PD6
T1 (Timer/Counter1 external input)
PD7
ICP (Timer/Counter1Input Capture pin)
Tabel 2.6. Fungsi Alternatif Port D
Universitas Sumatera Utara
37
2.4.
Software Code Vision AVR C Compiler (CVAVR)
Code Vision AVR C Compiler merupakan compiler bahasa C untuk AVR. Compiler ini cukup memadai untuk belajar AVR, karena selain mudah penggunaannya juga didukung berbagai picture yang sangat membantu dalam pembuatan software untuk keperluan pemograman AVR. Instruksi-instruksi yang merupakan bahasa C tersebut dituliskan pada sebuah editor, yaitu
Code
Vision AVR Editor, Simulator.
Tampilannya seperti yang di tunjukkan pada gambar 2.7.
Gambar 2.8. Tampilan Code Vision AVR Editor
Setelah program selesai ditulis, kemudian di-save dan kemudian di-compile. Pada saat di-compile akan tampil pesan peringatan dan kesalahan. Jika masih ada kesalahan atau peringatan, itu berarti ada kesalahan dalam penulisan perintah atau ada nama subrutin yang sama, sehingga harus diperbaiki terlebih dahulu sampai tidak ada pesan kesalahan lagi.
Universitas Sumatera Utara
38
Software CVAVR ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, proses perubahan ini terjadi pada saat peng-compile-an. Bilangan heksadesimal inilah yang akan dikirimkan ke mikrokontroler.
2.5.
Software Downloader PonyProg2000 Version 2.07c
Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroler digunakan software PonyProg2000 Version 2.07c yang dapat di download dari internet. Tampilannya seperti gambar 2.8. berikut ini.
Gambar 2.9. Tampilan PonyProg2000 Version 2.07c
Cara menggunakannya terlebih dahulu mengkalibrasi dengan meng-klik setup>calibration dan ikuti petunjuk selanjutnya. Kemudian pemilihan InterFece dengan meng-klik menu setup>interface setup maka akan tampak kotak dialog berikut:
Universitas Sumatera Utara
39
Gambar 2.10. Setting Interface Downloader
Setting seperti gambar 2.9. Lalu Klik tombol OK. Kemudian pemilihan Mikrokontroler seperti gambar 2.10 .
Gambar 2.11. Setting Mikrokontroler yang sesuai
Untuk keperluan download program ke mikrokontroler adalah dengan mengklik File>open device file pilih format *.hex untuk mengambil file heksadesimal dari hasil kompilasi Code Vision AVR, kemudian klik Write All (Ctrl-W) untuk mengisikan hasil kompilasi tersebut ke mikrokontroller.
Universitas Sumatera Utara
40
2.6.
Software Desain PCB (Printed Circuit Board) Eagle 4.09r2.
Untuk mendesain PCB dapat digunakan software EAGLE 4.09 r yang dapat didownload di- internet secara gratis. Tampilan software EAGLE 4.09 r dapast dilihat pada gambar 2.8. dibawah ini:
Gambar 2.12. Software Desain PCB (Printed Circuit Board) Eagle 4.09 r2.
Cara menggunakan software ini terlebih dahulu yang dikerjakan adalah mendesain skematik rangkaian. setelah itu memindahkannya dalam bentuk board dan mendesain tata letak komponen sesuai jalur rangkaiannya agar rangkaian dapat berfungsi sesuai dengan skematiknya. Setelah selesai di desain layout PCBnya, barulah siap di print dan di transfer ke PCB. Pada proses pentransferan layout PCB ke PCB dapat digunkan kertas Transfer Paper.
2.7.
Motor Stepper (Motor Langkah)
Motor langkah merupakan suatu jenis motor yang dapat digunakan untuk memindahkan sebuah benda (beban) dengan jarak perpindahan yang kecil. Berbeda halnya dengan motor-motor lain, yang bergerak dengan putaran yang kontinyu/mulus, motor langkah bergerak dengan putaran yang kaku. motor langkah bergerak dari
Universitas Sumatera Utara
41
posisi berikutnya seperti gerak melangkah (step). Karena itulah motor ini dinamakan motor langkah (stepper motor). Motor langkah banyak sekali digunakan pada aplikasi-aplikasi elektronik seperti printer, floppy drive, cdrom drive dan banyak lagi alat-alat yang lain. Berikut ini gambar 2.6 menunjukkan salah satu contoh dari motor langkah.
Gambar 2.13. Motor Stepper.
Arus yang mengalir pada setiapl lilitan adalah hanya sesaat sehingga bentuk arusnya
berupa pulsa. Rotor berputar karena pulsa yang bergantian. Kecepatan
perputaran rotor ditentukan oleh kecepatan perpindahan pulsa, dan sudut putaran sebanding dengan banyaknya pulsa yang diberikan. Motor langkah yang umum digunakan mempunyai jangkauan langkah berputar antara 0,9 derajat sampai 30 derajat. Motor-motor tersebut adalah motor langkah dua atau empat fase. Secara teoritis, sebuah motor langkah berukuran kecil dapat digerakkan langsung oleh mikroprosesor atau mikrokontroler. Dalam kenyataannya, arus dan tegangan yang dapat dikeluarkan oleh alat pemroses tadi masih terlalu kecil. Sebagai perbandingan, gerbang-gerbang logika tipe TTL hanya mampu mengeluarkan arus dalam orde miliampere dan tegangan antara 2 sampai 5 V. Sementara itu untuk menggerakkan motor langkah dibutuhkan arus yang cukup besar (dalam orde ampere) dengan tegangan berkisar 5-24 V.
Universitas Sumatera Utara
42
Sifat dari stepping motor dapat disingkat sebagai berikut: 1. Rotor dapat diputar dengan sudut kecil. Rotor dapat diputar dengan satuan 0,9 derajat atau 1,8 derajat. 2. Keadaan diam adalah sifat yang paling penting. Penggunaan motor biasa adalah untuk memutar secara kontiniu, maka rotor tidak memiliki keadaan diam. Tetapi pada stepping motor, arus dapat dilewatkan kesatu lilitan saja dan akan mengakibatkan motor memilki daya penahan (momen penahan) pada keadaan diam. 3. kecepatan putaran rotor tergantung pada kecepatan perubahan pulsa. Sehingga mudah mengatur kecepatan putaran tetapi motor tidak cocok untuk putaran tinggi, hanya terbatas pada beberapa ratus putaran permenit. 4. Sudut putaran rotor tegantung pada pulsa input sehingga pengendalian jumlah putaran dan sudut putaran rotor pada motor biasa tanpa sistem feedback yang rumit.
Stepping motor dapat dibagi menjadi tiga jenis: 1. Jenis variable Reluctance (VR-type) Rotor dari motor dibuat dari bahan magnit. Yaitu berlapis-lapis lembaran baja. Posisi rotor tegangtung dariu gaya tarik dari kutub magnit. 2. Rotor dari motor dibuat dari magnit permanen. Kutub U (utara) dan S (selatan) magnit dipasang bergantian disekeliling rotor. Posisi rotor tergantung pada gaya tarik antara kutub U dan S dan kutub eksitansi stator.
Universitas Sumatera Utara
43
3. Jenis Hybrid (HB-type) Rotor dari motor dibuat dari kombinasi antara magnit permanen dan berlapislapis lembaran baja. Hal yang sama dari ketiga stepping motor itu adalah lilitannya terletak di luar stator tidak di dalam motor.
2.8.
Modul LCD (Liquid Crystal Display) M1632
M1632 merupakan modul LCD matrix dengan konfigurasi 16 karakter dan 2 baris dengan setiap karakternya dibentuk oleh 8 baris pixel dan kolom pixel (1 baris pixel terakhir adalah kursor). HD44780 ini sudah tersedia dalam Modul M1632 yang dikeluarkan oleh Hitachi, Hyundai dan modul-modul M1632 lainnya.
HD44780 sebetulnya merupakan mikrokontroler yang dirancang khusus untuk mengendalikan LCD dan mempunyai kemampuan untuk mengatur proses scanning pada layar LCD yang terbentuk oleh 16 COM dan 40 SEG sehingga mikrokontroler /perangkat yang mengakses modul LCD ini tidak perlu lagi mengatur proses scanning pada layar LCD. Mikrokontroler atau perangkat tersebut hanya mengirimkan data-data yang merupakan karakter yang akan ditampilkan pada LCD atau perintah yang mengatur proses tampilan pada LCD saja.
2.8.1. Kaki – kaki Modul M1632
Untuk keperluan antarmuka suatu komponen elektronik dengan mikrokontroler, perlu diketahui fungsi dari setiap kaki yang ada pada komponen tersebut.
Universitas Sumatera Utara
44
a. Kaki 1 (GND) Kaki ini berhubungan dengan tegangan 0 volt (ground) dan modul LCD (khusus untuk modul M1632 keluaran hitachi, kaki ini adalah GND) b. Kaki 2 (VCC) Kaki ini berhubungan dengan tegangan +5 Volt yang merupakan tegangan untuk sumber daya dari HD44780 (khusus untuk modul M1632 keluaran hitachi, kaki ini adalah VCC) c. Kaki 3 (VEE/VLCD) Tegangan pengatur kontras LCD, kaki ini terhubung pada V5. Kontras mencapai nilai maksimum pada saat kondisi kaki ini pada tegangan 0 volt. d. Kaki 4 (RS) e. Register Select, kaki pemilih register yang akan diakses. Untuk akses ke register data, logika dari kaki ini adalah 1 dan untuk akses ke register perintah, logika dari kaki ini adalah 0. f. Kaki 5 (R/W) Logika 1 pada kaki ini menunjukkan bahwa modul LCD sedang pada mode pembacaan dan logika 0 menunjukkan bahwa modul LCD sedang pada mode penulisan. Untuk aplikasi yang tidak memerlukan pembacaan data pada modul LCD, kaki ini dapat dihubungkan langsung ke ground. g. Kaki 6 (E) Enable Clock LCD, kaki ini mengaktifkan clock LCD. Logika 1 pada kaki ini diberikan pada saat penulisan atau pembacaan data.
Universitas Sumatera Utara
45
h. Kaki 7-14 (D0-D7) Data bus, kedelapan kaki modul LCD ini adalah bagian dimana aliran data sebanyak 4 bit atau 8 bit mengalir saat proses penulisan maupun pembacaan data. i. Kaki 15 (Anoda) Berfungsi untuk tegangan positif dari backlight modul LCD sekitar 4,5 volt (hanya terdapat untuk M1632 yang memiliki backlight). j. Kaki 16 (Katoda) Tegangna negatif backlight modul LCD sebesar 0 volt (hanya untuk M1632 yang memiliki backlight).
2.8.2. Akses ke Register
Seperti telah dijelaskan sebelumnya, HD44780 yang menjadi pengendali modul M1632 mempunyai dua buah register, yaitu register data dan register perintah. Berikut ini akan dijelaskan bagaimana proses terjadinya penulisan maupun pembacaan data dari kedua register ini. a. Penulisan Data ke Register Perintah Penulisan data ke register perintah digunakan untuk memberikan perintahperintah pada Modul M1632 sesuai dengan data-data yang dikirimkan ke register tersebut. Gambar dibawah ini menunjukkan proses penulisan data ke register perintah menggunakan mode 4 bit interface. Kondisi RS berlogika 0 menunjukkan akses data ke register perintah. R/W berlogika 0 menunjukkan proses penulisan data akan dilakukan. Nibble tinggi (bit 7 sampai bit 4) terlebih dahulu dikirimkan dengan diawali pulsa logika 1 pada E Clock,
Universitas Sumatera Utara
46
kemudian nibble rendah (bit 3 sampai bit 0) dikirimkan dengan diawalai pulsa logika 1 pada E Clock lagi.
Gambar 2.14. Diagram Pewaktuan Penulisan Data ke Regiater Perintah Mode 4 Bit.
Built In Routine
Kirim_Perintah EQU 433H ............................ Lcall Kirim_Perintah
b. Pembacaan Data dari Register Perintah Proses pembacaan data dari register perintah ini digunakan untuk membaca status sibuk M1632 dan addres counter saja. RS diatur pada logika 0 untuk akses ke register perintah dan R/W diatur pada logika 1 yang menunjukkan proses pembacaan data. Empat bit nibble tinggi dibaca dengan diawali pulsa logika 1 pada E Clock dan kemudian 4 bit nibble rendah dibaca dengan diawali pulsa logika 1 pada E clock.
Universitas Sumatera Utara
47
Gambar 2.15. Diagram Pewaktuan Pembacaan Data ke Registerm Perintah Mode 4 Bit. c. Penulisan Data ke Register Data Penulisan data ke register data digunakan dalam proses penulisan data karakter yang akan ditampilkan ke LCD (DDRAM) atau proses penulisan data pola karakter ke CGRAM.
Proses diawali dengan adanya logika 1 pada RS yang menunjukkan akses ke register data. Kondisi R/W diatur pada logika 0 yang menunjukkan proses penulisan data. Data 4 bit nibble tinggi (bit 7 hingga bit 4) dikirim dengan diawali dngan pulsa logika 1 pada sinyal E Clock dan kemudian diikuti 4 bit nibble rendah (bit 3 hingga bit 0) yang jugan diawali pulsa logika 1 pada sinyal E Clock.
Gambar 2.16. Diagram Pewaktuan Pembacaan Data ke Register Data Mode 4 Bit.
Universitas Sumatera Utara
48
d. Pembacaan Data ke Register Data Pembacaan data dari rd dilakukan untuk membaca kembali data yang tampil pada LCD. Proses dilakukan dengan mengatur RS pada logika 1 yang menunjukkan adanya akses ke rd . Kondisi R/W diatur pada logika tinggi yang menunjukkan adanya proses pembacaan data. Data 4 bit nibble (bit 7 hingga bit 4) dibaca dengan diawali adanya pulsa logika 1 pada E Clock dan dilanjutkan dengan data 4 bit nibble rendah (bit 3 hingga bit 0) yang juga diawali dengan pulsa logika 1 pada E Clock.
Gambar 2.17. Diagram Pewaktuan Pembacaan Data dari Register Data Mode 4 Bit.
2.8.3. Struktur Memori LCD Modul LCD M1632 memiliki beberapa jenis memori yang digunakan untuk menyimpan atau memproses data-data yang akan ditampilkan pada layar LCD. Setiap jenis memori mempunyai fungsi-fungsi tersendiri: a. DDRAM DDRAM merupakan memori tempat karakter yang ditampilkan berada. Contohnya, karakter “A” atau 41h yang ditulis pada alamat 00 akan tampil
Universitas Sumatera Utara
49
pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut ditulis di alamat 40h, karakter tersebut akan tampil pada baris kedua kolom pertama dari LCD. b. CGRAM CGRAM adalah memori untuk menggambarkan pola sebuah karakter dan bentuk karakter dapat diubah-ubah sesuai keinginan. Akan tetapi isi memori akan hilang saat power supply tidak aktif sehingga pola karaktr akan hilang. c. CGROM CGROM adalah memori untuk menggambarkan pola sebuah karakter dan pola tersebut sudah ditentukan secara permanen dari HD44780 sehingga pengguna tidak dapat mengubah lagi. Oleh karena ROM bersifat permanen, pola karakter tersebut tidak akan hilang walaupun power suplly tidak aktif.
Universitas Sumatera Utara