BAB II TEORI - Alat Ukur Densitas Debu di Udara Berbasis Mikrokontroler

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.

  

(a)

  

(b)

   Gambar 2.2 : (a). Internal Schematic (b) Outline Dimensions 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 :

  • Berbasis Inframerah • Output tegangan : analog, semakin tinggi intensitas debu semakin tinggi nilai tegangan output

  3

  • Sensitivitas : 0,5/01.mg/m
  • 1 • Suplai tegangan: 5-7 V

      Sumber Referensi : Datasheet GP2Y1010AU0F Optical Dust Sensor

    • 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 dan dokumentasi yang memadai, dan memerlukan komponen pendukung yang sangat

      software

      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.

       2 Gambar 2.3. Diagram blok contoh perkembangan mikrokontroler ATMEL Sumber Referensi : Bejo, Agus. 2005. C & AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler

      ATMega8535 . Edisi Pertama. Yogyakarta : Gava Media

      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, , Watchdog Timer, PWM, Port I/O, komunikasi serial, Komparator, I2C, dll). Di

      Timer/Counter

      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 19. Port USART programmable untuk komunikasi serial

    Gambar 2.4. Block Diagram Mikrokontroler ATMega 16

      

    3 Sumber Referensi : DataSheet ATMega 16

    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 16

      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: 1.

      Vcc merupakan pin yang berfungsi sebagai masukan catu daya.

      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. 4 AVCC merupakan pin masukan tegangan untuk ADC .

      Sumber Referensi : DataSheet ATMega 16

    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

      LED secara langsung. Data Direction Register port A (DDRA) harus disetting terlebih

      display

      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

      LED secara langsung. Data Direction Register port B (DDRB) harus disetting terlebih

      display

      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.

      5 Tabel 2.1. Fungsi Pin-pin Port B

      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) PB2 AIN0 (Analaog Comparator)

      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.

      5 Tabel 2.2. Fungsi Pin-pin Port C

      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 memfungsikan pin-pin port D yang bersesuaian sebagai input, atau diisi 1 jika sebagai output.

      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 D

      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 5 level tegangan antara AGND dan Avcc harus diberikan ke kaki ini.

      

    Sumber Referensi : Adrianto, Heri (2013). Pemrograman Mikrokontroler AVR ATmega 16 Menggunakan Bahasa

    C (CodeVisionAVR) . Bandung : Penerbit INFORMATIKA

    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 16

      No Pin Nama Fungsi

      1 PBO (XCK/TO) B.0/Counter/clock eksternal untuk USART (xck)

      Port

      2 PB1 (T1) Port B.1/Counter 1

      3 PB2 (INT2/AIN0) Port B.2/Input (+) Analog komparator (AIN0) dan interupsi eksternal 2 (INT2)

      4 PB3 (OC0/AIN1) Port B.3/Input (-) Analog komparator (AIN1) dan

      

    output PWM 0

      5 PB4 (SS) Port B.4/SPI Slove Select Input (SS)

      6 PB5 (MOSI) Port B.5/SPI bus Master Out Slave In

      7 PB6(MISO) B.6 SPI bus Master In Slave Out

      Port

      8 PB7 (SCK) B.7/Sinyal Clock Serial SPI

      Port

      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) D.0/Penerima data serial

      Port

      15 PD1 (TXD) Port D.1/Pengirim data serial

      16 PD2 (INT0) Port D.2/Interupsi Eksternal 0

      17 PD3 (INT1) D.3/Interupsi Eksternal 1 6 Port

      Sumber Referensi : Bejo, Agus. 2005. C & AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler ATMega8535

      . Edisi Pertama. Yogyakarta : Gava Media

      18 PD4 (OC1) Port D.4/Pembanding Timer-Counter 1

      19 PD5 (OC1A) Port D.5/Output PWM 1 A

      20 PD6 (ICP1) D.6/Timer-Counter 1 Input

      Port

      21 PD7 (OC2) D.7/Output PWM 2

      Port

      22 PC0 (SCL) C.0/Serial bus clock line

      Port

      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) C.7/Timer Osilator 2

      Port

      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

    • 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 dieksekusi dan hasilnya disimpan kembali pada register dalam satu siklus clock

      CPU terdiri dari 32 x 8 bit general purpose register yang dapat diakses dengan cepat dalam

    • Registe r (SREG). Arsitektur Mikrokontroler ATMega 16 dapat dilihat pada Gambar 2.7 yang

      terdapat di bawah ini.

      Operasi aritmetik dan logika pada ALU akan mengubah bit-bit yang terdapat pada Status

    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.

      7 Gambar 2.6. Arsitektur Mikrokontroler ATMega 16

      7 Gambar 2.7. Peta Memori Mikrokontroler ATMega 16

    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

       7 Gambar 2.8. Peta Memori Mikrokontroler ATMega 16 Sumber Referensi : DataSheet ATMega 16

    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. pada dasarnya merupakan perangkat lunak pemrograman mikrokontroler

      CodeVisionAVR

      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 penamaannya). Tetapi walaupun demikian, dibandingkan bahasa C untuk aplikasi komputer, 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 , dimana program dapat ditulis dalam bahasa C, CodeVision memiliki IDE (Integrated

      Compiler

      ) yang lengkap, dimana penulisan program, compile, link, pembuatan

      development Environment

      kode mesin (assembler) dan download program kechip AVR dapat dilakukan dengan , selain itu ada fasilitas terminal, yaitu melakukan komunikasi serial dengan

      CodeVision

      mikrokontroler yang sudah di program. Proses download program ke IC mikrokontroler AVR dapat menggunakan System Programmable Flash on-Chip mengizinkan memori program untuk di program ulang dalam system menggunakan hubungan serial SPI.

      C

    2.3.1. Bahasa

      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:
    • pemakai.

      Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan

    • 2.3.2. Penulisan Program Dalam Bahasa C

      Bagi pemula pada umumnya akan kesulitan menggunakan pointer.

      #include <mega16.h>

      Preprocessor (#) :

      #include <delay.h> Digunakan untuk memasukkan

      #define

      IRsensor PINA.o (include) text dari file lain dan mendefinisikan macro #define pompa PORTB. //variable glodal Unsigned int i, j; Void main (void)

      { //variable local

      /* …komentar untuk beberapa baris

      Char data_rx; Inisialisasi

      ..*/ DDRA=oxoo;

      Atau jika untuk satu baris saja PORTA=oxFF;

      //….komentar… DDRB=oxFF; PORTB=oxoo; …….

      …… While

      Program utama {

      Program akan berulang terus karena syarat while (1) akan …… selalu menghasilkan nilai benar (true) …… …… }; } Penjelasan :

      

    Preprocessor (#) : digunakan untuk memasukkan (include) text dari file lain, mendefinisikan

      yang dapat mengurangi beban kerja pemrograman dan meningkatkan legibility source

      macro

      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

      ..*/ 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 . LCD banyak digunakan sebagai display dari alat-alat elektronika seperti kalkulator,

      dot matriks

    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.

      LCD DB0..DB7 COMMON SIGNAL RS SEGMENT SIGNAL R/W

      SEGMENT E CONTROLLER SERIAL DATA DRIVER

      VDD

      VSS TIMING SIGNAL

      VLC

      8 Gambar 2.9. Block Diagram LCD

      8 Gambar 2.10. LCD (Liquid Crystal Display)

      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 Fungsinya

      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 8

      9 DB2 Data bit ke-2

      

    Sumber Referensi : Adrianto, Heri (2013). Pemrograman Mikrokontroler AVR ATmega 16 Menggunakan Bahasa

    C (CodeVisionAVR)

      . Bandung : Penerbit INFORMATIKA

      10 DB3 Data bit ke-3

      11 DB4 Data bit ke-4

      12 DB5 Data bit ke-5

      13 DB6 Data bit ke-6

      14 DB7 Data bit ke-7 (MSB)

      15 BPL Back Plane Light

      16 GND Ground Voltage

    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

    high “1”, maka program akan melakukan query (pembacaan) data dari LCD.

      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 bergantian dari channel 0-7. Proses yang terjadi dalam ADC adalah :

       Gambar 2.11. Diagram Block ADC 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

      . Keempat jenis ADC tersebut mewakili beberapa macam pertimbangan diantaranya

      flash/paralel 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 9 sebelum masukan itu diproses, dianalisa atau disimpan didalam kalang digital. Pengubah

      Sumber Referensi : Purnama, Agus.2012. http://elektronika-dasar.web.id/teori-elektronika/adc-analog-to-digital- convention/) 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 besar pengubah, isyarat harus ditahan mantap selama proses pengubahan.