BAB II LANDASAN TEORI 2.1 Water Flow Sensor G1/2 Water Flow Sensor ini terdiri terbuat dari plastik dimana didalamnya terdapat rotor dan sensor Hall Effect. Saat air mengalir melewati rotor, rotor akan berputar. Kecepatan putaran ini akan sesuai dengan besarnya aliran air. Output dari sensor Hall Effect merupakan pulsa. Kelebihan sensor ini adalah hanya membutuhkan 1 sinyal (SIG) selain jalur 5V dc dan Ground. Perhatikan gambar di bawah ini. Gambar 2.1 Water Flow Sensor G1/2 Gambar 2.2 Mechanic Dimensi Water Flow sensor G1/2 Universitas Sumatera Utara Tabel 2.1 Komponen Sensor Tabel 2.2 Spesifikasi Sensor Universitas Sumatera Utara Water Flow Sensor ini terdiri atas katup plastik, rotor air, dan sebuah sensor HallEffect. Prinsip kerja sensor ini adalah dengan memanfaatkan fenomena efek Hall. Efek Hall ini didasarkan pada efek medan magnetik terhadap partikel bermuatan yang bergerak. Ketika ada arus listrik yang mengalir pada device efek Hall yang ditempatkan dalam medan magnet yang arahnya tegak lurus arus listrik, pergerakan pembawa muatan akan berbelok ke salah satu sisi dan menghasilkan medan listrik. Medan listrik terus membesar hingga gaya Lorentz yang bekerja pada partikel menjadi nol. Perbedaan potensial antara kedua sisi divais tersebut disebut potensial Hall. Potensial Hall ini sebanding dengan medan magnet dan arus listrik yang melalui device. 2.2 Mikrokontroler AVR AT MEGA 16 Mikrokontroler adalah sebuah sistem komputer lengkap dalam satu chip. Mikrokontroler lebih dari sekedar sebuah mikroprosesor karena sudah terdapat atau berisikan ROM (ReadOnly Memory), RAM (Read-Write Memory), beberapa port masukan maupun keluaran, dan beberapa peripheral seperti pencacah/pewaktu, ADC (Analog to Digital converter), DAC (converter Digital to Analog) dan serial komunikasi. Salah satu mikrokontroler yang banyak digunakan saat ini yaitu mikrokontroler AVR. AVR adalah mikrokontroler RISC (Reduce Instuction Set Computer) 8 bit berdasarkan arsitektur Harvard. Secara umum mikrokontroler AVR dapat dapat dikelompokkan menjadi 3 kelompok, yaitu keluarga AT90Sxx, ATMega dan ATtiny. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fiturnya Seperti mikroprosesor pada umumnya, secara internal mikrokontroler ATMega16 terdiri atas unit-unit fungsionalnya Arithmetic and Logical Unit (ALU), himpunan register kerja, register dan dekoder instruksi, dan pewaktu serta komponen kendali lainnya. Berbeda dengan mikroprosesor, mikrokontroler menyediakan memori dalam chip yang sama dengen prosesornya (in chip). AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis arsitektur RISC (Reduced Instruction Set Computer). Hampir semua instruksi dieksekusi dalam satu siklus clock. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan mode power saving, ADC dan PWM internal. AVR juga mempunyai In-System Programmable Flash on-chip yang mengijinkan memori program untuk diprogram ulang dalam sistem menggunakan hubungan serial SPI. ATMega16. ATMega16 mempunyai throughput mendekati 1 MIPS per MHz membuat disainer sistem untuk mengoptimasi konsumsi daya versus kecepatan proses. Beberapa keistimewaan dari AVR ATMega16 antara lain: Universitas Sumatera Utara 1. Advanced RISC Architecture 130 Powerful Instructions – Most Single Clock Cycle Execution 32 x 8 General Purpose Fully Static Operation Up to 16 MIPS Throughput at 16 MHz On-chip 2-cycle Multiplier 2. Nonvolatile Program and Data Memories 8K Bytes of In-System Self-Programmable Flash Optional Boot Code Section with Independent Lock Bits 512 Bytes EEPROM 512 Bytes Internal SRAM Programming Lock for Software Security 3. Peripheral Features Two 8-bit Timer/Counters with Separate Prescalers and Compare Mode Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode Real Time Counter with Separate Oscillator Four PWM Channels 8-channel, 10-bit ADC Byte-oriented Two-wire Serial Interface Programmable Serial USART 4. Special Microcontroller Features Power-on Reset and Programmable Brown-out Detection Internal Calibrated RC Oscillator External and Internal Interrupt Sources Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby 5. I/O and Package 32 Programmable I/O Lines 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF 6. Operating Voltages 2.7 - 5.5V for Atmega16L 4.5 - 5.5V for Atmega16 Universitas Sumatera Utara 2.2.1 Konfigurasi Pena (Pin) Atmega16 Konfigurasi pena (pin) mikrokontroler Atmega16 dengan kemasan 40-pena dapat dilihat pada Gambar 2.2. Dari gambar tersebut dapat terlihat ATMega16 memiliki 8 pena untuk masingmasing bandar A (Port A), bandar B (Port B), bandar C (Port C), dan bandar D (Port D). Gambar 2.3 Pin ATMEGA 16 2.2.2 Deskripsi Mikrokontroler Atmega16 • VCC (Power Supply) dan GND(Ground) • Bandar A (PA7-PA0) • Bandar B (PB7-PB0) • Bandar C (PC7-PC0) • Bandar D (PD7-PD0) • RESET (Reset input) • XTAL1 (Input Oscillator) 2.2.3 Peta Memori ATMega16 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 16K byte On-chip In-System Reprogrammable Flash Memory untuk menyimpan program. Instruksi ATMega16 semuanya memiliki format 16 atau 32 bit, maka memori flash diatur dalam 8K x 16 bit. Memori flash dibagi kedalam dua bagian, yaitu bagian Universitas Sumatera Utara program boot dan aplikasi. Bootloader adalah program kecil yang bekerja pada saat sistem dimulai yang dapat memasukkan seluruh program aplikasi ke dalam memori prosesor. Gambar 2.4 Peta Memori 2. Memori Data (SRAM) Memori data AVR ATMega16 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. 2.3 MAX 232 IC MAX232 adalah IC rangkaian antar muka dual RS-232 transmitter/receiver yang memenuhi standar EIA-232-E. IC MAX232 hanya membutuhkan power supply 5V (single power supply) sebagai catu. IC MAX232 berfungsi untuk merubah level tegangan pada COM komputer menjadi level tegangan TTL/CMOS. IC MAX232 terdiri atas tiga bagian yaitu dual charge-pump voltage converter, driver RS232, dan receiver RS232. Berikut gambar IC MAX232 dan pin out IC MAX232. Universitas Sumatera Utara Gambar 2.6 IC MAX 232 IC MAX232 memiliki dua charge-pump internal yang berfungsi sebagai konverter tegangan +5V menjadi ±10V saat tanpa beban untuk operasi driver RS232. Konverter pertama menggunakan kapasitor C1 untuk menggandakan tegangan input +5V menjadi +10V saat C3 berada pada output V+. Konverter kedua menggunakan kapasitor C2 untuk merubah +10V menjadi -10V saat C4 berada pada output V-. Berikut skematik rangkaian media komunikasi serialnya. Gambar 2.7 Skematik Rangkaian Media Komunikasi Serial 2.4 Komunikasi Serial Komunikasi serial ialah pengiriman data secara serial (data dikirim satu persatu secara berurutan dan bergantian), sehingga komunikasi serial lebih lambat daripada komunikasi paralel. Universitas Sumatera Utara 2.4.1 Prinsip Kerja Port Serial Perangkat yang menggunakan kabel serial untuk komunikasinya dibagi ke dalam dua kategori. Yaitu DCE (Data Communications Equipment) dan DTE (Data Terminal Equipment). Data Communications Equipment adalah perangkat seperti modem, TA adapter, plotter dan lain-lain, sedangkan Data Terminal Equipment adalah komputer atau terminal. Untuk menjamin terjadinya sebuah transfer data yang cepat dan realible antara 2 peralatan, lalu lintas data harus dikoordinasi dengan baik. Tidak seperti printer yang selalu mencetak setiap karakter yang diterimanya. Namun dalam komunikasi serial, bisa saja peralatan tidak memiliki lagi tampungan data yang diterimanya. Sehingga harus memberitahukan PC untuk tidak lagi mengirim data. Hingga modem selesai mengerjakan semua tugasnya dan kembali memberitahukan PC untuk kembali mengirim data berikutnya setelah modem siap. Pada tabel berikut terdapat nama pin yang dipakai oleh DB-9 beserta keterangannya. Tabel 2.3 Konfigurasi Pin DB9 2.5 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). Seperti yang diketahui, bahasa tingkat tinggi mempunyai kompatibilitas antara platform. Karena itu, amat mudah untuk membuat program pada berbagai mesin. Berbeda halnya dengan menggunakan bahasa mesin, sebab setiap perintahnya sangat bergantung pada jenis mesin. Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada tahun 1972. C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk blok. Tujuannya untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan bahasa C mudah sekali dipindahkan dari satu jenis program ke bahasa program lain. Hal ini karena adanya standarisasi bahasa C yaitu berupa standar ANSI (American National Standar Institut) yang dijadikan acuan oleh para pembuat Universitas Sumatera Utara kompiler.jenis mesin. Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada tahun 1972. C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk blok. Tujuannya untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan bahasa C mudah sekali dipindahkan dari satu jenis program ke bahasa program lain. Hal ini karena adanya standarisasi bahasa C yaitu berupa standar ANSI ( American National Standar Institut) yang dijadikan acuan oleh para pembuat kompiler. 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 penempatan ini hanya menegaskan bahwa c bukan bahasa pemrograman yang berorientasi pada mesin. yang merupakan ciri bahasa tingkat rendah. melainkan berorientasi pada obyek tetapi dapat dinterprestasikan oleh mesin dengan cepat. secepat bahasa mesin. inilah salah satu kelebihan c yaitu memiliki kemudahan dalam menyusun programnya semudah bahasa tingkat tinggi namun dalam mengesekusi program secepat bahasa tingkat rendah. Kekurangan Bahasa C: - Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan pemakai. - Bagi pemula pada umumnya akan kesulitan menggunakan pointer. Struktur Bahasa Pemrograman C <preprosesor directive> { <statement>; <statement>; } Contoh : Universitas Sumatera Utara Penjelasan : 1. Header File Header File adalah berkas yang berisi prototype fungsi. definisi konstanta. dan definisi variable. Fungsinya adalah kumpulan code C yang diberi nama dan ketika nama tersebut dipanggil maka kumpulan kode tersebut dijalankan. File header yang digunakan untuk mendefinisikan jenis mikrokontroler yang digunakan berfungsi sebagai pengarah yang mana pendeklarasian register-register yang terdapat program difungsikan untuk jenis mikrokontroler apa yang digunakan ( pada software Code Vision AVR ) contohnya di bawah ini: Contoh : #include <mega8535.h> #include<delay.h> #include <stdio. h> 2. Preprosesor Directive (#include) Preprosesor directive adalah bagian yang berisi pengikutsertaan file atau berkas-berkas fungsi maupun pendefinisian konstanta. Contoh: #include <stdio.h> #include phi 3.14 3. Void Void artinya fungsi yang mengikutinya tidak memiliki nilai kembalian (return). 4. Main ( ) Fungsi main ( ) adalah fungsi yang pertama kali dijalankan ketika program dieksekusi tanpa fungsi main suatu program tidak dapat dieksekusi namun dapat dikompilasi. Universitas Sumatera Utara 5. Statement Statement adalah instruksi atau perintah kepada suatu program ketika program itu dieksekusi untuk menjalankan suatu aksi. Setiap statement diakhiri dengan titik-koma (;). 2.5.1 Kata Kunci (Keyword) Kata kunci-kata kunci yang terdapat di C, sebagai berikut: Tabel 2.4 Kata-Kata Kunci 2.5.2 Identifier Identifier atau nama pengenal adalah nama yang ditentukan sendiri oleh pemrogram yang digunakan untuk menyimpan nilai, misalnya nama variable, nama konstanta, nama suatu elemen (misalnya: nama fungsi, nama tipe data, dll). Identifier punya ketentuan sebagai berikut : 1. Maksimum 32 karakter (bila lebih dari 32 karakter maka yang diperhatikan hanya 32 karakter pertama saja). 2. Case sensitive: membedakan huruf besar dan huruf kecilnya. 3. Karakter pertama harus karakter atau underscore ( _ ) . selebihnya boleh angka. 4. Tidak boleh mengandung spasi atau blank. 5. Tidak boleh menggunakan kata yang sama dengan kata kunci dan fungsi. 2.5.3 Variabel Variabel adalah identifier yang nilainya dapat berubah atau diubah selama program berjalan (dieksekusi). Pengubahnya adalah user atau proses. - Deklarasi variabel (tipe_data nama_variabel;) Universitas Sumatera Utara Variabel yang akan digunakan dalam program haruslah dideklarasikan terlebih dahulu. Pengertian deklarasi di sini berarti memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya. Contoh : Int a, b, c; - Inisialisasi variabel (tipe_data nama_variabel = nilai;) Int a=15, b=7, c=0 2.5.4 Konstanta Konstanta adalah identifier yang nilainya tetap selama program berjalan/ dieksekusi. Cara untuk mengubahnya hanya melalui source codenya saja seperti halnya variabel, konstanta juga memiliki tipe. Penulisan konstanta mempunyai aturan tersendiri, sesuai dengan tipe masing-masing. 1. Konstanta karakter misalnya ditulis dengan diawali dan diakhiri dengan tanda petik tunggal, contohnya : ‘A’ dan ‘@’. 2. Konstanta integer ditulis dengan tanda mengandung pemisah ribuan dan tidak mengandung bagian pecahan, contohnya : –1 dan 32767. 3. Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa titik) dan nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e), contohnya : 27.5f (untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5 (maksudnya 2,1 x 105 ). 4. Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda petikganda (“), contohnya :“Pemrograman Dasar C”. Contoh : 2.5.5 Tipe Data Dasar Data merupakan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel. Konstanta menyatakan nilai yang tetap, sedangkan variabel menyatakan nilai yang dapat diubah-ubah selama eksekusi berlangsung. Universitas Sumatera Utara Tabel 2.5 Ukuran Memori untuk Tipe Data Untuk mengetahui ukuran memory bisa dipakai fungsi sizeof (<tipe_data>). Catatan: Ukuran dan kawasan dari masing-masing tipe data adalah bergantung pada jenis mesin yang digunakan (misalnya mesin 16 bit bisa jadi memberikan hasil berbeda dengan mesin 32 bit). Untuk menampilkan hasil output dibutuhkan kode format, berikut adalah daftar kode format: Tabel 2.5 Daftar Kode Format Universitas Sumatera Utara 2.5.6 Karakter Escape Karakter escape adalah karakter yang diawali dengan tanda backslash (/), yang masingmasing memiliki makna tertentu. Berikut adalah daftar karakter: Tabel 2.6 Karakter Escape 2.5.7 Operator Aritmatika Operator aritmatika digunakan untuk melakukan proses perhitungan matematika. Fungsifungsi matematika yang terdapat pada bahasa C dapat dilihat pada tabel di bawah ini: Tabel 2. 7 Operator Aritmatika Contoh penggunaan operator aritmatika dapat dilihat di bawah ini, #include < mega8535.h> Universitas Sumatera Utara #include <delay.h> void main (void) { unsigned char a, b; a = 0x03; b = 0x05; DDRC 0XFF; // PORTC digunakan sebagai output while (1) { PORTC = (a * b); delay_ms(500); } } 2.5.8 Operator Pembanding Operator pembanding digunakan untuk membandingkan 2 data atau lebih. Hasil operator akan di jalankan jika pernyataan benar dan tidak dijalankan jika salah. Operator pembanding dapat kita lihat pada tabel di bawah ini: Tabel 2.8 Operator Pembanding 2.5.9 Operator Logika Operator logika digunakan untuk membentuk logika dari dua pernyataan atau lebih. Operator logika dapat dilihat pada tabel di bawah ini: Universitas Sumatera Utara Tabel 2.9 Operator Logika #include < mega8535.h> #include <delay.h> void main (void) { DDRC = 0XFF; // sebagai output DDRA = 0X00; // sebagai input while (1) { If ( PINA.0 == 1 )|| (PINA.1 == 1 ){ PORTC = 0XFF; delay_ms(500); PORTC = 0X00; Delay_ms(500); } else{ PORTC = 0x00; delay_ms(500); } } } Penjelasan program: Apabila PINA.0 atau PINA.1 diberi input logika 1 maka PORTC akan mengeluarkan logika 0xff kemudian logika 0x00 secara bergantian dengan selang waktu 0,5 s. dan apabila bukan PINA.1 atau PINA.0 diberi logika 1 maka PORTC akan mengeluarkan logika 0x00. 2.5.10 Operator Bitwise Operator logika ini bekerja pada level bit. Perbedaan Operator Bitwise dengan operator logika adalah pada operator logika akan menghasilkan pernyataan benar atau salah Universitas Sumatera Utara sedangkan pada operator bitwise akan menghasilkan data biner. Operator Bitwise dapat dilihat pada tabel di bawah ini: Tabel 2.10 Operator Bitwise Contoh program: #include <mega8535.h> #include <delay.h> void main (void) { unsigned char a,b,c; DDRC = 0xff; //portc sebagai o while (1) { a = 0x12; b = 0x34; c = a & b; PORTC = c; delay_ms(500); }; } Penjelasan program: a = 0x12 = 0001 0010 b = 0x32 = 0011 0000 ------------------------a & b = 0x10 = 0001 0000 Universitas Sumatera Utara 2.5.11 Operator Penambahan dan Pengurangan Operator ini digunakan untuk menaikkan atau menurunkan nilai suatu variabel dengan selisih 11. Operator ini dapat dilihat pada tabel di bawah ini: Tabel 2.11 Operator Penambahan dan Pengurangan 2.5.12 Pernyataan If dan If Bersarang Pernyataan if digunakan untuk pengambilan keputusan terhadap 2 atau lebih pernyataan dengan menghasilkan pernyataan benar atau salah. Jika pernyataan benar maka akan di jalankan instruksi pada blok nya, sedangkan jika pernyataan tidak benar maka instruksi yang pada blok lain yang dijalankan ( sesuai dengan arah programnya). Bentuk pernyataan IF adalah sebagai berikut: 1. Bentuk sederhana if (kondisi){ Pernyataan_1; Pernyataan_2; ............; } 2. Pernyataan else if (kondisi) { Pernyataan_1; ............; } else { Pernyataan_2; ............; } 2.5.13 If di dalam if Pernyataan ini sering disebut nested if atau if bersarang. Salah satu bentuknya adalah sebagai berikut: Universitas Sumatera Utara if (kondisi1) Pernyataan_1; else if (kondisi2) pernyataan_2; else if (kondisi3) pernyataan_3; else pernyataan; contoh program: if ( PINA.0 = =1) { PORTC = 0xff; } else { PORTC = 0x00; } Jika PINA.0 diberi input logika 1 maka PORTC akan mengeluarkan logika 0xff, jika yang pernyataan yang lain maka PORTC akan mengeluarkan logika 0x00. 2.5.14 Pernyatan While Pernyataan while digunakan untuk menguangi sebuah pernyataan atau blok kenyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut : while (kondisi) { // sebuah pernyataan atau blok pernyataan } Jika pernyataan yang akan diulang hanya berupa sebuah pernyataan saja maka tanda { dan } bias dihilangkan. Contoh : unsigned char a=0; ….. while (a<10) Universitas Sumatera Utara { PORTC=a; a++; Pernyataan di atas akan mengeluarkan data a ke port C secara berulang-ulang. Setiap kali pengulangan nilai a akan bertambah 1 dan setelah niai a mencapai 10 maka pengulangan selesai. 2.6 Code Vision AVR CodeVision AVR merupakan sebuah software yang digunakan untuk memprogram mikrokontroler sekarang ini telah umum. Mulai dari penggunaan untuk kontrol sederhana sampai kontrol yang cukup kompleks, mikrokontroler dapat berfungsi jika telah diisi sebuah program, pengisian program ini dapat dilakukan menggunakan compiler yang selanjutnya diprogram ke dalam mikrokontroler menggunakan fasilitas yang sudah di sediakan oleh program tersebut. Salah satu compiler program yang umum digunakan sekarang ini adalah CodeVision AVR yang menggunakan bahasa pemrograman C. CodeVision AVR mempunyai suatu keunggulan dari compiler lain, yaitu adanya codewizard, fasilitas ini memudahkan kita dalam inisialisasi mikrokontroler yang akan kita gunakan. Gambar 2.5 Tampilan CodeVision AVR Universitas Sumatera Utara 2.6 Visual Basic Visual Basic adalah bahasa pemrograman yang digunakan untuk membuat aplikasi yang berbasis grafis (GUI Graphical User Interface) dan Visual Basic ini sangat disukai oleh penggunanya karena fasilitas pemrograman yang disediakan sangat banyak serta sangat terbuka dalam penambahan komponen. Kemampuan dari Visual Basic : a. Dapat menghasilkan file-file eksekusi atau bersifat executable (file berakhiran *.EXE) sehingga dapat dijalankan dengan memanggil nama file tersebut. b. Dapat membuat program-program aplikasi yang berbasis windows. c. Dapat membuat objek-objek program bantu seperti ActiveX, Aplikasi Internet, file Help dan sebagainya d. Sangat mendukung sebagai pengelola database server dan pembuatan program mutisiuser. Gambar 2.6 Tampilan Visual Basic Universitas Sumatera Utara