BAB II TEORI
2.1. GP2Y1010AU0F Optical Dust Sensor
GP2Y1010AU0F Optical Dust Sensor ialah sensor debu yang berbasis inframerah. Sensor ini
sangat efektif dalam mendeteksi partikel yang sangat halus seperti debu atau asap rokok, dan
umumnya digunakan dalam sistem pembersih udara.
Gambar 2.1. GP2Y1010AU0F Optical Dust Sensor
Prinsip kerja dari sensor ini ialah dengan mendeteksi debu ataupun partikel yang lain
kemudian akan di pantulkan cahaya ke bagian penerima.
(b)
Gambar 2.2 : (a). Internal Schematic (b) Outline Dimensions 1
• Berbasis Inframerah
Cahaya dicerminkan pada partikel melewati keseluruhan permukaan, kemudian oleh
photodiode diubah menjadi tegangan. Tegangan harus diperkuat untuk dapat membaca
perubahan. Output dari sensor adalah tegangan analog sebanding dengan kepadatan debu yang
terukur, dengan sensitivitas 0.5V/0.1 mg/m3.
Spesifikasi dari GP2Y1010AU0F Optical Dust Sensor :
• Output tegangan : analog, semakin tinggi intensitas debu semakin tinggi nilai tegangan output
• Sensitivitas : 0,5/01.mg/m3
• Suplai tegangan: 5-7 V
1
• Suhu operasi : -10-65 derajat Celcius
• Konsumsi saat ini: 20mA max
2.2. Mikrokontroler ATMega 16
Mikrokontroler adalah sebuah komputer kecil (“special purpose computers”) di dalam satu IC
yang berisi CPU , memori, timer, saluran komunikasi serial dan paralel, port input/output, ADC.
Mikrokontroler digunakan untuk suatu tugas dan menjalankan suatu program.
Mikrokontroler AVR mempunyai beberapa kelebihan, antara lain murah, dukungan
software dan dokumentasi yang memadai, dan memerlukan komponen pendukung yang sangat
sedikit. Salah satu tipe mikrokontroler AVR untuk aplikasi standar yang memiliki fitur
memuaskan ialah ATMega 16.
Mikrokontroler AVR (Alf and Vegard’s Risc processor) standar memiliki arsitektur 8 bit,
dimana semua instruksi dikemas dalam kode 16-bit dan sebagian besar instruksi dieksekusi
dalam 1 (satu) siklus clock. AVR berteknologi RISC (Reduced Instruction Set Computing). AVR
dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga
ATMega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah
memori, peripheral, dan fungsinya.
Teknologi elektronika saat ini membutuhkan pengontrol berukuran kecil dan
berkecepatan tinggi, yang bisa dipenuhi oleh mikrokontroler. Mikrokontroler adalah chip yang
berisi berbagai unit penting untuk melakukan pemrosesan data (I/O, timer, memory, Arithmetic
Logic Unit (ALU) dan lainnya) sehingga dapat berlaku sebagai pengendali dan computer
sederhana.
Gambar 2.3. Diagram blok contoh perkembangan mikrokontroler ATMEL2
2
Keuntungan menggunakan mikrokontroler adalah harganya murah, dapat diprogram
berulang kali, dan dapat diprogram sesuai dengan keinginan kita. Keunggulan dari
mikrokontroler diantaranya :
1. Tersedianya I/O
I/O dalam mikrokontroler sudah tersedia
2. Memori Internal
Memori merupakan media untuk menyimpan program dan data sehingga mutlak harus ada.
2.2.1. Spesifikasi Mikrokontroler ATMega 16
Mikrokontroler ATMega16 memiliki fitur yang lengkap (ADC internal, EEPROM internal,
Timer/Counter, Watchdog Timer, PWM, Port I/O, komunikasi serial, Komparator, I2C, dll). Di
dalam mikrokontroler ATMega 16, sudah terdiri dari :
1. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, dan Port D
2. ADC (Analog Digital Converter) 10 bit sebanyak 8 channel
3. Tiga buah timer/counter dengan kemampuan pembandingan
4. CPU yang terdiri dari 32 buah register
5. 131 instruksi handal yang umumnya hanya membutuhkan 1 siklus clock
6. Watchdog Timer dengan osilator internal
7. 2 buah timer/counter 8 bit
8. 1 buah timer/counter 16 bit
9. Tegangan operasi 2.7 V- 5.5 V pada ATMega 16 L
10. Internal SRAM sebesar 1 KB
11. Memory flash sebesar 16 KB dengan kemampuan Read While Write
12. Unit interupsi internal dan eksternal
13. Port antarmuka SPI
14. EPROM sebesar 512 byte yang dapat di program saat operasi
15. Antarmuka komparator analog
16. 4 chanel PWM
17. 32x8 general purpose register
18. Hampir mencapai 16 MIPS pada Kristal 16 MHz
Gambar 2.4. Block Diagram Mikrokontroler ATMega 163
3
2.2.2. Konfigurasi Pin Mikrokontroler ATMega 16
Susunan pin mikrokontroler ATMega 16 diperlihatkan pada Gambar 2.5 di bawah ini :
Gambar 2.5. Konfigurasi Pin Mikrokontroler ATMega 164
1. Vcc merupakan pin yang berfungsi sebagai masukan catu daya.
Konfigurasi pin ATMega16 dengan kemasan 40 pin DIP (Dual In-line Package) dapat dilihat
pada Gambar 2.5. Dari gambar di atas dapat dijelaskan fungsi dari masing-masing pin
ATMega16 sebagai berikut:
2. GND merupakan pin Ground
3. Port A (PA0...7) merupakan pin input/output dua arah dan pin masukan ADC.
4. Port B (PB0...7) merupakan pin input/output dua arah dan pin dengan fungsi khusus seperti
SPI, MISO, MOSI, SS, AIN1/OC0, AIN0/INT2, T1, T0 T1/XCK
5. Port C (PC0...7) merupakan pin input/output dua arah dan pin dengan fungsi khusus, seperti
TOSC2, TOSC1, TDI, TD0, TMS, TCK, SDA, SCL
6. Port D (PD0...7) merupakan pin input/output dua arah dan pin dengan fungsi khusus, seperti
RXD, TXD, INT0, INT1, OC1B, OC1A, ICP1
7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.
8. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal
9. AVCC merupakan pin masukan tegangan untuk ADC .
4
10. AREF merupakan pin masukan tegangan referensi AD
2.2.3. Port-Port Pada Mikrokontroler ATMega 16 dan Fungsinya 2.2.3.1.Port A
Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor
(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 diisi 0 jika ingin memfungsikan pin-pin port A
yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan pin port A
juga digunakan untuk masukan sinyal analog bagi A/D converter.
2.2.3.2.Port B
Merupakan 8-bit directional port I/O. Setiap pinnya dapat 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 memfungsikan pin-pin port B
yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Pin-pin port B juga memiliki
untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.
Tabel 2.1. Fungsi Pin-pin Port B5
Pin Fungsi Khusus
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)
OC0 (Timer/Counter 0 Output Compare Match Output)
INT2 (External Interrupt 2 input)
PB1 T1 (Timer/Counter 0 External Counter Input)
PB0 T0T1 (Timer/Counter 0 External Counter Input)
XCK (USART External Clock Input/Output)
2.2.3.3.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
disetting terlebih dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin
memfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi 1 jika sebagai output.
Selain itu, dua pin port C (PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator
untuk timer/counter 2.
Tabel 2.2. Fungsi Pin-pin Port C5
Pin Fungsi Khusus
PC7 TOSC2 (Timer Oscillator Pin2)
PC6 TOSC1 (Timer Oscillator 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 Input/Output Line)
PC0 SCL (Two-wire Serial Bus Clock Line)
2.2.3.4.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
disetting terlebih dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin
Selain itu, pin-pin port D juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat
dilihat dalam tabel berikut.
Tabel 2.3. Fungsi Pin-pin Port D5
Pin Fungsi Khusus
PD7 OC2 (Timer/Counter 2Output/Input Compare Match Output)
PD6 ICP (Timer/Counter 1 Input Capture Pin)
PD5 OC1A (Timer/Counter 1 Output Compare A Match Output)
PD4 OC1B (Timer/Counter Output Compare B Match Output)
PD3 INT1 (External Interrupt 1 Input)
PD2 INT0 (External Interrupt 0 Input)
PD1 TXD (USART Output Pin)
PD0 RXD (USART Input Pin)
2.2.3.5.RESET
RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi masukan low selama
minimal 2 machine cycle maka system akan di-reset.
2.2.3.6.XTAL1
XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke internal clock operating
circuit
2.2.3.7.XTAL2
XTAL2 adalah output dari inverting oscillator amplifier.
2.2.3.8.AVcc
Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus secara eksternal
terhubung ke Vcc melalui lowpass filter.
2.2.3.9.AREF
AREF adalah kaki masukan referensi bagi A/D Converter. Untuk operasionalisasi ADC, suatu
level tegangan antara AGND dan Avcc harus diberikan ke kaki ini.
5
2.2.3.10.AGND
AGND adalah kaki untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika board
memiliki analog ground yang terpisah
Tabel 2.4. Keterangan pin-pin Mikrokontroler ATMega 166
No Pin Nama Fungsi
1 PBO (XCK/TO) Port B.0/Counter/clock eksternal untuk USART (xck)
2 PB1 (T1) Port B.1/Counter 1
3 PB2 (INT2/AIN0) Port B.2/Input (+) Analog komparator (AIN0) dan
interupsi eksternal 2 (INT2)
8 PB7 (SCK) Port B.7/Sinyal Clock Serial SPI
9 RESET Me-reset Mikrokontroler
10 VCC Catu Daya (+)
11 GND Sinyal ground terhadap catu daya
12-13 XTAL2-XTAL1 Sinyal input Clock Eksternal (kristal)
14 PD0 (RXD) Port D.0/Penerima data serial
15 PD1 (TXD) Port D.1/Pengirim data serial
16 PD2 (INT0) Port D.2/Interupsi Eksternal 0
17 PD3 (INT1) Port D.3/Interupsi Eksternal 1
6
18 PD4 (OC1) Port D.4/Pembanding Timer-Counter 1
19 PD5 (OC1A) Port D.5/Output PWM 1 A
20 PD6 (ICP1) Port D.6/Timer-Counter 1 Input
21 PD7 (OC2) Port D.7/Output PWM 2
22 PC0 (SCL) Port C.0/Serial bus clock line
23 PC1 (SDA) Port C.1/Serial bus data input-output
24-27 PC2-PC5 Port C.2 –Port C.5
28 PC6 (TOSC1) Port C.6/Timer Osilator 1
29 PC7 (TOSC2) Port C.7/Timer Osilator 2
30 AVCC Tegangan ADC
31 GND Sinyal ground ADC
32 AREFF Tegangan referensi ADC
33-40 PA0 (ADC0) – PA7 (AD7) Port A.0 – Port A.7 dan input untuk ADC (8 channel
: ADC0-ADC7)
2.2.4. Arsitektur Mikrokontroler ATMega16
ATMega16 menggunakan arsitektur Harvard dengan memisahkan antara memori dan bus untuk
program dan data untuk memaksimalkan kemampuan dan kecepatan. Instruksi dalam memori
program dieksekusi dengan pipelining single level dimana ketika satu instruksi dieksekusi,
instruksi berikutnya diambil dari memori program. Konsep ini mengakibatkan instruksi
dieksekusi setiap siklus clock
- CPU terdiri dari 32 x 8 bit general purpose register yang dapat diakses dengan cepat dalam
satu siklus clock, yang mengakibatkan operasi Arithmetic Logic Unit (ALU) dapat dilakukan
dalam satu siklus. Pada operasi ALU, dua operand berasal dari register, kemudian operasi
- Operasi aritmetik dan logika pada ALU akan mengubah bit-bit yang terdapat pada Status
Register (SREG). Arsitektur Mikrokontroler ATMega 16 dapat dilihat pada Gambar 2.7 yang
terdapat di bawah ini.
2.2.5. Peta Memori Mikrokontroler ATMega16 2.2.5.1. Memori Program
Arsitektur ATMega16 mempunyai dua memori utama, yaitu memori data dan memori program.
Selain itu, ATMega16 memiliki memori EEPROM untuk menyimpan data. ATMega16 memiliki
16 Kbyte On-chip In-System Reprogrammable Flash Memory untuk menyimpan program.
Instruksi ATMega 16 semuanya memiliki format 16 atau 32 bit, maka memori flash diatur
dalam 8K x 16 bit. Memori flash dibagi kedalam dua bagian, yaitu bagian program boot dan
aplikasi seperti terlihat pada Gambar 2.8. Bootloader adalah program kecil yang bekerja pada
saat sistem dimulai yang dapat memasukkan seluruh program aplikasi ke dalam memori
prosesor.
Gambar 2.7. Peta Memori Mikrokontroler ATMega 167
2.2.5.2. Memori Data (SRAM)
Memori data AVR ATMega 16 terbagi menjadi 3 bagian, yaitu 32 register umum, 64 buah
register I/O dan 1 Kbyte SRAM internal. General purpose register menempati alamat data
terbawah, yaitu $00 sampai $1F. Sedangkan memori I/O menempati 64 alamat berikutnya mulai
dari $20 hingga $5F. Memori I/O merupakan register yang khusus digunakan untuk mengatur
fungsi terhadap berbagai fitur mikrokontroler seperti kontrol register, timer/counter,
fungsi-fungsi I/O, dan sebagainya. 1024 alamat berikutnya mulai dari $60 hingga $45F digunakan untuk
SRAM internal
Gambar 2.8. Peta Memori Mikrokontroler ATMega 167
7
2.2.5.3. Memori Data EEPROM
ATMega16 terdiri dari 512 byte memori data EEPROM 8 bit, data dapat ditulis/dibaca dari
memori ini, ketika catu daya dimatikan, data terakhir yang ditulis pada memori EEPROM masih
tersimpan pada memori ini, atau dengan kata lain memori EEPROM bersifat nonvolatile. Alamat
EEPROM mulai dari $000 sampai $1FF.
2.2.6. Software Mikrokontroler
Sebuah mikrokontroler tidak akan bekerja bila tidak diberikan program untuk diisikan ke dalam
mikrokontroler tersebut. Oleh karena itu, dalam tugas akhir ini akan digunakan perangkat lunak
CodeVisionAVR sebagai media penghubung antara program yang akan diisikan ke
mikrokontroler ATMega16 yang menggunakan bahasa C.
Pemrograman mikrokontroler AVR dapat menggunakan low level language (assembly)
dan high level language (C, Basic, Pascal, JAVA, dll) tergantung compiler yang digunakan.
Bahasa Assembler pada mikrokontroler AVR memiliki kesamaan instruksi, sehingga jika telah
menguasai pemrograman satu jenis mikrokontroler AVR, maka akan dengan mudah untuk
memprogram mikrokontroler AVR jenis lain, tetapi bahasa assembler relatif lebih sulit dipelajari
daripada bahasa C, untuk pembuatan suatu proyek yang besar akan memakan waktu yang lama,
serta penulisan programnya akan panjang. Sedangkan bahasa C memiliki keunggulan
dibandingkan bahasa assembly yaitu penyusunan program akan lebih sederhana dan mudah pada
proyek yang lebih besar. Bahasa C hampir bisa melakukan semua operasi yang dapat dikerjakan
oleh bahasa mesin.
CodeVisionAVR pada dasarnya merupakan perangkat lunak pemrograman mikrokontroler
keluarga AVR berbasis bahasa C. Ada tiga komponen penting yang telah diintegrasikan dalam
perangkat lunak ini: Compiler C, IDE dan program generator. Berdasarkan spesifikasi yang
dikeluarkan oleh perusahaan pengembangnya, Compiler C yang digunakan hampir
mengimplementasikan semua komponen standar. yang ada pada bahasa C standar ANSI (seperti
struktur program, jenis tipe data, jenis operator, dan library fungsi standar berikut
compiler C untuk mikrokontroler ini memiliki sedikit perbedaan yang disesuaikan dengan
arsitektur AVR tempat program C tersebut ditanamkan (embedded).
Khusus untuk library fungsi, disamping library standar (seperti fungsi-fungsi matematik,
manipulasi string, pengaksesan memori dan sebagainya), CodeVisionAVR juga menyediakan
fungsi-fungsi tambahan yang sangat bermanfaat dalam pemrograman antarmuka AVR dengan
perangkat luar yang umum digunakan dalam aplikasi kontrol. Beberapa fungsi library yang
penting diantaranya adalah fungsi-fungsi untuk pengaksesan LCD, komunikasi I2C, IC RTC
(Real time Clock), sensor suhu, SPI (Serial Peripheral Interface) dan lain sebagainya.
Untuk memudahkan pengembangan program aplikasi, CodeVisionAVR juga dilengkapi
IDE yang sangat user friendly. Selain menu-menu pilihan yang umum dijumpai pada setiap
perangkat lunak berbasis Windows, CodeVisionAVR ini telah mengintegrasikan perangkat lunak
downloader yang bersifat In System Programmer yang dapat digunakan untuk mentransfer kode
mesin hasil kompilasi ke dalam sistem memori mikrokontroler AVR yang sedang diprogram.
Selain itu, CodeVisionAVR juga menyediakan sebuah fitur yang dinamakan dengan Code
Generator atau CodeWizardAVR. Secara praktis, fitur ini sangat bermanfaat membentuk sebuah
kerangka program (template), dan juga memberi kemudahan bagi programmer dalam
peng-inisialisasian register-register yang terdapat pada mikrokontroler AVR yang sedang diprogram.
Dinamakan Code Generator, karena perangkat lunak CodeVision ini akan membangkitkan
kode-kode program secara otomatis setelah fase inisialisasi pada jendela CodeWizardAVR selesai
dilakukan. Penggunaan fitur ini pada dasarnya hampir sama dengan application wizard pada
bahasa-bahasa pemrograman visual untuk komputer.
2.3. Bahasa Pemrograman Mikrokontroler
Pengembangan sebuah system menggunakan mikrokontroler AVR buatan ATMEL
menggunakan software CodeVisionAVR. CodeVisionAVR merupakan software C-cross
Compiler, dimana program dapat ditulis dalam bahasa C, CodeVision memiliki IDE (Integrated
development Environment) yang lengkap, dimana penulisan program, compile, link, pembuatan
kode mesin (assembler) dan download program kechip AVR dapat dilakukan dengan
CodeVision, selain itu ada fasilitas terminal, yaitu melakukan komunikasi serial dengan
dapat menggunakan System Programmable Flash on-Chip mengizinkan memori program untuk
di program ulang dalam system menggunakan hubungan serial SPI.
2.3.1. Bahasa C
Bahasa C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat rendah
(bahasa yang berorientasi pada mesin) dan bahasa tingkat tinggi (bahasa yang berorientasi pada
manusia). Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk
mikrokontroler. Bahasa ini sudah merupakan high level language, dimana memudahkan
programmer menuangkan algoritmanya.
Kelebihan Bahasa C:
- Bahasa C tersedia hampir di semua jenis computer.
- Kode bahasa C sifatnya adalah portable dan fleksibel untuk semua jenis computer.
- Bahasa C hanya menyediakan sedikit kata-kata kunci. hanya terdapat 32 kata kunci.
- Proses executable program bahasa C lebih cepat
- Dukungan pustaka yang banyak.
- C adalah bahasa yang terstruktur
- Bahasa C termasuk bahasa tingkat menengah
Kekurangan Bahasa C:
- Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan
pemakai.
- Bagi pemula pada umumnya akan kesulitan menggunakan pointer.
2.3.2. Penulisan Program Dalam Bahasa C
#include <mega16.h>
#include <delay.h>
#define IRsensor PINA.o
{
Preprocessor (#) : digunakan untuk memasukkan (include) text dari file lain, mendefinisikan macro yang dapat mengurangi beban kerja pemrograman dan meningkatkan legibility source
code (mudah dibaca)
#define : digunakan untuk mendefinisikan macro Contoh : #define ALFA oxff
#define SUM(a,b) a+b
#define sensor PINA.2
#define pompa PORTB.o
Komentar
Penulisan komentar untuk beberapa baris komentar sekaligus
/*
….komentar
/*
…komentar untuk beberapa baris ..*/
Atau jika untuk satu baris saja //….komentar…
Inisialisasi
Program utama
..*/
Penulisan komentar untuk satu baris saja
//..komentar..
2.4. LCD (Liquid Crystal Display)
LCD adalah suatu display dari bahan cairan Kristal yang pengoperasiannya menggunakan system
dot matriks. LCD banyak digunakan sebagai display dari alat-alat elektronika seperti kalkulator,
multitester digital, jam digital, dan sebagainya. Adapun fitur yang disajikan dalam LCD ini
adalah :
a. Terdiri dari 16 karakter dan 2 baris.
b. Mempunyai 192 karakter tersimpan.
c. Terdapat karakter generator terprogram.
d. Dapat dialamati dengan mode 4-bit dan 8-bit.
e. Dilengkapi dengan back light.
COMMON SIGNAL
SEGMENT SIGNAL
SERIAL DATA
TIMING SIGNAL
Gambar 2.10. LCD (Liquid Crystal Display)8
LCD dapat dengan mudah dihubungkan dengan mikrokontroler AVR ATMega 16. LCD
yang digunakan dalam percobaan adalah LCD 2x16, lebar display 2 baris 16 kolom, yang
mempunyai 16 pin konektor.
Tabel 2.5. Pin LCD dan Fungsinya8
PIN Nama Pin Fungsi
1 VSS Ground Voltage
2 VCC +5V
3 VEE Contrast Voltage
4 RS Register Select
0 = Instruction Register
1 = Data Register
5 R/W Read/Write, to choose write or read mode
0 = write mode
1 = read mode
6 E Enable
0 = start to lacht data to LCD character
1 = disable
7 DB0 Data bit ke-0 (LSB)
8 DB1 Data bit ke-1
9 DB2 Data bit ke-2
8
10 DB3 Data bit ke-3
2.4.1. Cara kerja LCD (Liquid Crystal Display)
Pada aplikasi umumnya RW diberi logika rendah “0”. Bus data terdiri dari 4-bit atau 8-bit. Jika
jalur data 4-bit maka yang digunakan ialah DB4 sampai dengan DB7. Sebagaimana terlihat pada
tabel, interface LCD merupakan sebuah parallel bus, dimana hal ini sangat memudahkan dan
sangat cepat dalam pembacaan dan penulisan data dari atau ke LCD. Kode ASCII yang
ditampilkan sepanjang 8-bit dikirim ke LCD secara 4-bit atau 8 bit pada satu waktu.
Jika mode 4-bit yang digunakan, maka 2 nibble data dikirim untuk membuat sepenuhnya
8-bit (pertama dikirim 4-bit MSB lalu 4-bit LSB dengan pulsa clock EN setiap nibblenya). Jalur
kontrol EN digunakan untuk memberitahu LCD bahwa mikrokontroller mengirimkan data ke
LCD. Untuk mengirim data ke LCD program harus menset EN ke kondisi high “1” dan
kemudian menset dua jalur kontrol lainnya (RS dan R/W) atau juga mengirimkan data ke jalur
data bus.
Saat jalur lainnya sudah siap, EN harus diset ke “0” dan tunggu beberapa saat (tergantung
pada datasheet LCD), dan set EN kembali ke high “1”. Ketika jalur RS berada dalam kondisi
low “0”, data yang dikirimkan ke LCD dianggap sebagai sebuah perintah atau instruksi khusus
(seperti bersihkan layar, posisi kursor dan lain-lain). Ketika RS dalam kondisi high atau “1”, data
yang dikirimkan adalah data ASCII yang akan ditampilkan dilayar. Misal, untuk menampilkan
huruf “A” pada layar maka RS harus diset ke “1”. Jalur kontrol R/W harus berada dalam kondisi
low (0) saat informasi pada data bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi
Instruksi pembacaan hanya satu, yaitu Get LCD status (membaca status LCD), lainnya
merupakan instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W selalu
diset ke “0”. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih pengguna),
DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallel baik 4-bit atau
8-bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi interface LCD,
menentukan mode operasi merupakan hal yang paling penting.
Mode 8-bit sangat baik digunakan ketika kecepatan menjadi keutamaan dalam sebuah
aplikasi dan setidaknya minimal tersedia 11 pin I/O (3 pin untuk kontrol, 8 pin untuk
data).Sedangkan mode 4 bit minimal hanya membutuhkan 7-bit (3 pin untuk kontrol, 4 pin untuk
data). Bit RS digunakan untuk memilih apakah data atau instruksi yang akan ditransfer antara
mikrokontroller dan LCD. Jika bit ini di set (RS = 1), maka byte pada posisi kursor LCD saat itu
dapat dibaca atau ditulis. Jika bit ini di reset (RS = 0), merupakan instruksi yang dikirim ke LCD
atau status eksekusi dari instruksi terakhir yang dibaca.
2.5. ADC (Analog Digital Converter)
ADC merupakan sebuah alat pengkonversi sinyal analog ke sinyal digital. Biasanya ADC
terdapat dalam dua bentuk yaitu single chip dan integrated chip. Pada simulasi rangkaian ini
menggunakan integrated chip. Dinamakan integrated chip karena ADC nya sudah menjadi satu
dengan mikorkontroler ATMega 16.
Mikrokontroler ATMega 16 memiliki 8 channel ADC yaitu ADC0 - ADC7 yang bisa
mengkonversikan kedalam 8 bit data digital maupun 10 bit data digital. Walaupun terdapat 8
channel input ADC dalam proses konversi hanya bisa dilakukan pada 1 channel input dalam satu
waktu karena pengkonversi data analog ke digital didalam mikrokontroler itu sendiri hanya
terdapat satu yang dihubungkan dengan 8 channel input ADC. Proses dilakukan secara
Proses yang terjadi dalam ADC adalah :
Gambar 2.11. Diagram Block ADC9
1. Pen-cuplik-an
adalah proses mengambil suatu nilai pasti (diskrit) dalam suatu data kontinu dalam satu titik
waktu tertentu dengan periode yang tetap.
2. Peng-kuantisasi-an
adalah proses pengelompokan data diskrit yang didapatkan pada proses pertama ke dalam
kelompok-kelompok data. Kuantisasi, dalam matematika dan pemrosesan sinyal digital,
adalah proses pemetaan nilai input seperti nilai pembulatan.
3. Peng-kode-an
adalah meng-kode-kan data hasil kuantisasi ke dalam bentuk digital (0/1) atau dalam suatu
nilai biner.
2.5.1. Prinsip kerja ADC
ADC adalah proses pengubahan sinyal analog menjadi sinyal digital. Proses pengubahan terjadi
pada konverter/pengubah yang dikenal dengan analog to digital converter. Proses pengubahan
ini dikenal juga dengan nama sistem akusisi data. Terdapat empat macam ADC yang memenuhi
standar industri, yaitu integrating, tracking converter, successive approximation dan
flash/paralel. Keempat jenis ADC tersebut mewakili beberapa macam pertimbangan diantaranya
resolusi, kecepatan konversi dan biaya.
Prinsip kerja dari ADC adalah dengan banyak masukan, terutama yang berasal dari
transduser, yang merupakan isyarat analog yang harus disandikan menjadi informasi digital
sebelum masukan itu diproses, dianalisa atau disimpan didalam kalang digital. Pengubah
9
mengambil masukan, mencobanya, dan kemudian memproduksi suatu kata digital bersandi yang
sesuai dengan taraf dari isyarat analog yang sedang diperiksa. Keluaran digital bisa berderet (bit
demi bit) atau berjajar dengan semua bit yang disandikan disajikan serentak. Dalam sebagian