BAB II LANDASAN TEORI
2.1
Sensor Sensor adalah alat untuk mendeteksi/mengukur sesuatu, yang digunakan
untuk mengubah variasi mekanis, gelombang suara, magnetis, panas, sinar dan kimia menjadi tegangan dan arus listrik. Dalam lingkungan sistem pengendali, sensor memberikan kesamaan yang menyerupai mata, pendengaran, hidung, lidah yang kemudian akan diolah oleh kontroler sebagai otaknya. Sensor dalam teknik pengukuran dan pengaturan secara elektronik berfungsi mengubah besaran fisik (misalnya : temperatur, gaya, kecepatan putaran) menjadi besaran listrik yang proposional.
2.1.1
Sensor cahaya Sensor cahaya adalah komponen elektronika yang cara kerjanya
merubah besaran cahaya menjadi besaran listrik. Komponen-komponen yang termasuk dalam sensor cahaya yaitu : 1. LDR ( Light Dependent Resistor ). LDR adalah sebuah resistor dimana nilai resistansinya akan berubah jika dikenai cahaya. 2. Photodioda. Photodioda adalah sebuah dioda yang apabila dikenai cahaya akan memancarkan elektron sehingga akan mengalirkan arus listrik.
6
7
3. Phototransistor. Phototransistor adalah sebuah transistor yang apabila dikenai cahaya akan mengalirkan elektron sehingga akan terjadi penguatan arus seperti pada sebuah transistor. 4. Optocoupler. Optocoupler merupakan sebuah peralatan yang tersusun atas dua buah komponen dasar elektronik dalam satu paket yaitu berupa LED dengan jenis infrared dan phototransistor.
2.1.2
Sensor suara Sensor suara adalah komponen elektronika yang cara kerjanya
dengan merubah besaran suara menjadi besaran listrik. Salah satu komponen yang termasuk dalam sensor suara adalah mikrophone. Mikrophone merupakan komponen elektronika dimana cara kerjanya yaitu membran yang digetarkan oleh gelombang suara akan menghasilkan sinyal listrik.
2.1.3
Sensor suhu Thermistor ( Thermally Sensitive Resistor ) atau sensor suhu adalah
komponen elektronika yang berfungsi mendeteksi besaran fisis berupa suhu yang kemudian dikonversikan ke besaran listrik berupa tegangan (volt). Prinsip kerjanya adalah menggunakan perbandingan temperatur
8
yang bergantung dengan resistansinya. Contoh komponen yang bekerja dengan menggunakan prinsip kerja sensor ini antara lain : 1. NTC
(Negative
Temperature
Coefficient)
adalah
komponen
elektronika dimana nilai resistansinya akan menurun jika suhu bertambah. 2. PTC (Positive Temperature Coefficient) adalah komponen elektronika dimana nilai resistansinya bertambah jika suhu bertambah
2.1.4
Sensor Ultrasonik Sensor
ultrasonik
merupakan
sensor
yang
menghasilkan
gelombang suara dengan frekuensi tinggi, sensor ultrasonik terdiri dari rangkaian pemancar ultrasonik yang disebut dengan transmitter dan rangkaian penerima ultrasonik yang disebut receiver. Sinyal ultrasonik yang dibangkitkan akan dipancarkan dari transmitter ultrasonik, ketika sinyal mengenai benda penghalang maka sinyal ini dipantulkan dan diterima oleh receiver dikirimkan ke rangkaian mikrokontroler untuk selanjutnya diolah untuk mendapatkan output. Teknologi ini biasanya menggunakan transduser (alat yang mengubah suatu bentuk energi kedalam bentuk energi yang lain) yang menghasilkan gelombang suara dalam kisaran ultrasonik (diatas 20 kHz), dengan mengubah energi listrik menjadi suara, kemudian setelah menerima pantulan sinyal dan mengubah gelombang suara menjadi energi listrik yang dapat diukur dan ditampilkan.
9
Rangkaian penyusun sensor ultrasonik ini terdiri dari transmitter dan receiver. Selain itu, gelombang ultrasonic dibangkitkan oleh sebuah kristal tipis bersifat piezoelektrik.1 Mengenai bagian-bagian dari sensor ultrasonic akan dijelaskan sebagai berikut : 1. Piezoelektrik Kata piezoelektik berasal dari bahasa latin, piezin yang berarti diperas atau ditekan dan piezo yang bermakna didorong. Bahan piezoelektik ditemukan pertama kali pada tahun 1880an oleh Jacques dan Pierre Curie. Kata piezo berarti tekanan, sehingga efek piezoelektrik terjadi jika medan listrik terbentuk ketika material dikenai tekanan mekanik. Mereka mengkombinasikan pengetahuan mereka akan piroelektrisitas (kemampuan bahan-bahan tertentu untuk menghasilkan sebuah potensial listrik saat bahanbahan itu dipanaskan atau didinginkan) dengan pemahaman akan struktur dan perilaku sebuah
kristal.
Keduanya
kemudian
mendemonstrasikan
efek
piezoelektik pertama dengan menggunakan kristal turmalin, kuarsa, ratna cempaka, dan garam rossel. Dari uji coba tersebut diketahui bahwa kristal kuarsa dan garam rossel memperlihatkan kemampuan piezoelektisitas paling besar saat itu. Dari penjelasan diatas dapat disimpulkan
bahwa
piezoelektrik
merupakan
material
yang
memproduksi medan listrik ketika dikenai regangan atau tekanan mekanis. Elemen piezoelektrik secara langsung mengubah energi
1
http://nubielab.com/elektronika/analog/sensor-ultrasonik
10
listrik menjadi energi mekanik. Tegangan input yang digunakan menyebabkan bagian keramik meregang dan memancarkan gelombang ultrasonik. Frekuensi yang ditimbulkan tergantung pada osilatornya yang disesuaikan frekuensi kerja dari masing-masing transduser. Karena kelebihannya inilah maka transduser piezoelektrik lebih sesuai digunakan untuk sensor ultrasonik. 2. Pemancar ultrasonik (transmitter) Transmitter adalah sebuah alat yang berfungsi sebagai pemancar gelombang ultrasonik yang dibangkitkan dari sebuah osilator
(suatu
rangkaian
yang
menghasilkan
keluaran
yang
amplitudonya berubah-ubah secara periodik dengan waktu). Untuk menghasilkan frekuensi, harus di buat sebuah rangkaian osilator dan keluaran dari osilator dilanjutkan menuju penguat sinyal. Besarnya frekuensi ditentukan oleh komponen kristal tergantung dari disain osilator yang digunakan. Penguat sinyal akan memberikan sebuah sinyal listrik yang ditujukan ke piezoelektrik dan terjadi reaksi mekanik sehingga bergetar dan memancarkan gelombang yang sesuai dengan besar frekuensi pada osilator. 3. Penerima ultrasonik (receiver) Receiver terdiri dari transduser ultrasonik menggunakan bahan piezoelektrik, yang berfungsi sebagai penerima sinyal pantulan yang berasal dari transmitter yang dikenakan pada permukaan suatu benda. Oleh karena bahan piezoelektrik memiliki reaksi yang reversible,
11
elemen keramik akan membangkitkan tegangan listrik pada saat sinyal datang dengan frekuensi yang resonan dan akan menggetarkan bahan piezoelektrik tersebut. Salah satu contoh dari sensor ultrasonik ini adalah DT-SENSE Ultrasonic and Infrared Ranger merupakan modul pengukur jarak nonkontak yang sangat mudah dihubungkan dengan berbagai sistem berbasis mikrokontroler. Sebuah modul DT-SENSE Ultrasonic and Infrared Ranger terdiri dari sebuah Ultrasonic Ranger dan dapat dihubungkan dengan 2 buah sensor Infrared Ranger (GP2D12). Ultrasonic Ranger berkerja dengan cara memancarkan sinyal ultrasonic (yang memiliki frekuensi jauh di atas jangkauan pendengaran manusia) dan menghasilkan pulsa atau data keluaran yang menyatakan jarak yang ditempuh oleh sinyal tersebut sebelum menyentuh sebuah obyek dan memantul kembali.2 Spesifikasi DT-SENSE Ultrasonic and Infrared Ranger sebagai berikut: Terdiri dari sebuah Ultrasonic Ranger dan dapat dihubungkan dengan 2 buah sensor Infrared Ranger GP2D12 (opsional). Single supply 5 VDC. Siklus pengukuran yang cepat. Pembacaan dapat dilakukan tiap 25 ms (40 Hz rate). Jangkauan: 2 cm hingga 3 m (Obyek 0 – 2 cm diukur berjarak 2 cm) Tidak ada dead zone (tidak ada blank spot antara 2 cm hingga 3 m) 2
http://www.innovativeelectronics.com/innovative_electronics/
12
Tidak perlu delay sebelum pengukuran berikutnya. Output langsung berupa jarak (dalam milimeter) sehingga mengurangi beban mikrokontroler. Kompensasi kesalahan pengukuran akibat perubahan temperatur sekitar dan reflektifitas obyek dapat diatur.
Gambar 2.1 Sensor DT-SENSE UltraSonic (http://www.innovativeelectronics.com/innovative_electronics/pro_DTSense%20USIRR.htm)
2.2
Mikrokontroler Mikrokontroler adalah single chip komputer yang memiliki kemampuan
untuk diprogram dan digunakan untuk tugas-tugas yang berorientasi kontrol. Mikrokontroler datang dengan dua alasan utama, yang pertama adalah kebutuhan pasar (market need) dan yang kedua adalah perkembangan teknologi baru. Yang dimaksud dengan kebutuhan pasar adalah kebutuhan yang luas dari produkproduk elektronik akan perangkat pintar sebagai pengontrol dan pemroses data. Sedangkan yang dimaksud dengan perkembangan teknologi baru adalah perkembangan teknologi semikonduktor yang memungkinkan pembuatan chip
13
dengan kemampuan komputasi yang sangat cepat, bentuk yang semakin mungil, dan harga yang semakin murah.3
2.2.1
Perbedaan Mikrokontroler dengan Mikroprosesor Terdapat perbedaan yang signifikan antara mikrokontroler dan
mikroprosessor. Perbedaan yang utama antara keduanya dapat dilihat dari dua faktor utama yaitu arsitektur perangkat keras (hardware architecture) dan aplikasi masing-masing. A. Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip CPU, sedangkan mikrokontroler dalam IC-nya selain CPU juga terdapat device lain yang memungkinkan mikrokontroler berfungsi sebagai suatu single chip computer. Dalam sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM, serial interface dan paralel interface, timer, interrupt controller, konverter analog ke digital,
dan
lainnya
(tergantung
feature
yang
melengkapi
mikrokontroler tersebut). B. Sedangkan dari segi aplikasinya, mikroprosessor hanya berfungsi sebagai Central Processing Unit yang menjadi otak komputer, sedangkan mikrokontroler, dalam bentuknya yang mungil, pada umumnya ditujukan untuk melakukan tugas–tugas yang berorientasi kontrol pada rangkaian yang membutuhkan jumlah komponen minimum dan biaya rendah (low cost).
3
http://techno-v.co.cc/
14
2.2.2
Aplikasi Mikrokontroler Karena kemampuannya yang tinggi, bentuknya yang kecil,
konsumsi
dayanya
yang rendah
dan harga
yang murah maka
mikrokontroler begitu banyak digunakan di dunia. Mikrokontroler digunakan mulai dari mainan anakanak, perangkat elektronik rumah tangga, perangkat pendukung otomotif, peralatan industri, peralatan telekomunikasi, peralatan medis dan kedokteran, sampai dengan pengendali robot serta persenjataan militer. Terdapat beberapa keunggulan yang diharapkan dari alatalat yang berbasis mikrokontroler (microcontrollerbased solutions) : a) Kehandalan tinggi (high reliability) dan kemudahan integrasi dengan komponen lain (high degree of integration) b) Ukuran yang semakin dapat diperkecil (reduced in size) c) Penggunaan komponen dipersedikit (reduced component count) yang juga akan menyebabkan biaya produksi dapat semakin ditekan (lower manufacturing cost) d) Waktu pembuatan lebih singkat (shorter development time) sehingga lebih cepat pula dijual ke pasar sesuai kebutuhan (shorter time to market) e) Konsumsi daya yang rendah (lower power consumption).
15
2.2.3
Perkembangan Mikrokontroler Karena kebutuhan yang tinggi terhadap “chip-chip pintar” dengan
berbagai fasilitasnya, maka berbagai vendor juga berlomba untuk menawarkan produk-produk mikrokontrolernya. Hal tersebut terjadi semenjak tahun 1970an. Motorola mengeluarkan seri mikrokontroler 6800 yang terus dikembangkan hingga sekarang menjadi 68HC05, 68HC08, 68HC11, 68HC12, dan 68HC16. Zilog juga mengeluarkan seri mikroprosesor Z80 nya yang terkenal dan terus dikembangkan hingga kini menjadi Z180 dan kemudian diadopsi juga oleh mikroprosesor Rabbit. Intel mengeluarkan mikrokontrolernya yang populer di dunia yaitu 8051, yang karena begitu populernya maka arsitektur 8051 tersebut kemudian diadopsi oleh vendor lain seperti Phillips, Siemens, ATmel, dan vendorvendor lain dalam produk mikrokontroler mereka. Selain itu masih ada mikrokontroler populer lainnya seperti Basic Stamps, PIC dari Microchip, MSP 430 dari Texas Instrument dan masih banyak lagi. Selain mikroprosesor dan mikrokontroler, sebenarnya telah bemunculan chip-chip pintar lain seperti DSP prosesor dan Application Spesific Integrated Circuit (ASIC). Di masa depan, chip-chip mungil berkemampuan sangat tinggi akan mendominasi semua desain elektronik di dunia sehingga mampu memberikan kemampuan komputasi yang tinggi serta meminimumkan jumlah komponen-komponen konvensional.
16
2.2.4
Mode Pengalamatan Mode pengalamatan terdiri dari :
1. Pengalamatan tidak langsung. Pengalamatan yang menunjukkan pada sebuah register yang berisi alamat memori yang akan di tuju. 2. Pengalamatan langsung Pengalamatan langsung pada sebuah operasi dilakukan dengan memberikan data secara langsung ke sebuah alamat register. 3. Pengalamatan segera Pengalamatan pada sebuah operasi dilakukan dengan memberikan data secara langsung tanpa perantara dari alamat tertentu. 4. Pengalamatan Bit Pengalamatan pada sebuah operasi digunakan untuk mengalamati suatu alamat dengan bit. 5. Pengalamatan kode Pengalamatan yang proses pengalamatannya ditunjukkan langsung pada kode atau sering di sebut rutin.
2.2.5
Karakteristik Mikrokontroler Dalam aplikasinya sistem mikrokontroler memiliki karakteristik
sebagai berikut : 1.
Memiliki memori internal relatif sedikit.
2.
Memliki unit I/O langsung
17
3.
Pemroses bit, Selain byte.
4.
Memiliki perintah / program yang lansung berhubungan dengan I/O.
5.
Program relatif sederhana.
6.
Beberapa varian memiliki memori yang tak hilang bila catu padam, dan berfungsi untuk menyimpan program.
7.
Memiliki program khusus yang disimpan dalam memori untuk aplikasi tertentu, tidak seperti PC yang multifungsi karena mudahnya memasukkan program. Program mikrokontroler relatif lebih kecil dan konsumsi daya kecil.
8.
Rangkaian sederhana dan kompak
9.
Murah karena komponen sedikit.
10. Unit I/0 yang sederhana misalnya keypad, LCD, LED, Latch. 11. Lebih tahan terhadap kondisi lingkungan ekstrim misalnya temperatur, tekanan, kelembaban dan sebagainya.
2.2.6
Perangkat Pengembang Sistem Mikrokontroler Adapun perangkat pengembang (development tool) suatu sistem
mikrokontroler adalah : 1.
Compiler atau penerjemah (software) adalah proses penerjemahan program, bahasa program yang dimengerti manusia yaitu bahasa tingkat tinggi seperti bahasa C, BASIC, atau ASSEMBLER, selanjutnya
dengan
bantuan
kompiler,
programprogram
akan
18
diterjemahkan dalam bahasa mesin, (bahasa yang dimengerti oleh mikrokontroler) melalui media PC. 2.
Simulator (software) adalah program komputer yang mensimulasikan kerja dari mikrokontroler, dengan memasukkan program dan di jalankan maka register, memori, dan inputoutput (I/O) yang nampak di layar PC akan menunjukkan isi, sesuai dengan program yang dijalankan.
3.
Emultor (software dan hardware), suatu alat yang berhubungan dengan PC yang dapat mengsimulasikan kerja mikrokontroler, yang artinya programprogram di buat di kompilasikan pada PC setelah itu di download ke emultor (target), dan emultor akan bekerja secara sendiri (stand alone), dan hubungan dengan PC bisa dilepas. Jika ada kesalahan program maka cukup melakukan koreksi di PC dan di download ulang dengan demikian menghemat waktu reprograming.
4.
In circuit emultor (ICE) adalah pengembangan dari emultor, proses komunikasi antara PC dengan suatu rangkaian, dimana PC menggantikan chip mikrokontroler lalu dihubungkan dengan konektor berbentuk chip melalui kabelkabel ke suatu rangkaian.
5.
Programer, adalah alat yang digunakan untuk mengisi program dalam suatu mikrokontroler, alat ini menggunakan PC sebagai terminal printernya, selanjutnya melalui serial port, pararel port, USB atau card khusus antar muka ke programer, kodekode mesin di masukkan dalam
19
memori ROM, EPROM, yang berada di luar MCU (Mikro Prosessor Unit) atau falsh memori satu kemasan dengan MCU.
2.3
Arsitektur Mikrokontroler AVR. ”Mikrokontroler
AVR
merupakan
salah
satu
jenis
arsitektur
mikrokontroler yang menjadi andalan ATmel. Arsitektur ini dirancang memiliki berbagai
kelebihan
yang
mempunyai
penyempurnaan
dari
arsitektur
mikrokontroler-mikrokontroler yang sudah ada. Salah satu kelebihan tersebut adalah kemampuan In System Programming sehingga chip mikrokontroler AVR langsung dapat diprogram dalam sistem rangkaian aplikasi melalui aturan tertentu. Selain itu AVR sudah menggunakan konsep arsitektur Harvard yang memisahkan memori dan bus untuk data dan program, serta sudah menerapkan single level pipeling, sehingga eksekusi instruksi dapat berlangsung sangat cepat dan efisien.4 Mikrokontroler AVR ini memiliki banyak seri. Antar seri yang satu dengan yang lainnya memiliki perbedaan kemampuan, fitur-fitur, ukuran chip dan harga. Dengan demikian terdapat berbagai macam seri mikrokontroler AVR yang dapat di pilih sesuai kebutuhan dan dana yang tersedia. Salah satu seri mikrokontroler AVR yang banyak menjadi andalan saat ini adalah ATmega8535. Mikrokontroler ini banyak digunakan untuk sistem yang kompleks, memiliki input sinyal analog, dan membutuhkan memori yang relatif lebih besar. Berikut adalah fitur-fitur mikrokontroler seri ATmega8535.
4
Rosyidi, Lukman. 2003. Basic of Microcontroler AVR. Prasimax Technology Development Center.
20
Beberapa fitur yang dimiliki dari mikrokontroler ini antara lain : 1. High-performance, Low-power AVR® 8-bit Microcontroller 2. Advanced RISC Architecture a. 130 Powerful Instructions b. Most Single Clock Cycle Execution c. 32 x 8 General Purpose Working Registers d. Fully Static Operation e. Up to 16 MIPS Throughput at 16 MHz f. On-chip 2-cycle Multiplier 3. Nonvolatile Program and Data Memories a. 8K Bytes of In-System Self-Programmable Flash Endurance: 10,000 Write/Erase Cycles b. Optional Boot Code Section with Independent Lock Bits ISP by On-chip Boot Program True Read-While-Write Operation c. 512 Bytes EEPROM d. Endurance: 100,000 Write/Erase Cycles e. 512 Bytes Internal SRAM f. Programming Lock for Software Security 4. Peripheral Features a. Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes b. One 16-bit Timer/Counter with Separate Prescaler, Compare Mode and Capture Mode c. Real Time Counter with Separate Oscillator
21
d. Four PWM Channels e. 8-channel, 10-bit ADC f. 8 Single-ended Channels g. 7 Differential Channels for TQFP Package Only h. 2 Differential Channels with Programmable Gain at 1x, 10x or 200x for TQFP Package Only i. Byte-oriented Two-wire Serial Interface j. Programmable Serial USART k. Master/Slave SPI Serial Interface l. Programmable Watchdog Timer with Separate On-chip Oscillator m. On-chip Analog Comparator 5. Special Microcontroller Features a. Power-on Reset and Programmable Brown-out Detection b. Internal Calibrated RC Oscillator c. External and Internal Interrupt Sources d. Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby 6. I/O and Packages a. 32 Programmable I/O Lines b. 40-pin PDIP, 44-lead TQFP, 44-lead PLCC and 44-pad MLF 7. Operating Voltages a. 2.7 - 5.5V for ATmega8535L b. 4.5 - 5.5V for ATmega8535
22
8. Speed Grades a. 0 - 8 MHz for ATmega8535L b. 0 - 16 MHz for ATmega8535
2.3.1
Diagram Blok Arsitektur AVR
Gambar 2.2 Diagram blok mikrokontroler AVR (http://www.atmel.com/dyn/resources/prod_documents/doc2502.pdf)
23
2.3.2
Fungsi Pin Pada Mikrokontroler AVR IC mikrokontroler AVR dapat dikemas (packaging) dalam bentuk
yang berbeda-beda. Namun pada dasarnya fungsi kaki yang ada pada IC memiliki persamaan. Gambar salah satu bentuk bentuk IC seri mikrokontroler AVR dapat dilihat pada halaman berikut.
Gambar 2.3 Mikrokontroler AVR ATMEGA8535 40 pin (http://www.atmel.com/dyn/resources/prod_documents/doc2502.pdf)
Berikut adalah penjelasan fungsi tiap kaki yang biasa ada pada seri mikrokontroler AVR. A. Port A Merupakan
8-bit
directional
port
I/O.
Setiap
pinnya
dapat
menyediakan internal pull-up ( dapat diatur per bit). Output buffer Port A dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port A (DDRA) harus disetting terlebih dahulu sebelum Port A digunakan. Bit-bit DDRA
24
diisi 0 jika ingin mengfungsikan pin-pin port A yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Port Pin
Alternate Function
PA0
ADC0 (ADC input channel 0)
PA1
ADC1 (ADC input channel 1)
PA2
ADC2 (ADC input channel 2)
PA3
ADC3 (ADC input channel 3)
PA4
ADC4 (ADC input channel 4)
PA5
ADC5 (ADC input channel 5)
PA6
ADC6 (ADC input channel 6)
PA7
ADC7 (ADC input channel 7)
Tabel 2.1 Fungsi-fungsi dari port A (www.atmel.com/atmel/acrobat/doc2502.pdf)
B. Port B Merupakan 8-bit directional port I/O. Setiap pinnya terdapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port B dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port B (DDRB) harus disetting terlebih dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin mengfungsikan pin-pin port B yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Fungsi pinpin port B dapat dilihat dalam tabel berikut.
25
Port Pin
Alternate Function
PB0
T0 = timer /counter 0 external counter input
PB1
T1 = timer /counter 1 external counter input
PB2
AIN0 = analog comparator positive input
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 serial clock
Tabel 2.2 Fungsi-fungsi dari port B (www.atmel.com/atmel/acrobat/doc2502.pdf)
C. Port C Merupakan
8-bit
directional
port
I/O.
Setiap
pinnya
dapat
menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port C (DDRC) harus di setting terlebih dahulu sebelum port C digunakan. Bit-bit DDRC diisi 0 jika ingin mengfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi satu jika sebagai output. Selain itu, dua pin port C (PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2.
26
Port Pin
Alternate Function
PC7
TOSC2 (timer oscillator Pin 2)
PC6
TOSC1 (timer oscillator Pin 1)
PC1
SDA (two-wire serial bus data input/output line)
PC0
SCL (two-wire serial bus clock line)
Tabel 2.3 Fungsi-fungsi dari port C (www.atmel.com/atmel/acrobat/doc2502.pdf)
D. Port D Merupakan
8-bit
directional
port
I/O.
Setiap
pinnya
dapat
menyediakan internal pull-up resistor (dapat diatur per-bit). Output buffer Port D dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data Direction Register port D (DDRD) harus di setting terlebih dahulu sebelum port D digunakan. Bit-bit DDRD diisi 0 jika ingin mengfungsikan pin-pin port yang bersesuaian sebagai input, atau diisi satu jika sebagai output. Selain itu, Pin-pin port D juga memiliki fungsi-fungsi alternatif khusus seperti yang dapat di lihat dalam tabel berikut.
27
Port Pin
Alternate Function
PD0
RDX (UART input line)
PD1
TDX (UART output line)
PD2
INT0 (external interrupt 0 input)
PD3
INT1 (external interrupt 1 input)
PD4
OC1B (timer/counter 1 output compare B match output)
PD5
OC1A (timer/counter 1 output compare A match output)
PD6
ICP (timer/counter 1 input capture pin)
PB7
OC2 (timer/counter 2 output compare match output)
Tabel 2.4 Fungsi-fungsi dari port D (Lukman Rosyidi, Modul Training Mikrokontroler 8051 Motor Control, Desember 2003.)
E. RESET RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberikan masukan low selama minimal 2 machine cycle maka sistem akan direset. F. XTAL1 XTAL1 adalah masukan ke Inverting Oscilator Amplifier. Frekuensi kerja dari mikrokontroler AVR tergantung dari besarnya frekuensi kristal yang dipakai yang dipasang pada kaki XTAL1. Selain itu dapat juga dipakai sumber clock eksternal G. XTAL2 XTAL2 adalah masukan ke Inverting Oscilator Amplifier . Frekuensi kerja dari mikrokontroler AVR tergantung dari besarnya frekuensi
28
kristal yang dipakai yang dipasang pada kaki XTAL2. XTAL2 hanya bisa sebagai sumber clock internal. H. Avcc Avcc adalah kaki masukan tegangan bagi A/D Conveter. Untuk operasionalisasi ADC, suatu level tegangan antara agnd dan Avcc harus diberikan ke kaki ini. I. AREF AREF adalah kaki masukan referensi bagi A/D Conveter. Untuk Operasional ADC, Suatu tegangan antara AGND dan Avcc harus di berikan ke kaki ini. J. AGND Adalah kaki untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika board memiliki analog ground yang terpisah.
2.3.3
Perangkat Keras Mikrokontroler AVR
1. CPU (Central Processing Unit) “CPU terdiri atas dua bagian, yaitu unit pengendali (controlunit) serta mengandung ALU ( Arithmatik Logic Unit ) 8-bit, akumulator, pencacah program, register indek, penunjuk tumpukan, register kode keadaan, pengkode instruksi, pewaktuan dan logika
29
pengendalian. AVR memiliki RAM intern sehingga mikrokontroler ini beroperasi tanpa memori ekstern.5 AVR mempunyai I/O pararel dimana fungsinya dapat diprogram sebagai masukan atau keluaran. Dengan adanya timer yang terdapat chip memberikan kemampuan yang lebih unggul. Pencacah 8bit dan pembagi awalnya dapat diprogram untuk fungsi-fungsi tertentu.
Gambar 2.4 Arsitektur CPU dari AVR (http://www.atmel.com/dyn/resources/prod_documents/doc2502.pdf)
2. BUS A. Bus Alamat Saluran alamat ada 12-bit, Sehingga jumlah lokasi alamat yang dapat dialamati ada 4096 lokasi, yakni dari alamat 0 hingga 4096 (0000H s/d OFFF). Unit I/O memakai prinsip pemetaan memory yang berarti tidak alamat khusus untuk I/O, dengan demikian alamat I/O memakai sebagian jatah alamat memori atau dengan
5
Rosyidi, Lukman. 2003. Basic of Microcontroler AVR. Prasimax Technology Development Center.
30
kata lain alamat memori tertentu merupakan alamat I/O. Semua alamat telah dipakai sehingga tidak ada yang keluar dari mikrokontroler. B. Bus Data AVR adalah mikrokomputer 8-bit, dimana ukuran data dan CPU adalah 8-bit. Pin I/O yang terdiri dari 32 buah dikelompokkan menjadi 4 port masing-masing 8-bit. Torner dari AVR ini juga 8bit. Oleh karena jalur data telah di pakai keseluruhannya di dalam IC, maka pin data pun (saluran data eksternal) tidak ada. Hubungan mikrokontroler dengan dunia luarnya dilakukan melalui I/O dan pengendali C. Bus kontrol Bus kontrol ini berfungsi untuk menyerempakkan operasi mikrokontroler dengan operasi rangkaian luar. 3. Memori Di dalam sebuah mikrokontroler terdapat suatu memori yang berfungsi untuk menyimpan data atau program. Ada beberapa jenis memori, diantaranya adalah RAM dan ROM. Ada beberapa tingkatan memori, diantaranya adalah register internal, memori utama dan memori massal. Register internal adalah memori di dalam ALU, waktu akses register sangat cepat, umumnya kurang dari 100 ns. Memori utama adalah memori yang ada pada suatu sistem. Waktu aksesnya lebih lambat dibandingkan register internal, yaitu
31
antara 200 sampai 1.000 ns. Memori misal dipakai untuk penyimpanan berkapasitas tinggi, biasanya berbentuk disket, pita magnetik atau kaset. AVR mempunyai struktur memori sebagai berikut: 1. RAM Internal RAM Internal digunakan untuk menyimpan variabel atau data yang bersifat sementara. 2. Special Function Register Special Function Register adalah memori yang berisi register yang berfungsi khusus, seperti timer, serial dan lain-lain. Pada special function register terdapat beberapa alamat yang bisa dialamati secara bit dan ada yang tak bisa di alamati. a. Acumulator Acumulator
merupakan
register
yang
berfungsi
untuk
menyimpan data sementara. Register acummulator juga sering digunakan dalam operasi aritmatika, logika, pegambilan data dan pengiriman data. Register ini di alamati secara bit. b. Register B Register B dapat digunakan untuk proses aritmatika dan dapat juga digunakan sebagai register biasa. c. Register Port Pada register ini terdapat 4 buah yaitu port A, port B, port C, port D. Register ini di gunakan sebagai sarana input / output untuk menyimpan data dari atau ke PA, PB, PC, PD.
32
d. Register timer Mikrokontroler AVR mempunyai dua buah 16 bit timer, yaitu timer 0 dan timer 1, timer 0 dibentuk oleh register THO dan TLO, timer 1 di bentuk oleh register THI dan TLI. Perilaku dari register THO, TH1, TLO dan TL1 diatur oleh register TMOD dan TCON. 3. Register Kontrol a. Register IP digunakan untuk mengatur prioritas dari masingmasing interupsi. b. Register IE digunakan untuk mengaktifkan atau menonaktifkan sarana interupsi c. Register TMOD digunakan untuk mengatur mode kerja dari timer 0 dan timer 2. d. Register TCON digunakan untuk memulai dan menghentikan proses pencacah timer, mengatur sinyal interupsi dan INT0 dan INT1, serta memantau apakah ada sinyal yang masuk ke INT0 dan INT1. e. Register SCON digunakan untuk mengatur perilaku dari USART yang diantaranya memantau proses pengiriman dan data seri. f. Register Pcon digunakan untuk mengatur pemakaian daya IC. g. Program status word, terletak pada alamat DOH.
33
h. Register PSW ini berisi informasi status program yang mana masing-masing bit menunjukkan kondisi central processing unit setelah operasi dijalankan. i. Register stack pointer merupakan register 8 bit yang terletak pada alamat 81 H yang mempunyai fungsi untuk menyimpan alamat data pada saat terjadi interupsi. j. Register data pointer (DPTR) merupakan register 6 bit yang terdiri dari pointer high byte (DPH) dan data pointer low (DPL). k. Serial buffer, AVR mempunyai sebuah on chip serial port yang dapat digunakan untuk berkomunikasi dengan peralatan lain yang menggunakan serial port seperti modem shif register. Serial data buffer terletak pada alamat 99H, sedangkan untuk mengatur mode serial dapat diubah dengan isi dari SCON terletak pada alamat 98H. 4. Flash PEROM Memori yang digunakan untuk menyimpan instruksi. 5. External Memori Ekternal memori adalah sebuah IC yang terhubung pada jalur bus eksternal dari sistem mikrokontroler dimana memori tersebut dapat berupa RAM, UV EPROM, ataupun EEPROM.
34
6. Reset Pin reset menandakan aktif low, artinya bahwa bila pin tersebut ”0” maka MPU mulai dari awal lagi, seperti pada saat MPU dihidupkan. 7. Timer Pada AVR mempunyai timer (penanda waktu) yang terdiri dari pembagi awal (Pre-scaler) 7-bit dan TDR 8-bit yang dapat terprogram. 8. Port Serial AVR mempunyai on chip serial port yang dapat digunakan untuk komunikasi data serial secara full duplex sehingga port serial ini masih dapat menerima data pada saat proses pengiriman data terjadi. 9. Port Paralel Port pararel adalah data komputer yang digunakan untuk mentransmisi 8 bit data dalam satu detak. Standar port pararel yang terbaru adalah IEEE 1248 yang dikeluarkan tahun 1994. Standar ini mendefinisikan lima mode operasi sebagai berikut. a. Mode Kompabilitas b. Mode nibble c. Mode Byte d. Mode EPP(Enchanced Pararel Port) e. Mode EEP(Extenced Eapability Port) 10. Interupsi Interupsi adalah suatu kejadian yang menyebabkan mikrokontroler berhenti sejenak untuk melayani interupsi suatu program.
35
2.4
IC (Integrated Circuit) ”Integrated Circuit atau yang lebih dikenal IC adalah komponen
semikonduktor yang mengandung ekivalensi dari ratusan atau bahkan ribuan komponen komponen lain.6 IC merupakan gabungan dari beberapa komponen elektronika seperti dioda, transistor yang dibuat dalam satu sirkuit yang terintegrasi atau saling berhubungan. Komponenkomponen yang ada dalam IC membentuk suatu subsistem terintegrasi yang bekerja untuk keperluan tertentu. Setiap jenis IC didesain untuk keperluan khusus sehingga pada rangakaian IC tersebut memiliki rangkaian internal yang beragam. Regulator tegangan ( IC 7805T) digunakan untuk menghasilkan tegangan yang konstan sebesar +5 volt dengan arus maksimum 1,5 ampere. Regulator tegangan dapat memiliki perlindungan terhadap sirkuit pendek serta peredam panas yang melindungi IC dari panas yang berlebihan. Pada gambar 2.5 merupakan Diagram Blok Regulator Tegangan (IC 7805T)
Gambar 2.5 Diagram Blok Regulator Tegangan (IC 7805T) (http://www.electrokits.com/downloads/pdf/7805-datasheet-fairchild.pdf)
6
RA. Penfold, Dasar-Dasar Elektronika Untuk Pemula, Pionir Jaya, Bandung, 1999, halaman 40
36
Regulator tegangan ditempatkan diantara dua buah resistor yang berguna sebagai filter tegangan yang melewati regulator tegangan agar menghasilkan tegangan yang stabil.
Gambar 2.6 Bentuk Fisik Regulator (IC 7805T) (http://electronic-circuit.net)
2.5
Sistem Kendali Sistem kendali adalah suatu sistem yang bertujuan untuk mengendalikan
suatu proses agar output yang dihasilkan dapat dikontrol sehingga tidak terjadi kesalahan. Dalam hal ini output yang dikendalikan adalah kestabilannya, ketelitian, dan kedinamisannya. Secara umum, sistem kendali dapat dibedakan menjadi dua jenis yaitu : 1. Sistem kendali loop terbuka Sistem kendali loop terbuka, keluaranya tidak mempengaruhi input. Atau dengan kata lain sistem kendali loop terbuka keluarannya (output) tidak dapat digunakan sebagai perbandingan umpan balik dengan inputnya. Akibatnya ketetapan dari sistem tergantung dari kalibrasi. Pada umumnya, sistem kendali loop terbuka tidak tahan terhadap gangguan luar. Dibawah ini adalah gambar diagram blok sistem kendali loop terbuka. Input
Pengendali
Sistem kendali
Output
Gambar 2.7 Sistem Kendali Loop Terbuka
37
2. Sistem Kendali Loop tertutup Sistem kendali loop tertutup seringkali disebut sistem kendali umpan balik. Pada sistem kendali loop tertutup, sinyal kesalahan yang bekerja, yaitu perbedaan antara sinyal input dan sinyal umpan balik diinputkan kekontroller sedemikian rupa untuk mengurangi kesalahan dan membawa keluaran sistem kenilai yang dikehendaki. + r
e
m Pengendali
c Sistem Kendali
b Elemen Umpan Balik
Gambar 2.8 Sistem Kendali Loop Tertutup
Komponen proses sistem kendali loop tertutup : Reference Input (masukan/input, r), merupakan sinyal input bagi sistem kontrol. Actuating Signal (e), merupakan sinyal kesalahan/error, yang merupakan selisih antara sinyal input (r) dan sinyal b. Control Element, (pengendali) merupakan elemen yang berfungsi untuk memproses kesalahan/error yang terjadi dan setelah kesalahan tersebut dimasukkan melalui elemen pengontrol. Manipulated Variable (m), merupakan sinyal yang dihasilkan oleh control element yang berfungsi sebagai sinyal pengontrol tanpa adanya gangguan.
38
Plant/proses (sistem kendali), merupakan obyek fisik yang dikontrol, dapat berupa proses mekanis, elektris, hidraulis maupun gabungannya. Disturbance, merupakan sinyal gangguan yang tidak diinginkan. Feedback Element (jalur umpan balik), merupakan bagian sistem yang mengukur keluaran yang dikontrol dan kemudian mengubahnya menjadi sinyal umpan balik. Forward Path, merupakan bagian sistem tanpa umpan balik 7
2.6
Konsep pengujian 2.6.1
White Box Testing Pengujian white box / structural testing (glass box) adalah
pengujian yang didasarkan pada pengecekan terhadap detil perancangan, menggunakan struktur kontrol dari desain program secara prosedural untuk membagi pengujian ke dalam beberapa kasus pengujian. Penentuan kasus uji disesuaikan dengan struktur system, pengetahuan mengenai program digunakan untuk mengidentifikasikan kasus uji tambahan. Tujuan penggunaan white box untuk menguji semua statement program. Penggunaan metode pengujian white box dilakukan untuk : Memberikan jaminan bahwa semua statemen pada program suatu modul digunakan minimal satu kali selama pengujian dan bahwa semua kondisi logis telah diuji.
7
Robotic and Automatic Manufacturing; D Sharon, J Harstein dan G Yanian, Pitman Publishing,1987
39
Menggunakan semua keputusan logis untuk semua kondisi true atau false. Mengeksekusi semua perulangan pada batasan nilai dan operasional pada setiap kondisi. Menggunakan struktur data internal untuk menjamin validitas jalur keputusan.
2.6.2
Black Box Testing Pengujian black box / functionality testing merupakan pengujian
yang mengabaikan mekanisme internal sistem atau komponen dan fokus semata-mata pada output yang dihasilkan yang merespon input yang dipilih dan kondisi eksekusi. Dan pengujian black box dilakukan untuk mengevaluasi pemenuhan sistem atau komponen dengan kebutuhan fungsional tertentu. Black box testing menggunakan pendekatan komplementer dari teknik white box, karena pengujian black box diharapkan mampu mengungkap kelas kesalahan yang lebih luas dibandingkan teknik white box. Pengujian black box berfokus pada pengujian persyaratan fungsional perangkat lunak, untuk mendapatkan serangkaian kondisi input yang sesuai dengan persyaratan fungsional suatu program.
40
2.7
Bahasa Pemograman Pemrograman merupakan suatu proses guna mengimplementasikan suatu
bahasa pemrograman. Bahasa pemograman merupakan prosedur atau tatacara penulisan program yang memungkinkan seorang programer dapat menentukan secara persis data mana yang akan disimpan/diteruskan. Pada bahasa pemrograman terdapat dua aturan penting yang dipakai untuk mendefinisikan program komputer yaitu sintak dan semantik. Sintaks adalah aturan-aturan gramatikal yang mengatur tata cara penulisan kata, ekspresi dan pernyataan, sedangkan semantic adalah aturanaturan untuk menyatakan makna/arti yang terkandung pada suatu bahasa atau kode program. Fungsi bahasa pemrograman adalah sebagai media untuk menyusun dan memahami serta sebagai alat komunikasi antara program dengan komputer, meskipun dapat juga digunakan sebagai alat komunikasi antara orang yang satu dengan yang lain. Secara umum bahasa pemrograman di bagi dalam empat kelompok : 1.
Bahasa Berorientasi objek (Object Oriented Language) Bahasa berorientasi objek merupakan bahasa pemrograman yang mengandung kapsul-kapsul yang berisi fungsifungsi untuk menyelesaikan masalah. Dengan bahasa ini, pemrograman tidak lagi harus menuliskan secara detail semua pernyataan dan ekspresi seperti pada bahasa tingkat tinggi, melainkan cukup dengan mamasukkan kriteria-kriteria yang dikehendaki saja. Bahasa ini kemudian akan menggunakan kapsul-kapsul tersebut untuk
41
menyelesaikan permasalahan itu. Contoh : bahasa C++, visual foxpro, visual basic, Borland Delphi, Java, visual basic net dan lain-lain. 2.
Bahasa Tingkat Tinggi (High Level Language) Bahasa tingkat tinggi merupakan bahasa pemrograman yang menggunakan aturan-aturan gramatikal dalam penulisan ekspresi atau pernyataan dengan standar bahasa yang mudah di pahami secara langsung oleh manusia. Bahasa tingkat tinggi lebih dekat kebahasa manusia dibandingkan kebahasa mesin. Contoh : Pascal, Fortran, Cobol, Power Basic.
3.
Bahasa Tingkat menengah (Middle Level Language) Bahasa tingkat menengah merupakan bahasa pemrograman yang menggunakan aturan-aturan gramatikal dalam penulisan ekspresi atau pernyataan dengan standar bahasa yang mudah di pahami oleh manusia serta memiliki instruksi-instruksi tertentu yang dapat lansung diakses oleh komputer. Contoh : Bahasa C
4.
Bahasa tingkat rendah (Low Level Language) Bahasa tingkat rendah adalah merupakan bahasa pemrograman yang berorientasi pada mesin. Disebut tingkat rendah karena bahasa ini lebih dekat ke bahasa mesin daripada bahasa manusia. Pemrograman yang menggunakan bahasa ini harus dapat berpolafikir berdasarkan logika mesin pada komputer, Sehingga bahasa ini di nilai kurang fleksibel dan sulit untuk di pahami pemula. Contoh : Bahasa Assembly
42
Agar komputer dapat memahami atau mengenal kode program yang di susun dengan suatu bahasa pemrograman, maka di butuhkan suatu penerjemah, yaitu interpreter atau compiler. 1. Interpreter Interpreter merupakan penerjemah bahasa pemrograman yang menerjemahkan instruksi demi instruksi pada saat eksekusi program agar dapat dipahami oleh mesin. Pada saat menerjemahkan, interpreter akan memeriksa sintaksis dari setiap instruksi program. Jika ditemukan kesalahan sintaksis (sintax error) maka interpreter akan menampilkan pesan kesalahan dan proses eksekusi program akan langsung terhenti saat itu juga. Ruang pengingat yang dibutuhkan interpreter tidak besar karena program di eksekusi secara berurutan (sequence) namun demikian ruang pengingat yang tersedia harus cukup besar. Karena pada saat eksekusi itu seluruh source program, data dan interpreter secara bersamaan berada di ruang pengingat. Source Program
Lexical Analyzer
Semantic Analyzer
Syntactic Analyzer
Machine Language
Execute
Symbol Table
Data
Gambar 2.9 Diagram Cara Kerja Interpreter ( Prasimax Mikron Technology Development Center : 2003)
Output
43
2. Compiler Istilah compiler berasal dari kata to compile yang berarti menyusun, mengumpulkan atau menghimpun. Compiler merupakan penerjemah bahasa pemrograman yang menerjemahkan instruksiinstruksi dalam satu kesatuan modul kedalam bahasa mesin (object program), kemudian objek program akan mengalami proses lingkungan yang berfungsi untuk menggabungkan modul tersebut dengan modul lain yang berkaitan, seperti data tantang karakteristik mesin, filefile pustaka atau objek program tersebut, sehingga di hasilkan suatu file executetable program yang akan di eksekusi oleh komputer. Bila pada saat proses penerjemahan atau proses linking terjadi kesalahan maka akan tampil pesan kesalahan dan proses eksekusi akan terhenti. Source Program
Lexical Analyzer
Syntactic Analyzer
Semantic Analyzer
Code Generation
Machine Language
Symbol Table
Linker
Executable
Compiler Data
Execute
Output
Gambar 2.10 Diagram Cara Kerja Compiler ( Prasimax Mikron Technology Development Center : 2003)
44
2.7.1
Sistematika Penulisan Program Secara umum, sistematika penulisan program
terdiri
dari
inisialisasi, input, proses, output. 1. Inisialisasi Pada beberapa bahasa pemrograman terstruktur seperti pascal, C, Fortran, dan cobol, proses inisialisasi suatu keharusan. Pada tahap ini pemrograman harus menuliskan nama program, piranti yang akan digunakan, konstanta, variabel, fungsi, dan prosedur yang digunakan. 2. Input Pada tahap ini pemrograman menuliskan perintah untuk memasukkan data yang di proses dengan suatu prosedur. 3. Proses Pada tahap ini pemrogram menuliskan proses-proses pengolahan data baik berupa rumus matematika, statistik maupun logika dan lain-lain. 4. Output Pada tahap terakhir ini pemrograman menuliskan perintah-perintah untuk menampilkan hasil pengolahan data dalam bentuk format tertentu, seperti table grafik, dan lain-lain.
2.7.2
Bahasa C Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh
Martin Richards pada tahun 1967. Bahasa ini memberikan ide kepada Ken Thompson yang kemudian mengembangkan bahasa yang disebut dengan
45
bahasa B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis Ritchie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah AT&T Bell Laboratories). Bahasa C pertama kali digunakan pada komputer Digital Equipment Corporation PDP-11 yang menggunakan sistem operasi UNIX. Standar bahasa C yang asli adalah standar dari UNIX. Sistem operasi, kompiler C dan seluruh program aplikasi UNIX yang esensial ditulis dalam bahasa C. Kepopuleran bahasa C membuat versi-versi dari bahasa ini banyak dibuat untuk komputer mikro. Untuk membuat versiversi tersebut menjadi standar, ANSI (American National Standard Institute) membentuk suatu komite (ANSI committee X3J11) pada tahun 1983 yang kemudian menetapkan standar ANSI untuk bahasa C. Standar ANSI ini didasarkan kepada UNIX yang diperluas. Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler. Berikut merupakan dasar-dasar bahasa C : 1. Struktur penulisan program #include < [library1.h] > // Opsional #include < [library2.h] > // Opsional#define [nama1] [nilai] ; // Opsional #define [nama2] [nilai] ; // Opsional[global variables] // Opsional [functions] // Opsional void main(void) // Program Utama { [Deklarasi local variable/constant] [Isi Program Utama] }
46
Intruksi preposesor #include : berfungsi menginstruksikan kepada compiler untuk membaca dan menyisipkan file dari sumber /library lain yang berada didalam tanda < > pada saat program dikompilasi. #define : fungsinya mirip find&replace pada text editor, digunakan untuk melaksanakan subtitusi makro dari satu lembar teks kelembar teks yang lain melalui suatu file dimana teks tersebut digunakan. File-file header stdio.h : berisi prototype fungsi untuk fungsi pustaka baku input output,perintah dasar untuk I/O math.h : berisi prototype fungsi untuk pustaka matematika string.h : berisi prototype fungsi untuk pemrosesan string 2. Tipe Data char : 1 byte ( -128 s/d 127 ) unsigned char : 1 byte ( 0 s/d 255 ) int : 2 byte ( -32768 s/d 32767 ) unsigned int : 2 byte ( 0 s/d 65535 ) long : 4 byte ( -2147483648 s/d 2147483647 ) unsigned long : 4 byte ( 0 s/d 4294967295 ) float : bilangan desimal array : kumpulan data-data yang sama tipenya.
47
3. Deklarasi variabel & konstanta Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah. Penulisan : [tipe data] [nama] = [nilai] ; Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah. Penulisan : const [nama] = [nilai] ; 4. Statement Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [ } ]. Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga comments / komentar. 5. Fungsi Fungsi adalah bagian program yang dapat dipanggil oleh program utama. Penulisan : [tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]) { [statement] ; }
48
2.8
CodeVisionAVR CodeVisionAVR merupakan sebuah cross-compiler C, Integrated
Development Environtment (IDE), dan Automatic Program Generator yang didesain untuk mikrokontroler buatan ATmel seri AVR. Cross-compiler C mampu menerjemahkan hampir semua perintah dari bahasa ANSI C, sejauh yang diijinkan oleh arsitektur dari AVR, dengan tambahan beberapa fitur untuk mengambil kelebihan khusus dari arsitektur AVR dan kebutuhan pada sistem embedded. IDE mempunyai fasilitas internal berupa software AVR Chip ISP yang memungkinkan Anda untuk melakukan transfer program kedalam chip mikrokontroler setelah sukses melakukan kompilasi/asembli secara otomatis. Untuk keperluan debugging sistem embedded, yang menggunakan komunikasi serial, IDE mempunyai fasilitas internal berupa sebuah Terminal. Selain library standar C, CodeVisionAVR juga mempunyai library tertentu untuk: •
Modul LCD alphanumeric
•
Bus I2C dari Philips
•
Sensor Suhu LM75 dari National Semiconductor
•
Real-Time Clock: PCF8563, PCF8583 dari Philips, DS1302 dan DS1307 dari Maxim/Dallas Semiconductor
•
Protokol 1-Wire dari Maxim/Dallas Semiconductor
•
Sensor Suhu DS1820, DS18S20, dan DS18B20 dari Maxim/Dallas Semiconductor
•
Termometer/Termostat DS1621 dari Maxim/Dallas Semiconductor
•
EEPROM DS2430 dan DS2433 dari Maxim/Dallas Semiconductor
49
•
SPI
•
Power Management
•
Delay
•
Konversi ke Kode Gray CodeVisionAVR juga mempunyai Automatic Program Generator bernama
CodeWizardAVR, yang mengujinkan Anda untuk menulis, dalam hitungan menit, semua instruksi yang diperlukan untuk membuat fungsi-fungsi berikut: •
Set-up akses memori eksternal
•
Identifikasi sumber reset untuk chip
•
Inisialisasi port input/output
•
Inisialisasi interupsi eksternal
•
Inisialisasi Timer/Counter
•
Inisialisasi Watchdog-Timer
•
Inisialisasi UART (USART) dan komunikasi serial berbasis buffer yang digerakkan oleh interupsi
•
Inisialisasi Pembanding Analog
•
Inisialisasi ADC
•
Inisialisasi Antarmuka SPI
•
Inisialisasi Antarmuka Two-Wire
•
Inisialisasi Antarmuka CAN
•
Inisialisasi Bus I2C, Sensor Suhu LM75, Thermometer/Thermostat DS1621 dan Real-Time Clock PCF8563, PCF8583, DS1302, dan DS1307
•
Inisialisasi Bus 1-Wire dan Sensor Suhu DS1820, DS18S20
50
•
Inisialisasi modul LCD
2.8.1
Instalasi CodeVisionAVR. Anda dapat memperoleh file instalasi CodeVisionAVR dengan
cara mendownload pada situs pembuatnya yaitu HP InfoTech di http://www.hpinfotech.com contoh yang digunakan adalah versi 2.03.4. Klik ganda file setup.exe yang didapat dari proses download dari situs HP InfoTech.
Gambar 2.11 Ikon file setup.exe
Selanjutnya pada kotak dialog Licence Agreement, pilih I accept the agreement lalu klik tombol next seperti pada Gambar 2.12.
Gambar 2.12 Menyetujui syarat-syarat yang diberikan
Klik tombol next sampai ada tombol install dan program CodeVisionAVR telah siap untuk di-install. Tekan tombol Install seperti pada Gambar 2.13.
51
Setelah selesai akan dimunculkan kotak dialog informasi seperti pada Gambar 2.14.
Gambar 2.13 Nama folder pada Start Menu
Gambar 2.14 Proses
2.8.2
instalasi selesai
Configuring CodeVisionAVR. Jalankan aplikasi CodeVisionAVR dengan cara melakukan klik
ganda pada shortcut ikon CodeVisionAVR yang terbentuk pada desktop.
Gambar 2.15 Ikon CodeVisionAVR pada Desktop
52
Tampilan IDE dari CodeVisionAVR ditunjukkan pada gambar 2.16.
Gambar 2.16 IDE CodeVisionAVR
Untuk memulai membuat project baru, pada menu-bar, pilih File New, seperti yang ditunjukkan oleh gambar 2.17
. Gambar 2.17 Membuat file baru
Anda harus membuat sebuah project sebagai induk desain dengan memilih Project, lalu klik tombol OK seperti pada Gambar 2.18.
53
Gambar 2.18 Membuat project baru
Tampilan CodeWizardAVR ditunjukkan oleh Gambar 2.19. Pilih Chip dengan IC yang Anda gunakan. Sebagai contoh Anda memilih Chip ATmega8535. Tab-tab pada CodeWizardAVR menunjukkan fasilitas yang dimiliki oleh chip yang Anda pilih. Cocokkan pula frekuensi kristal yang akan gunakan pada bagian Clock. Pengisian frekuensi clock digunakan oleh software untuk menghitung rutin-rutin seperti delay agar diperoleh perhitungan yang cukup akurat.
Gambar 2.19 CodeWizardAVR pada tab Chip
Berikutnya anda akan menginisialisasi Port A yang terhubung dengan modul output. Pada tab Port bagian Port A, ubah bagian Data Direction menjadi OUT dengan nilai output sama dengan 0 seperti pada Gambar 2.20. Artinya Port A digunakan sebagai port output dengan nilai awal nol setelah kondisi reset.
54
Kemudian lakukan inisialisasi Port B seperti pada Gambar 2.21. Port B tersambung sebagai modul input. Pada sub-tab Port B, yakinkan Data Direction pada posisi IN dengan resistor pull-up internal yang disingkat dengan huruf P. Dengan mengaktifkan resistor pull-up internal.
Gambar 2.20 Setting Port A sebagai pin output
Gambar 2.21 Setting Port B sebagai pin input dengan pull-up
Untuk menyimpan setting yang sudah dilakukan dapat dilakukan dengan cara pada menu CodeWizardAVR, pilih File Generate, Save and Exit, seperti yang ditunjukkan oleh Gambar 2.22.
55
Hasil yang dihasilkan akan disimpan dengan tiga tahap, yang pertama *.c (C Compiler files), yang kedua memberi nama file project *.prj (Project files), dan yang ketiga memberi nama file project CodeWizard *.cwp (CodeWizardAVR project files).
Gambar 2.22 Menyimpan setting
Kemudian untuk mengkompilasi program adalah dengan cara memilih menu Project Compile untuk melakukan kompilasi seperti yang ditunjukkan oleh Gambar 2.23.
Gambar 2.23 Melakukan kompilasi
56
Program yang siap untuk ditransfer kedalam mikrokontroler, sebelumnya harus dilakukan seting pada programmernya. Pada menu pilih Setting Programmer, pilihlah programmer sesuai dengan yang akan gunakan. Pada Gambar 2.24 ditunjukkan menggunakan programmer Kanda Systems STK200+/300 sebagai contoh. Programmer ini menggunakan kabel paralel yang terhubung dengan port paralel pada komputer Anda.
Gambar 2.24 Menggunakan programmer STK200+/300
Kemudian pilih menu Project Configure, untuk mengkonfigure project yang dibuat. Kotak dialog pada Gambar 2.25 akan muncul, pada tab After Make, pilih “Program the Chip”. Lalu klik tombol OK.
Gambar 2.25 Memilih opsi “Program the Chip” After Make
57
Setelah melakukan seting, lakukan make project dengan memilih menu Project Make dan pada kotak dialog informasi klik tombol Program, apabila terjadi kesalahan maka akan tampil seperti pada Gambar 2.26.
Gambar 2.26 Gagal melakukan transfer program
Bila ingin menambahkan instruksi lain maka Anda dapat melakukan penyuntingan program pada file .C-nya. Kemudian lakukan kompilasi dan make project berikutnya proses download.