BAB II TEORI DASAR DAN PENDUKUNG
2.1 Mikrokontroller ATmega 8535
Mikrokontroller,
sebagai
suatu
terobosan
teknologi
mikrokontroller
dan
mikrokomputer, hadir memenuhi 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 lebih murah bila dibandingkan dengan mikroprosesor . Sebagai kebutuhan pasar, mikrokontroller hadir untuk memenuhi untuk selera industri dan para konsumen akan kebutuhan dan keinginan alat-alat bantu dan mainan yang lebih canggih serta dalam bidang pendidikan.
Tidak seperti sistem komputer, yang mampu menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka, dan lain sebagainya). Mikrokontroller 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 relative besar, sedangkan rutin-rutin antar muka perangkat keras di simpan dalam ROM yang kecil. Sedangkan pada mikrokontroller, perbandingan ROM dan RAM-nya yang besar artinya program control disimpan dan ROM yang ukurannya relativ lebih besar, sedangkan RAM digunakan sebagai tempat penyimpanan sederhana sementara, termasuk register –register yang digunakan pada mikrokontroller yang bersangkutan.
Mikrokontroller saat ini sudah dikenal dan digunkan secara luas pada dunia industri. Banyak sekali penelitian atau proyek mahasiswa yang menggunakan berbagai versi mikrokontroller yang dapat dibeli dengan harga yang relative murah. Hal ini dikarenakan produksi missal yang dilakukan oleh para produsen chip seperti Atmel, Maxim, dan Mikrochip. Mikrokontroller saaat ini merupakan chip utama pada hampir setiap peralatan elektronika canggih. Alat-alat canggih pun sekarang ini sangat bergantung pada kemampuan mikrokontroller tersebut. Mikrokontroller AVR memiliki arsitektur RISC 8 bit , dimana
semua intruksi dikemas dalam kode 16-bit (16-bit word)
dan sebagian besar instruksi
dieksekusi dalam 1 (satu) siklus clock, berbeda dengan instruksi MCS51 yang membutuhkan 12 siklus clock. Tentu saja itu terjadi karena kedua jenis mikkrokontroller tersebut memiliki arsitektur yang berbeda. AVR berteknologi RISC (Reduced Instruction Set Computing), sedangkan seri MCS51 berteknologi CISC (Complex Instruction Set Computing). Secara umum AVR dapat dikelompokkan menjadi 4 kelas yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga ATmega dan AT86RFxx. Pada dasarnya yang membedakan masingmasing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan mereka bisa dikatakan hampir sama.
Beragam jenis mikrokontroller seperti AVR jenis ATtiny, ATmega dan AT90 dibedakan dari segi jumlah pin dan memori, dapat kita lihat perbedaan jenis mikrokontroller seperti table di bawah ini.
Mikrokontroller
Memori
Tipe
Jumlah Pin
Flash
EEPROM
SRAM
Tiny AVR
8 – 32
1 – 2k
64 – 128
0 - 128
AT90Sxx
20 – 44
1 – 8k
128 – 512
0 – 1k
ATmega
32 – 64
8 – 128k
512 – 4k
512 – 4k
Tabel 2.1 jenis mikrokontroller
Pemrograman AVR dengan bahasa C lebih baik dari bahasa pemrograman lainnya. Karena bahasa pemrograman independen terhadap hardware C. Keunggulan lainnya penyusunan program besar dapat dilakukan dengan mudah dan program yang telah jadi dapat digunakan ke jenis AVR lainnya dengan hanya mengubah fungsi – fungsi port dan registernya.
Beberapa factor pertimbangan penting untuk memilih mikrokontroller jenis AVR antara lain: a. Harga mikrokontroller yang lebih murah disbanding mikroprosesor, b. Ukuran memori mikrokontroller yang cukup besar dan untuk menambah memorinya dapat digunakan memori eksternal,
c. Fitur ADC, Timer, PWM, USART, dan fasilitas lainnya yang memudahkan designer dalam merancang system, d. Kecepatan eksekusi program dimana instruksi di eksekusi dalam 1 clock sememtara mikrokontroller jenis MCS51 atau mengeksekusi instruksi dalam 12 clock, e. Adanya clock internal sehingga mikrokontroller dapat digunakan tanpa menggunakan crystal.
Saroftware pendukung yang sangat beragam dan penggunaanya yang jauh lebih mudah karena software menyediakan fitur yang memudahkan dalam memprogramnya seperti Code Vision AVR dan BASCOM AVR yang menyediakan fitur desain LCD pada BASCOM AVR dan fitur penghasil program pada Code Vision AVR.
Mikrokontroller ATmega8535 adalah mikrokontroller 8bit CMOS dengan menggunakan daya rendah dan menjalankan semua instruksi dalam satu siklus clock. Mikrokontroller ATmega8535 dikombinasikan dengan 16 buah register. Semua register terhubung langsung ke Aritmetical Logical Unit, membiarkan 2 register untuk diakses di dalam satu instruksi di eksekusi dalam satu clock.
Gambar2.1 arsitektur ATmega8535
Fitur-fitur yang dimiliki oleh mikrokontroller 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 pembanding. 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 deprogram 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.
Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu daya. Sesuai dengan keperluannya, dalam susunan MCS51 memori penyimpanan program ini dinamakan sebagai memori program.
Random Acces Memory (RAM) isinya kan sirna begitu IC kehilangan catu daya, dipakai untuk penyimpan data pada program bekerja. RAM yang dipakai untuk menyimpan data disebut memori data. ATmega8535 memiliki On-Chip In System Reprogrammable Flash Memory untuk menyimpan program. Untuk 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 di aktifkan. 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 deprogram 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.
2.1.1 Spesifikasi ATmega8535
a. High-performance, Low-power AVR ®8-bit Microcontroller b. Advanced RISC architecture -
130 Powerful Instructions – Most Single Clock Cycle Execution
-
31 x 8 General Purpose Working Registers
-
Fully Static Operation
-
Up to 16 MIPS Throughput at 16 MHz
-
On-Chip 2-cycle Multiplier
c. Nonvolatile Program and Data Memories -
8 K Bytes of In-System Self-Programmable Flash Endurance: 10,000 Write/Erase Cycles
-
Optional Boot Code Section with Independent Lock Bits In System Programming by On-chip Boot Program True Read-While-Write Operation
-
512 Bytes EEPROM Endurance: 100,000 Write/Erase Cycles
-
512 Bytes Internal SRAM
-
Programming Lock for Software Security
d. Peripheral Features -
Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes
-
One 16-bit
Timer/Counters with Separate Prescaler, Compare Mode and
Capture Mode -
Real Time Counter with Separate Oscilator
-
Four PWM Channels
-
8-channel, 10-bit ADC 8 single-ended Channels 7 Differen Channels for TQFP Package Only 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x for TQFP Package Only
-
Byte-oriented Two-wire Serial Interface
-
Programmable Serial USART
-
Maste/Slave SPI Serial Interface
-
Programmable Watchdog Timer with Separate On-chip Oscilator
-
On-chip Analog Comparator
e. Special Microcontroller Features -
Power-on Reset and Programmable Brown-out Detection
-
Internal Calibrated RC Oscilator
-
External and Internal Interrupt Soourcers
-
Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby
f. I/O and Packages -
32 Programmable I/O Lines
-
40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF
g. Operating Volatages -
2.7 – 5.5V for ATmega8535L
-
4.5 – 5.5 V for ATmega8535
2.1.2 Fitur ATMega 8535 Kapabilitas detail dari ATMega 8535 adalah sebagai berikut: 1. Sistem kirokontroller 8 bit berbasis RISC dengan kecepatan maksimal 16 MHz. 2. Kapabilitas memori flash 8 Kb, SRAM sebesar 512 byte dan EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 512 byte. 3. ADC internal dengan fidelitas 10 bit sebanyak 8 channel. 4. Portal komunikasi serial (USART) dengan kecepatan maksimal 2,5 Mbps. 5. Enam pilihan mode sleep menghemat penggunaan daya listrik.
2.1.3 Konfigurasi Pin ATMega 8535 Konfigurasi Pin ATMega 8535 bisa dilihat pada gambar di bawah ini. Dari gambar tersebut dapat dijelaskan secara fungsional konfigurasi pin ATMega 8535 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/0 dua arah dan pin masukan ADC. 4. Port
(PB0..PB7) merupakan pin I/0 dua arah dan pin fungsi khusus yaitu
Timer/Counter Komparator analog, dan SPI. 5. Port C (PC0..PC7) merupakan pin I/0 dua arah dan pin fungsi khusus yaitu TWI, komparator analog, dan Timer Oscilator. 6. Prot D (PD0..PD7) merupakan pin I/0
dua arah dan pin fungsi khusus yaitu
komparator analog, interupsi eksternal, dan komunikasi serial. 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 merupakan pin masukan tegangan referensi ADC
Gambar 2.2.Pin ATMega 8535
2.1.4 Alternatif Port A,Port B dan Port C
Alternatif Port A
Port A memiliki fungsi input output dan juga sebagai input analog yang akan dikonversi menjadi data-data digital (ADC), seperti yang ditunjukkan pada table di bawah ini . Jika salah satu port A dikonfigurasikan sebagai output ketika port A difungsikan sebagai ADC maka hasil pengkonversian analog ke digital akan menghasilkan data error. Untuk mengaktifkan fungsi ADC pada port A dengan code Vision AVR akan dibahas di bab selanjutnya tentang teknik pemrograman C pada ATmega8535 dengan menggunakan software yang telah disebutkan di atas.
Fungsi Port A dapat kita lihat pada table di bawah ini:
Port
Fungsi Alternatif
PA7
ADC7 (ADC input channel 7)
PA6
ADC6 (ADC input channel 6)
PA5
ADC5 (ADC input channel 5)
PA4
ADC4 (ADC input channel 4)
PA3
ADC3 (ADC input channel 3)
PA2
ADC2 (ADC input channel 2)
PA1
ADC1 (ADC input channel 1)
PA0
ADC0 (ADC input channel 0)
Tabel 2.2 Port A
Alternatif Port B
Fungsi Port B dapat dilihat di table di bawah ini:
PORT
Fungsi Alternatif
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)
PB3
AIN1 (Analog Comparator Negative Input) OCO (TIMER/COUNTER OUTPUT COMPARATOR MATCH OUTPUT)
PB2
AIN0 (Analog Comparator Positive Input) INT2 (External Interrupt 2 Input)
PB1
T1 (Timer/Counter Externar Counter Input)
PB0
T0T1 (Timer/Counter) External Counter Input XCX EXTERNAL CLOCK INPUT/OUTPUT)
Tabel 2.3 Port B
(USART
Alternatif Port C
Fungsi port C dapat dilihat pada table di bawah ini:
PORT
Fungsi Alternatif
PC7
TOSC2 (TIMER OSCILATOR PIN2)
PC6
TOSC1 (TIMER OSCILATOR PIN1)
PC5
TDI (JTAG TEST DATA IN)
PC4
TDO (JTAG TEST DATA OUT)
PC3
TMS (JTAG TEST MODE SELECT)
PC2
TCK (JTAG TEST CLOCK)
PC1
SDA (TWO WIRE SERIAL BUS DATA IN/OUT LINE)
PC0
SCL (TWO WIRE SERIAL BUS CLOCK LINE)
Tabel 2.4 Port Fungsi C
2.1.7 Alternatif Port D
Fungsi Port D dapat dilihat pada table di bawah ini:
Pin
Fungsi Alternatif 7
OC2 (TIMER COUNTER2 COMPARE MATCH OUTPUT)
6
ICP (TIMER/COUNTER1 INPUT COMPARE CAPTURE PIN)
5
OC1A (TIMER/COUNTER1 OUTPUT COMPARE A MATH OUT)
4
OC1B
(TIMER/COUNTER
OUTPUT
OUTPUT) 3
INT1 (EXTERNAL INTERRUPT 1 INPUT)
2
INT0 (EXTERNAL INTERRUPT 0 INPUT)
1
TXD (USART OUTPUT PIN)
0
RXD (USART INPUT PIN)
Tabel 2.5 Fungsi Port D
COMPARE
B
MATH
2.1.5 Konstruksi ATmega 8535
Mikrokontroller ATmega 8535 memiliki 3 jenis memori, yaitu memori program, memori data dan memori EEPROM. Ketiganya memiliki ruang tersendiri dan terpisah. a. Memori Program ATmega8535 memiliki kapasitas memori program sebesar 8Kbyte yang terpetakkan dari alamat 0000h-0FFFh dimana masing-masing alamat memiliki lebat data 16 bit. Memori program ini terbagi menjadi 2 bagian yitu bagian program boot dan bagian program aplikasi. b. Memori Data ATmega 8535 memiliki kapasitas memori data sebesar 608 byte yang terbagi menjadi 3 bagian yaitu register serbaguna , register I/O dan SRAM. Amega8535 memiliki 32 byte register serbaguna, 64 byte register I/O yang dapat diakses sebagai bagian dari memori RAM (menggunakan instruksi 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 ATmega8535 memiliki 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 EEEPROM Data, dan register EEPROM Control. Untuk mengakses memori EEPROM ini diperlakukan seperti mengakses data eksternal, sehingga waktu eksekusinya relative lebih lama dibandingkan dengan mengakses data dari SRAM.
Atmega 8535 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, ADCATmega 8535 memiliki konfigurasi perwaktuan, tegangan refenrensi, 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 da 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 dimiilki 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 mikrokontroller maupun dengan modul-modul eksternal termasuk PC yang memiliki fitur UART.
USART memungkinkan transmisi data baik secara Synchronous maupun asynchronous, sehingga dengan memiliki USART pasti kompatibel dengan UART. Pada
ATmega8535,
secara
umum
pengaturan
mode
syncrhonus
maupun
asyncrhronous adalah sama. Perbedaannya hanyalah terletak pada sumber clock saja.
Jika pada mode asynchronous masing-masing peripheral memiliki sumber clock sendiri, maka pada mode synchronous hanya ada satu sumber clock yang dig Nakan secara bersama-sama. Dengan demikian, secara hardware untuk mode asynchronous hanya membutuhkan 2 pin yaitu TXD dan RXD, sedangkan untuk mode synchronous harus 3 pin yaitu TXD, RXD dan XCK.
Adapun fungsi masing-masing dari port mikrokontroller Atmega8535 ini adalah sebagai berikut: 1. Port A (PA0-PA7) Port A merupakan pin I/O 8-bit dua arah yang mempunyai tahanan internal pullup. Port A berfungsi sebagai input analog pada A/D converter. 2. Port B (PB0-PB7) Port B merupakan pin I/O 8-bit dua arah dengan tahan internal pull-up. Pada port B Atmega 8535 memiliki pin fungsi khusus yaitu timer/counter, komparator analog dan SPI.
3. Port C (PC0-PC7) Port C merupakan pin I/O 8 bit dua arah dengan tahanan internal pull-up. Pada port C ATmega8535 memiliki pin khusus yaitu TWI, komparator analog, dan Timer Oscilator. 4. Port D Port D merupakan pin I/O 8 bit dua arah dengan tahanan internal pull-up. Pada port D ATmega8535 memiliki pin khusus yaitu
komparator analog, dan interupsi dan
komunikasi serial. 5. VCC Merupakan pin yang berfungsi sebagai pin masukkan catu daya. 6. GND Merupakan pin Ground 7. RESET Merupakan pin yang digunakan untuk m-reset mikrokontroller. 8. XTAL1 Merupakan pin masukan inverting Oscilator Amplifier dan masukan clock eksternal. 9. XTAL2 Merupakan keluaran dari inverting Oscilator Amplifier. 10. AVCC merupakan pin masukan tegangan untuk ADC. AVCC harus dihubungkan ke VCC, walaupun ADC tidak digunakan. Jika ADC digunakan, maka AVCC harus dihubungkan ke Vcc melalui (low pas lilter). Catatan: PC5, PC4 digunakan untuk catu tegangan Vcc digital. 11. AREF Merupakan pin masukan tegangan referensi analog untuk ADC.
Nama Pin VCC GND Port A (PA7..PA0) Port B (PB7..PB0)
Fungsi Catu daya Ground Port I/O 8-bit dua arah dengan resistor pull-up internal. Juga berfungsi sebagai masukan analog ke ADC (ADC0 s.d. ADC7) Port I/O 8-bit dua arah dengan resistor pull-up internal. Fungsi khusus masing-masing pin : Port Pin Fungsi lain PB0 T0 (Timer/Counter0 External Counter Input) PB1 T1 (Timer/Counter1 External Counter Input) PB2 AIN0 (Analog Comparator Positive Input)
Port C (PC7..PC0) Port D (PD7..PD0)
RESET XTAL1 XTAL2 AVCC AREF AGND
PB3 AIN1 (Analog Comparator Negative Input) PB4 SS (SPI Slave Select Input) PB5 MOSI (SPI Bus Master Output/Slave Input) PB6 MISO (SPI Bus Master Input/Slave Output) PB7 SCK (SPI Bus Serialock) Port I/O 8-bit dua arah dengan resistor pull-up internal. Dua pin yaitu PC6 dan PC7 berfungsi sebagai oscillator luar untukTimer/Counter2. Port I/O 8-bit dua arah dengan resistor pull-up internal. Fungsi khusus masing-masing pin : Port Pin Fungsi lain PD0 RXD (UART Input Line) PD1 TXD (UART Output Line) PD2 INT0 (External Interrupt 0 Input) PD3 INT1 (External Interrupt 1 Input) PD4 OC1B (Timer/Counter1 Output CompareB Match Output) PD5 OC1A (Timer/Counter1 Output CompareA Match Output) PD6 ICP (Timer/Counter1 Input Capture Pin) PD7 OC2 (Timer/Counter2 Output Compare Match Output) Masukan reset. Sebuah reset terjadi jika pin ini diberi logika rendah melebihi periode minimum yang diperlukan. Masukan ke inverting oscillator amplifier dan masukan ke rangkaian clock internal. Keluaran dari inverting oscillator amplifier. Catu daya untuk port A dan ADC. Referensi masukan analog untuk ADC. Ground analog. Tabel 2.6 Konfigurasi Pin Atmega8535
Arsitektur Mikrokontroller Atmega8535
Gambar 2.3 Arsitektur mikrokontroller Atmega8535
2.1.6 Peta Memori Atmega8535
Mikrokontroller AVR Atmega8535 memiliki dua jenis memori data yaitu memori data (SRAM) dan memori program (Memori Flash). Di samping itu juga dilengkapi memori EEPROM (Electrically Erasable Programmable Read Only Memory) untuk menyimpan data tambahan yang bersifat non volatile. Memori EEPROM ini mempunyai lokasi yang terpisah dengan system register alamat, register data dan register control yang dibuat khusus untuk EEPROM.
2.1.7 Memori Program
Mikrokontroller Atmega8535 memilki On-Chip In-System ReprogrammableFlash Memory untuk menyimpan program. Untuk alas an 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
pengguna.
Mikrokontroller AVR tidak dapat menjalankan program aplikasi ini sebelum menjalankan program Boot Loader. Besarnya memori Boot Flash Section dapat diprogram dari 128 word sampai 1024word tergantung pada konfigurasi bit di-register BOOTSZ. Jika Boot Loader diproteksi, maka program pada Application Flash Section sudah aman.
Gambar 2.4 Peta Memori AVR
2.1.8 Memori Data
Memori data dapat dibagi menjadi tiga yaitu: 1. Terdapat 32 register keperluan umum (general purpose register-GPR biasa disebut register file di dalam teknologi RISC) 2. Terdapat 64 register untuk keperluan input/output (I/O register) 3. Terdapat 512 byte SRAM internal. Selain itu, terdapat pula EEPROM 512 byte sebagai memori data yang dapat deprogram saat beroperasi. Pada gambar ditunjukkan pada peta memori data yang terdiri dari register file, I/O register dan memori SRAM pada mikrokontroller AVR Atmega8535.
Gambar2.5 Peta memori data mikrokontroller Atmega8535
2.1.9 Input/Output Port Mikrokontroller Atmega8535 mempunyai 32 port input/output yang terdiri dari 8 pin input/output pda port A, 8 pin input/output pada port B, 8 pin input/output pada port C dan 8 pin input/output pada port D. Dimana pin-pin ini dapat divariasikan menjadi masukan dan menjadi keluaran. Tabel 2.7 Konfigurasi Setting untuk Port I/O Port
DDR bit =1
DDR bit = 0
Port bit = 1
Output High
Input pull-up
Port bit = 0
Output low
Input Floating
Dari Tabel diatas Jika Ingin port berfungsi sebagai masukan (input) pull-up maka DDR bit 0 dan port bit 1, dan untuk input floating , DDR bit 0 dan port bit 0. Sedangkan untuk output high maka DDR bit 1 dan port bit 1 dan untuk output low maka DDR bit 1 dan port bit 0.
2.2 JENIS-JENIS BATERAI
Baterai adalah salah satu dari sumber energi dan sangat penting bagi penggunaan mobile Gadget. Produsen Gadget mengunakan berbagai macam jenis baterai yang berpengaruh terhadap harga, ukuran serta kemampuan gadget tersebut.
Hambatan terbesar pada teknologi gadget adalah batere. Ya, selama 50 tahun terakhir teknologi batere belum berubah banyak. Bayangkan kenikmatan dan juga penghematan andaikata batere yang mendayai iPhone 3G, notebook dan PDAphone kita mampu bekerja lebih dari satu hari setelah diisi penuh satu kali saja. Baterai adalah salah satu dari sumber energi dan sangat penting bagi penggunaan mobile Gadget. Produsen Gadget mengunakan berbagai macam jenis baterai yang berpengaruh terhadap harga, ukuran serta kemampuan gadget tersebut.
Untuk jenis yang paling banyak digunakan saat ini, adalah baterai type Lithium dan type AA. Untuk type AA biasanya digunakan baterai Alkaline. Berbeda dengan baterai AA biasa, jenis Alkaline mempunyai kapasitas lebih besar yang pada gadget digunakan untuk LCD dan Flash. Namun, penggunaan baterai Alkaline sebenarnya lebih disarankan untuk
diganti dengan jenis NiMH yang mempunyai kapasitas lebih besar lagi dibanding Alkaline dan mempunyai kemampuan untuk di isi ulang. Sedangkan jenis baterai Lithium lebih menguntungkan dari segi berat dan ukuran, karena gadget yang menggunakan baterai type Lihtium biasanya didesign lebih compact dan lebih ringan dibanding gadget dengan baterai type AA. Jika diperhatikan pada baterai Alkaline kemungkinan tidak terlihat berapa besar kapasitas yang tertulis pada baterai, sedangkan pada NiMH terlihat jelas berapa besar kapasitas yang dapat disimpan oleh baterai tersebut.
Ketika baterai memberikan power kepada peralatan elektronik yang memerlukan energi yang besar seperti gadget digital, peralatan komputer, portable music player sebuah baterai Alkaline hanya akan memberikan sebagian dari kapasitasnya. Sedangkan pada baterai NiMH atau NiCd, baterai tersebut memberikan lebih banyak kapasitasnya dan besarnya mendekati kapasitas maksimum pada peralatan elektronik yang rakus energi. Itu berarti pada gadget digital, sebuah NiMH dengan kapasitas 1800 mAh dapat memberikan lebih banyak foto dibanding sebuah baterai Alkaline yang mempunyai kapasitas 2800 mAh.
Pada dasarnya semua batere bekerja dalam cara yang sama. Zat kimia yang ada di dalam batere menghasilkan elektron-elektron, yang berkumpul pada ujung negatif batere, dan mengubah energi kimia menjadi energi listrik. Ketika kita memasang batere di dalam gadget, electron-elektron mengalir ke seluruh gadget dan kembali ke ujung positip batere, membuat sebuah siklus dan menyebabkan proses kimiawi yang menghasilkan energi, yang membuat gadget Anda bekerja. Kata mAh merupakan satuan kapasitas baterai isi ulang. 500 mAh berarti bila baterai dibebani 125 mA (mili amper), ia dapat bertahan 4 jam. Atau 1 jam pada 500mA. Makin besar nilai mAh sebuah baterai berarti ia akan dapat dipakai lebih lama sebelum perlu di-charge ulang. Angka 1.2 V menyatakan besarnya voltase baterai. Pastikan voltase baterai ini sama dengan spesifikasi Gadget Anda Untuk battery baru, disarankan untuk melakukan proses charging (isi) dan discharging (membuang) setrum 2 sampai 5 kali hingga battery mencapai kapasitas maksimalnya.
Cara melakukan discharging dengan menggunakan baterai tersebut sampai tidak bisa digunakan lagi di gadget. Pada alat charger tertentu, disediakan fasilitas untuk discharge baterai. Biasanya fasilitas yang disediakan pada alat ini cukup aman, karena proses pengosongan hanya terjadi sampai batas yang aman.
Adapun jenis-jenis baterai yang sering digunakan yaitu:
2.2.1 Alkaline adalah jenis baterai yang paling umum ditemukan. Baterai yang harganya murah dan dayanya habis dalam sekali pakai ini bisa mendayai Game Boy Anda selama 20 menit (atau 2,5 menit pada Sega Nomad). Kerapatan energi dan jumlah daya yang dikandung baterai alkaline tidak buruk, tetapi pada gadget yang haus energi seperti MP3 player atau kamera digital, daya baterai ini cepat terkuras habis. Namun untuk gadget yang tidak tinggi tuntutan dayanya, baterai Alkaline bisa bertahan lama, bahkan bisa bertahun-tahun. Sayangnya baterai ini tidak bisa diisi ulang.
2.2.2 Batere Lead-acid Batere Lead-aci terdiri dari dua tipe besar: batere pemicu seperti yang ada di mobil Anda dan dirancang untuk lonjakan daya singkat; dan batere bersiklus panjang yang memberikan daya yang lebih rendah, lebih ajek dan digunakan di kapal, mobil golf, dan sebagai daya cadangan di berbagai gadget.
2.2.3 Silver oxide (baterai silver-zinc) Silver oxide (baterai silver-zinc) adalah jenis baterai yang menyediakan cukup banyak daya dan tahan lama. Baterai tipe ini dipakai dalam jam tangan dan juga mainan anak-anak dan kapal selam, atau perangkat lain yang mementingkan kinerja, bukan harga. Kelemahannya, perak yang digunakannya mahal jika ukuran baterai lebih besar daripada kancing yang dipakai pada gadget. Selain itu, di akhir masa pakainya baterai ini seringkali bocor dan lelehan merkuri-nya berbahaya.
2.2.4
Batere Alkaline Isi Ulang (rechargeable). Baterai ini Mirip baterrai Alkaline biasa, tetapi dibuat agar bisa diisi ulang. Artinya membuat elektron-elektron dipompa masuk kembali ke dalam baterai. Tidak sepeti baterai Nickel metal hydride(NiMh), baterai ini tidak habis dayanya bila tidak dipakai, tetapi kapasitasnya berkurang setiap kali diisi ulang dan tidak setinggi baterai Alkaline biasa.
2.2.5
Nickel Cadmium (NiCad). Baterai ini merupakan jenis tertua, paling tahan banting, namun berat dan volumenya paling besar. Baterai jenis ini sudah tidak lagi banyak digunakan pada gadget karena dianggap tidak praktis. Baterai NiCad sangat rentan efek memori. Maksudnya, baterai hanya mengisi ke tingkat dimana baterai terakhir di-diisi ulang, akibat proses akumulasi gas yang terperangkap dalam plat sel baterai. Jika baterai diisi ulang hingga 30 persen maka baterai hanya akan mengisi energi yang terpakai tadi (30 persen) yang dilanjutkan dengan penyusutan volume "gas" yang terperangkap. Cara terbaik untuk menghilangkan efek memori dan membuang sisa gas terperangkap adalah dengan melakukan "burping", atau mengkondisikannya. Maksudnya, menghabiskan seluruh isi baterai pada gadget hingga benar-benar mati dan melakukan isi ulang kembali. Selain itu kendati tidak dipakai, baterai akan kehabisan seluruh dayanya setelah sekitar 90 hari.
2.2.6
Nickel Metal Hydride (NiMH). Baterai ini menggantikan kadmium dalam NiCad dengan campuran yang membuatnya mampu menahan lebih banyak energi (40%) pada ruang yang sama dibandingkan NiCad. NiMH merupakan pengembangan dari NiCd, dibanding NiCd dengan volume sama, kapasitasnya jauh lebih besar. Namun, seperti halnya NiCd, NiMH juga rawan terhadap memory effect meski tidak sebesar NiCd. Beberapa produsen baterai bahkan menyatakan NiMH produknya bebas memory effect. Seperti Sanyo eneloop, daya yang ada perlahan-lahan akan habis walaupun baterai tidak dipakai. Fenomena ini muncul saat baterai yang belum habis dipakai sudah diisi ulang. Bila dilakukan berkali-kali baterai dapat kehilangan kapasitasnya dan hanya mampu menampung sedikit daya saja sebelum dengan cepat habis. Memory effect dapat dihilangkan dengan mengosongkan baterai sampai habis sebelum mengisi ulang. Mengosongkan dengan gadget adalah cara terbaik, karena ambang batas aman pasti tidak kelebihan. Beberapa produsen baterai NiMH menyatakan bahwa baterainya bisa di isi ulang lebih dari 500 kali, namun bila baterai NiMH telah mencapai 400 kali siklus isi ulang, perlu dipersiapkan untuk penggantian baterai tersebut, karena walaupun masih bisa digunakan, biasanya kapasitasnya sudah menurun dan berarti masa pakai sebelum diisi ulang sudah berkurang.
2.2.7 Lithium ion (Li-ion) Lithium ion (Li-ion) adalah jenis baterai yang menjadi baterai standar pada gadget masa kini. Dibandingkan baterai dengan bahan nikel, Li-Ion lebih efisien energi dan tidak memiliki efek memori, tetapi juga lebih mahal harganya. Namun baterai tipe ini tidak boleh dibuang sembarangan karena bisa meledak (walaupun hanya terjadi beberapa kali per satu juta baterai). Dibandingkan NiMH, siklus isi ulang batere Liion lebih pendek setengahnya ( 1000 vs. 500 kali). Ada kelemahan lain. Jika daya baterai benar-benar habis dan voltase-nya turun di bawah ambang tertentu, kapasitas energi baterai Li-ion akan menciut secara permanen. Karena itulah baterai dirancang untuk mati jika dipasang setelah waktu tertentu. Biasanya, jika Anda punya gadget dengan baterai bertipe isi ulang, tipe Li-Ion-lah yang dipakai. Jika tidak, mungkin baterainya berjenis Li-Poly.
2.2.8 Lithium Polymer (Li-Po) Lithium Polymer (Li-Po) merupakan baterai yang berasal dari lithium ion tetapi menggunakan elektrolit berbasis polimer gel. Karena itu namanya menjadi lithium ion poly. Berikut beberapa keuntungan dari baterai Lithium Polymer yaitu: a. Bentuk dapat disesuaikan dengan perangkat, lebih ringan dan dapat dibentuk setipis mungkin sesuai dengan perangkat yang diinginkan besar ataupun kecil. b. Lebih aman dan lebih stabil dari jenis baterai lainnya, karena baterai lithium polymer tidak mudah terbakar di dalam baterai, meiliki sedikit resiko ledakan bahkan ketika tertusuk atau terjatuh. c. Bataerai lithium polymer sangat tahan terhadap perubahan suhu, secara dramatis meningkatkan siklus hidup dan kemampuan untuk menahan muatan lebih lama daripada baterai lainnya. d. Baterai lithium polymer lebih ramah lingkungan karena tidak mengandung mercury apapun, timbal asam atau pelarut yang merugikan lingkungan. Oleh karena itu hampir tidak ada resiko tumpahan atau pelepasan asap beracun ke atmosfer. e. Baterai NiMH atai NiCad memiliki tegangan sebesar 1,2 Volt sedangkan baterai lithium polymer memiliki tegangan sebesar 3,7 Volt
2.3 Liquid Crystal Display (LCD)
LCD merupakan suatu modul tampilan yang dipergunakan untuk menampilkan informasi kegiatan dalam agenda elektronik. LCD ini merupakan alat berupa kristal cair yang akan beremulasi apabila dikenakan tegangan kepadanya. Tampilan LCD ini berupa dot matik 5x7, sehingga jenis huruf yang mempu ditampilkan akan lebih banyak dan lebih baik resolusinya dibandingkan seven segment.
Dalam perancangan ini akan digunakan LCD tipe M1632, karena LCD ini mempunyai keunggulan antara lain adanya panel pengatur kekontrasan cahaya tampilan LCD, tampilan terdiri dari 2 baris yang masing-masing terdiri dari 16 karakter mempunyai character generator ROM untuk 192 tipe karakter, selain itu LCD ini membutuhkan konsumsi daya yang rendah.
Gambar 2.6 Modul LCD Karakter 2x16
Kemampuan dari LCD untuk menampilkan tidak hanya angka-angka, tetapi juga huruf-huruf , kata-katadan semua symbol, lebih bagus dan serbaguna daripada penampilpenampil menggunakan 7-segment LED (Ligh Emiting Diode) yang sudah umum . Modul LCD mempunyai basic interface yang cukup baik, yang mana sesuai dengan minimum sytem 8031. Sesuai juga dengan keluarga mikrokontroller yang lain. Bentuk dan ukuran modul-modul berbasis karakter banyak ragamnya, salah satu versi bentuk dan ukuran yang tersedia dan dipergunakan pada peralatan ini adalah 16x2 karakter (panjang 16, baris 2, karakter 32) dan 16 pin.
M1632 adalah merupakan modul LCD dengan tampilan 16x2 baris dengankonsumsi daya yang rendah. Modul ini dilengkapi dengan mikrokontroller yang didisain khusus untuk mengendalikan LCD. Mikrokontroller HD44780 buatan Hitachi yang berfungsi
sebagai pengendali LCD ini mempunyai CGROM (Character Generator Read Only Memory), CGRAM (Character Generator Rean Acces Memory) dan DDRAM (Display Data Random Access Memory). DDRAM DDRAM adalah merupakan memori tempat karakter yang ditampilkan berada. Contoh, untuk karakter „A‟ atau 41H yang ditulis pada alamat 00, maka karakter tersebut akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut ditulis di alamat 40, maka karakter tersebut akan tampil pada baris kedua kolo pertama dari LCD.
Gambar 2.7 DDRAM M1632 (diambil dari data sheet HD44780)
CGRAM CGRAM adalah merupakan memori untuk menggambarkan pola sebuah karakter dimana bentuk dari karakter dapat diubah-ubah sesuai keinginan. Namun memori ini akan hilang saat power supply tidak aktif, sehingga pola karakter akan hilang.
CGROM CGROM adalah merupakan memori untuk menggambarkan pola sebuah karakter dimana pola tersebut sudah ditentukan secara permanen dari HD44780 sehingga pengguna tidak dapat mengubah lagi. Namun karena ROM bersifat permanen, maka pola karakter tersebut tidak akan hilang walaupun power supply tidak aktif. Pada gambar, tampak terlihat pola-pola karakter yang tersimpan dalam lokasi-lokasi tertentu dalam CGROM. Pada saat HD44780 akan menampilkan data 41H yang tersimpan pada DDRAM, maka HD44780 akan mengambil data di alamat 41H (0100 0001) yang ada pada CGROM yaitu pola karakter A.
Tabel 2.8 Memori CGROM
Pin out No 1 VCC 2 GND 3 VEE 4 RS
Nama Pin
5 6
R/W E
7 8 9 10 11 12 13 14 15 16
D0 D1 D2 D3 D4 D5 D6 D7 Anoda (Kabel coklat untuk LCD) Katoda (Kabel merah untuk LCD)
Deskripsi +5V 0V Tegangan kontras LCD Register Select0=Register perintah, 1=register 1 1 = Read, 0=Write Enable Clock LCD, Logika 1 setiap kali pengiriman pembacaan data Data Bus 0 Data Bus 1 Data Bus 2 Data Bus 3 Data Bus 4 Data Bus 5 Data Bus 6 Data Bus 7 Tegangan Positif backlight Tegangan negative backlight
Tabel 2.9Perintah-perintah pada Memori CGROM
Register HD44780, mempunyai dua buah register yang aksesnya diatur dengan menggunakan kaki RS. Pada saat RS berlogika 0, maka register yang diakses adalah Register Perintah dan pada saat RS berlogika 1, maka register yang diakses adalah Register Data.
Register Perintah Register ini adalah register dimana perintah-perintah dari mikrokontroller ke HD44780 pada saat proses penulisan data atau tempat status dari HD44780 dapat dibaca pada saat pembacaan data.
Penulisan Data ke Register Perintah Penulisan Data ke Register Perintah dilakukan dengan tujuan mengatur tampilan LCD, inisialisasi dan mengatur Address Counter maupun Address Data.
Tabel 2.10 Pin dan fungsi pada LCD PIN
Nama
Fungsi
1
VSS
Ground voltage
2
VCC
+5V
3
VEE
Contrast voltage Register Select
RS 4
0 = Instruction Register 1 = Data Register 0 = write mode
5
R/W 1 = read mode Enable
6
E
0 = start to latch data to LCD character 1= disable
7
DB0
LSB
8
DB1
Data bit 1
9
DB2
Data bit 2
10
DB3
Data bit 3
11
DB4
Data bit 4
12
DB5
Data bit 5
13
DB6
Data bit 6
14
DB7
Data bit 7,MSB
15
BPL
Back Plane Light
16
GND
Ground voltage
2.4 PERANGKAT LUNAK 2.4.1 BAHASA PEMROGRAMAN Pada perancangan program pada alat, program yang digunakan adalah pemrograman bahasa C. Untuk dapat memahami bagaimana suatu program di tulis, maka struktur dari program harus di mengerti terlebih dahulu, atau sebagai pedoman penulis program (programmer) bagaimana seharusnya program tersebut ditulis. Struktur dari program C dapat di lihat sebagai kumpulan dari sebuah atau lebih fungsi-fungsi. Fungsi pertama yang harus ada di program C yang sudah ditentukan namanya, yaitu fungsi main(). Artinya program C minimal memiliki satu fungsi (fungsi main()). Fungsi-fungsi lain selain fungsi utama bisa dituliska setelah atau sebelum fungsi utama dengan deskripsi protype fungsi pada bagian awal program. Bisa juga dituliskan pada file lain yang apabila kita ingn memakai atau memanggil fungsi dalam file lain tersebut., kita harus menuliskan header filenya, dengan preprocessor directive #include. File ini disebut file pustaka (library file). Berikut contoh beberapa pemrograman bahasa C yaitu: #include <mega8535.h> // Alphanumeric LCD Module functions #asm .equ_lcd_port=0x18 ; PORTB #endasem #include
// standard input/output functions #include <stdio.h> #include <delay.h> #define ADC_VREFF_TYPE 0xC0 //Read the AD Conversion result unsigned int read_adc (unsigned char adc_input) ADMUX=adc_input (ADC_VREF_TYPE & 0xff);
// delay needed for the stabilization of the ADC input voltange Delay _us (10); //start the AD conversion ADCSRA =0x40; // Wait for the AD conversion to complete While ((ADSCRA & 0x10) ==0); ADCSRA=0x10; Return ADCW: