• Tidak ada hasil yang ditemukan

SISTEM PENGATUR PENGISIAN TANGKI AIR 2L MENGGUNAKAN SENSOR FLOW METER BERBASIS MIKROKONTROLER ATmega8 TUGAS AKHIR TRIANA PIDAYANTI SITUMEANG

N/A
N/A
Protected

Academic year: 2022

Membagikan "SISTEM PENGATUR PENGISIAN TANGKI AIR 2L MENGGUNAKAN SENSOR FLOW METER BERBASIS MIKROKONTROLER ATmega8 TUGAS AKHIR TRIANA PIDAYANTI SITUMEANG"

Copied!
89
0
0

Teks penuh

(1)

SISTEM PENGATUR PENGISIAN TANGKI AIR 2L MENGGUNAKAN SENSOR FLOW METER BERBASIS MIKROKONTROLER ATmega8

TUGAS AKHIR

TRIANA PIDAYANTI SITUMEANG 142408026

PROGRAM STUDI D-III FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(2)

SISTEM PENGATUR PENGISIAN TANGKI AIR 2L MENGGUNAKAN SENSOR FLOW METER

BERBASIS MIKROKONTROLER ATmega8

TUGAS AKHIR

Diajukan Untuk Melengkapi Tugas Dan Memenuhi Syarat Memperoleh AhliMadya

TRIANA PIDAYANTI SITUMEANG 142408026

PROGRAM STUDI D-III FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

2017

(3)

PERSETUJUAN

Judul : Sistem Pengatur Pengisian Tangki Air 2 L Menggunakan Sensor Flow Meter

Berbasis Mikrokontoler ATMega8

Katagori : TugasAkhir

Nama : TrianaPidayantiSitumeang

Nim : 142408026

Program Studi : D-III Fisika Departemen : Fisika

Fakultas : MatematikaIlmuPengetahuanAlam

Disetujui di Medan, Juli 2017

Disetujui Oleh

Ketua Program Studi D-III Fisika Dosen Pembimbing

( Drs. TakdirTamba,M.Eng.Sc) (Dr.KeristaTarigan,M.Eng.Sc.)

(4)

PENGHARGAAN

Puji dan Syukur penulis panjatkan kepada Allah SWT,denganlimpahan berkat-Nya penyusunan Proyek ini dapat diselesaikan.

Ucapan terima kasih penulis sampaikan Kepada berbagai pihak yang telah banyak membantu penulis dalam penyelesaikan Laporan Proyek ini yaitu Kepada Bapak Dr.Kerista Sebayang,MS,Selaku Dekan Fakultas Matematika Dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.Bapak Drs.Takdir Tamba,M.Eng.Sc Selaku Ketua program studi D-III Fisika Fakultas FMIPA Universitas Sumatera Utara.Bapak Dr.Kerista Tarigan,M.Eng,Sc,Selaku pembimbing yang telah membimbing dan mengarahkan kepada penulis dalam menyelesaikan laporan Tugas Akhir.Bapak Awan Maghfirah,S.Si,M.Si,Selaku dosen penguji yang telah memberikan kritisi membangun terhadap laporan Tugas Akhir saya.Seluruh staf pengajar/pegawai Fakultas Matematika Dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.Ayah dan Ibu tercinta yang telah memberikan bantuan berupa dukungan moril dan material yang sangat membantu dalam menyelesaikan laporan Tugas Akhir.Senior kami Fathurraman yang telah memberikan bantuan berupa ilmu dan motivasi dala menyelesaikan laporan Tugas Akhir.Rekan Fisika D-III yang memberikan bantuan penulisan untuk menyelesaikan laporan.

Penulis menyadari bahwa penyusunan Tugas Akhir ini masih terdapat banyak kekurangan dan kelemahan.Untuk itu penulis mengharapkan kritik dan saran dari semua pihak guna penyempurnaan di masa yang akan datang.

Akhir kata semoga Tugas Akhir ini dapat bermanfaat bagi rekan-rekan Mahasiswa dan pembaca sekalian demi menambah pengetahuan tentang Tugas Akhir.

Medan,Juli 2017

Triana Pidayanti Situmeang

(5)

SISTEM PENGATUR PENGISIAN TANGKI AIR 2L MENGGUNAKAN SENSOR FLOW METER BERBASIS MIKROKONTROLER ATmega8

ABSTRAK

Telah dibuat sebuah alat sebagai sistem pengontrolan pengisian volume tangki air menggunakan sensor Flow meter Berbasis ATMega8.Alat ini menggunakan sensor Flow meter,Mikrokontoler ATMega8,Lcd. Alat ini dapat dimanfaatkan sebagai pengontrol volume air.Mikrokontroler ATMega8 mengirim data ke Sensor Flow meter dan sensor Flow meter akan mengubah aliran fluida yang telah digerakkan oleh pompa menjadi counter-counter.Volume air dapat kita setting sesuai dengan yang kita inginkan menggunakan tombol setting, setelah volume air tersebut telah sesuai maka aliran air akan mati secara otomatis dan kita dapat melihat volume airyang dialirkan di layar Lcd.

Kata Kunci :,ATMega8,Lcd,Sensor Flow Meter

(6)

PERNYATAAN

SISTEM PENGATUR PENGISIAN TANGKI AIR 2 L MENGGUNAKAN SENSOR FLOW METER BERBASIS MIKROKONTROLER ATMega8

TUGAS AKHIR

Saya mengakui bahwa Tugas Akhir ini adalah hasil karya sendiri.

Kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2017

Triana Pidayanti Situmeang

NIM.142408026

(7)

DAFTAR ISI

Halaman PERSETUJUANi

PENGHARGAANii

PERNYATAAN iii ABSTRAKiv

DAFTAR ISIv

DAFTAR GAMBARvii DAFTAR TABEL viii DAFTAR LAMPIRANix BAB I PENDAHULUAN1 1.1.LatarBelakang1 1.2.RumusanMasalah2

1.3.TujuanPenelitian2 1.4.BatasanMasalah3

1.5.MetodePenulisan3 1.6.SistematikaPenulisan3 BAB II LandasanTeori5

2.1Mikrokontroler AVR Atmega85 2.1.1 Konfigurasi Pin Atmega86

2.1.2 SpesifikasiAtmega 87 2.1.3 MemoriAtmega 89

2.1.4 Komunikasi Serial PadaAtmega 810 2.1.5 Sistem Minimum Atmega 810 2.2 LCD11

2.3 Water Flow Sensor G1/214 2.3.1 Spesifikasi Flow Sensor15

2.4 Bahasa Pemograman Arduino Uno 16 BAB IIIBAHAN DAN METODE PENELITIAN 18

3.1 Diagram Blok Sistem 18 3.1.1 Fungsi-Fungsi Diagram Blog 18

3.2 RangkaianMikrokontrolerAtmega8 18 3.3 Rangkaian Regulator 7805 19 3.4Rangkaian LCD 20

3.5Rangkaian Sensor aliran21 3.6FlowchatSistem 21

BAB IV PENGUJIAN ALAT22 4.1 PengujianRangkaian22

4.1.1 Pengujian Rangkaian Regulator 7805 22 4.1.2PengujianRangkaianMikrokontroler 22

4.1.3PengujianRangkaian LCD 22 4.1.4PengujianRangkaian Sensor Aliran (Flow) 23 4.2 Analisa Rangkaian 36

4.2.1 Analisa Rangkaian Regulator 7805 36

4.2.2 Analisa Rangkaian Mikrokontroler 36

4.2.3 Analisa Rangkaian LCD 36

(8)

BAB V KESIMPULAN DAN SARAN 5.1 Kesimpulan50

5.2 Saran51

DAFTAR PUSATAKA52

LAMPIRAN 58

(9)

DAFTAR GAMBAR Halaman

2.1Konfigurasi Pin ATMega85 2.2Gambar LCD11

2.3 GambarKonfigurasi Pin LCD12 3.1GambarDiagram Blok Sistem18

3.2GambarRangkaianMikrokontroler Atmega8 19 3.3 Gambar Regulator 780519

3.4GambarRangkaian LCD20

3.5GambarRangkaian Flow Sensor21 3.6GambarFlowchatSistem21

4.1GambarInformasi Signature Mikrokontroler 22

(10)

DAFTAR TABEL 2.1 TabelOperasiDasar LCD16

2.2 TabelKonfigurasi LCD16 2.3 Konfigurasi Pin LCD17

4.1 TabelPengujian Data Flow Sensor dengan Manual30

4.2. Tabel Analisa Data Flow Sensor dengan Manual 43

(11)

DAFTAR LAMPIRAN

No.Lampiran Judul Halaman 1 Program Lengkap 58

2 Data sheet ATMega8 59

(12)

BAB 1 PENDAHULUAN

1.1 Latar Belakang

Kemajuan ilmu pengetahuan dan teknologi mendorong manusia untuk berusaha mengatasi masalah yang timbul di sekitarnya dan meringankan pekerjaan yang sudah ada. Penggunaan mikrokontroler sangat luas, tidak hanya untuk akuisi data melainkan juga untuk pengendalian di pabrik – pabrik, kebutuhan peralatan kantor, peralatan rumah tangga, automobile, dan sebagainya.

Hal ini disebabkan karna mikrokontroler merupakan sistem mikroprosesor (yang didalamnya terdapat CPU, ROM, RAM dan I/O) yang terpadu pada satu keping, selain itu komponennya (ATMega8) murah dan mudah didapat di pasaran. Dalam kesempatan ini penulis mencoba membuat suatu alat menggunakan mikrokontroler ATMega8Salah satu contoh yaitu dalam pengisian volume fluida contohnya dalam pengisian air galon pada depot air minum. Saat ini banyak sekali didirikan usaha depot air minum karena kebutuhan masyarakat terhadap air minum semakin meningkat. Hal ini sulit terpenuhi jika hanya mengandalkan pasokan dari PDAM. Disamping itu, masyarakat lebih memilih air minum yang dikemas dalam galon karena lebih praktis, murah, dan telah disterilisasi sehingga langsung dapat diminum.

Proses pengisian air pada depot air minum masih dilakukan dengan menggunakan tenaga manusia, sehingga operator harus memperhatikan volume air dalam galon pada saat pengisian. Oleh karena itu, cara yang tepat untuk mengatasi masalah tersebut adalah dengan pengontrolan sistem volume fluida dengan menggunakan sensor aliran Flow meter.

Oleh karena itu diperlukan sebuah system kontrol sederhana yang

mampumengontrol pengisian fluida (zat cair). Sistem tersebut dapat dibuat

menggunakan pewaktu yang ada pada ATmega 8. Dengan adanya besaran

(13)

waktu yang diperoleh dari kesebandingan volume, maka dapat diketahui bahwa informasi waktu yang dijadikan sebagai inputan akan mengahasilkan takaran volume yang diinginkan sebagai inputan.

Alat kontrol volume fluida ini diprogram menggunakan ATmega 8. Hal ini dikarenakan ATmega 8 memiliki harga yang relatif murah dan dapat divariasi sesuai dengan program yang dibuat.

1.2 Rumusan Masalah

Dalam merancang dan membuat Sistem Pengatur Pengisian Tangki Air 2L menggunakan Sensor Flow Meter Berbasis Mikrokontroler ATMega8 yang ditujukan untuk bagaimana merancang, mengaplikasikan dan mengontrol sistem ATmega 8 untuk pengontrolan volume fluida.

1.3Tujuan Penulisan

Adapun tujuan penulisan dari penulisan Tugas Akhir ini sebagai berikut : 1. Mengaplikasikan sistem ATmega 8 untuk pengontrolan volume fluida 2. Mengembangkan ilmu pengetahuan dan teknologi, khususnya dibidang

sistem kendali alat dan mengimplementasikan ilmu yang didapat selama

kuliah agar lebih bermanfaat.

(14)

1.4 Batasan Masalah

Batasan masalah yang digunakan dalam tugas akhir ini adalah : 1. Sensor aliranyang digunakan yaitu menggunakan sensor flow G1/2

2. Rangkaian Mikrokontroller yang di gunakan adalah mikrokontroller ATMega8

3. Program yang digunakan adalah Arduino Uno

1.5 Metode Penulisan

Adapun metode penulisan yang digunakan dalam menyusun dan menganalisa Tugas Akhir ini adalah:

1. Studi literatur yang berhubungan dengan perancanangan dan pembuatan alat ini.

2. Perencanaan dan pembuatan alat

Merencanakan peralatan yang telah dirancang baik software maupun hardware.

3. Pengujian alat

Peralatan yang telah dibuat kemudian diuji apakah telah sesuai dengan yang telah direncanakan.

1.6 Sistematika Penulisan

(15)

Untuk mempermudah penyusunan laporan, maka dalam hal ini penulis membagi dalam beberapa bab, serta memberikan gambaran secara garis besar isi dari tiap-tiap bab.

BAB I : PENDAHULUAN

Dalambabini berisikanmengenailatarbelakang,rumusanmasalah, tujuan penulisan, batasan masalah, serta sistematika penulisan.

BAB II : LANDASAN TEORI

Bab ini merupakan Tinjauan Pustaka yang membahas tentang teori-teori yang mendukung dalam penyelesaian masalah.

BAB III : BAHAN DAN METODE PENELITIAN

Meliputi metode, bahan alat, perancangan dan pengambilan data penelitian.

BAB IV : HASIL DAN PEMBAHASAN Meliputi hasil penelitian dan pembahasan.

BAB V : KESIMPULAN DAN SARAN

Berisikan kesimpulan tentang hasil rancangan yang telah dibuat serta saran dalam

pengembangan rancangan tersebut.

(16)

BAB 2 LANDASAN TEORI

2.1 Mikrokontroler AVR Atmega8

AVR merupakan salah satu jenis mikrokontroler yang di dalamnya

terdapat berbagai macam fungsi. Perbedaannya pada mikro yang pada umumnya

digunakan seperti MCS51 adalah pada AVR tidak perlu menggunakan oscillator

eksternal karena di dalamnya sudah terdapat internal oscillator. Selain itu

kelebihan dari AVR adalah memiliki Power-On Reset, yaitu tidak perlu ada

to3mbol reset dari luar karena cukup hanya dengan mematikan supply, maka

secara otomatis AVR akan melakukan reset. Untuk beberapa jenis AVR terdapat

beberapa fungsi khusus seperti ADC, EEPROM sekitar 128 byte sampai dengan

512 byte. AVR ATmega8 adalah mikrokontroler CMOS 8-bit berarsitektur AVR

RISC yang memiliki 8K byte in-System Programmable Flash. Mikrokontroler

dengan konsumsi daya rendah ini mampu mengeksekusi instruksi dengan

kecepatan maksimum 16MIPS pada frekuensi 16MHz. Jika dibandingkan dengan

ATmega8L perbedaannya hanya terletak pada besarnya tegangan yang diperlukan

untuk bekerja. Untuk ATmega8 tipe L, mikrokontroler ini dapat bekerja dengan

tegangan antara 2,7 - 5,5 V sedangkan untuk ATmega8 hanya dapat bekerja pada

tegangan antara 4,5 – 5,5 V.

(17)

2.1.1 Konfigurasi Pin Atmega8

Gambar 2.1. Konfigurasi Pin ATmega 8

Atmega8 ATmega8 memiliki 28 Pin, yang masing-masing pin nya memiliki fungsi yang berbeda-beda baik sebagai port maupun fungsi yang lainnya. Berikut akan dijelaskan fungsi dari masing-masing kaki ATmega8.

a. VCC

Merupakan supply tegangan digital.

b. GND

Merupakan ground untuk semua komponen yang membutuhkan grounding.

c. Port B (PB7...PB0)

Didalam Port B terdapat XTAL1, XTAL2, TOSC1, TOSC2. Jumlah Port

B adalah 8 buah pin, mulai dari pin B.0 sampai dengan B.7. Tiap pin dapat

digunakan sebagai input maupun output. Port B merupakan sebuah 8-bit

bi-directional I/O dengan internal pull-up resistor. Sebagai input, pin-pin 7

yang terdapat pada port B yang secara eksternal diturunkan, maka akan

(18)

digunakan sebagai input Kristal (inverting oscillator amplifier) dan input ke rangkaian clock internal, bergantung pada pengaturan Fuse bit yang digunakan untuk memilih sumber clock. Sedangkan untuk PB7 dapat digunakan sebagai output Kristal (output oscillator amplifier) bergantung pada pengaturan Fuse bit yang digunakan untuk memilih sumber clock.

Jika sumber clock yang dipilih dari oscillator internal, PB7 dan PB6 dapat digunakan sebagai I/O atau jika menggunakan Asyncronous Timer/Counter2 maka PB6 dan PB7 (TOSC2 dan TOSC1) digunakan untuk saluran input timer.

d. Port C (PC5…PC0)

Port C merupakan sebuah 7-bit bi-directional I/O port yang di dalam masingmasing pin terdapat pull-up resistor. Jumlah pin nya hanya 7 buah mulai dari pin C.0 sampai dengan pin C.6. Sebagai keluaran/output port C memiliki karakteristik yang sama dalam hal menyerap arus (sink) ataupun mengeluarkan arus (source).

e. RESET/PC6

Jika RSTDISBL Fuse diprogram, maka PC6 akan berfungsi sebagai pin I/O. Pin ini memiliki karakteristik yang berbeda dengan pin-pin yang terdapat pada port C lainnya. Namun jika RSTDISBL Fuse tidak diprogram, maka pin ini akan berfungsi sebagai input reset. Dan jika level tegangan yang masuk ke pin ini rendah dan pulsa yang ada lebih pendek dari pulsa 8 minimum, maka akan menghasilkan suatu kondisi reset meskipun clock-nya tidak bekerja. Port D (PD7…PD0).

f. Port D merupakan 8-bit bi-directional I/O dengan internal pull-up resistor.

Fungsi dari port ini sama dengan port-port yang lain. Hanya saja pada port ini tidak terdapat kegunaan-kegunaan yang lain. Pada port ini hanya berfungsi sebagai masukan dan keluaran saja atau biasa disebut dengan I/O.

g. AVcc

Pin ini berfungsi sebagai supply tegangan untuk ADC. Untuk pin ini harus

dihubungkan secara terpisah dengan VCC karena pin ini digunakan untuk

analog saja. Bahkan jika ADC pada AVR tidak digunakan tetap saja

(19)

disarankan untuk menghubungkannya secara terpisah dengan VCC. Jika ADC digunakan, maka AVcc harus dihubungkan ke VCC melalui low pass filter.

h. AREF

Merupakan pin referensi jika menggunakan ADC.

2.1.2Spesifikasi Atmega 8

1. Kinerja tinggi, rendah daya Atmel®AVR® 8-bit Microcontroller 2. Advanced RISC Architecture

a. 130 Instruksi Powerfull - Kebanyakan Single-jam Siklus Eksekusi b. 32 × 8 General Purpose Kerja Register

c. Operasi Fully Static

d. Sampai dengan 16MIPS throughput di 16MHz e. On-chip 2-siklus Multiplier

3. segmen Memory Tinggi Ketahanan Non-volatile

a. 8Kbytes In-System Self-programmable memori program flash b. 512bytes EEPROM

c. SRAM 1Kbyte internal

d. Menulis / Erase Cycles: 10.000 Flash / 100.000 EEPROM e. Data retensi: 20 tahun pada 85 ° C / 100 tahun pada 25 ° C (1) f. Opsional Boot Kode Bagian dengan Independent Lock Bits g. In-System Programming secara On-chip Program Boot h. Benar Operasi Baca-Sementara-Write

i. Kunci Pemrograman untuk Security Software 4. Fitur Peripheral

a. Dua 8-bit Timer / Counter dengan Prescaler terpisah, satu Bandingkan Modus

b. Satu 16-bit Timer / Counter dengan Prescaler terpisah, Bandingkan Mode, dan Tangkap

c. Mode

d. Real Time Counter dengan Oscillator terpisah

e. Tiga Saluran PWM

(20)

g. Delapan Saluran 10-bit Akurasi h. 6-channel ADC dalam paket PDIP i. Enam Saluran 10-bit Akurasi

j. Byte berorientasi Dua-kawat Serial Interface k. Programmable Serial USART

l. Master / Slave SPI Serial Interface

m. Programmable Watchdog Timer dengan terpisah On-chip Oscillator

n. On-chip Analog Comparator 5. Fitur Mikrokontroler Khusus

a. Power-on ulang dan Programmable Brown-out Detection b. Internal dikalibrasi RC Oscillator

c. Eksternal dan Sumber Interrupt internal

d. Lima Mode Sleep: Idle, ADC Noise Reduction, Power-save, Power-down, dan

e. Bersiap 6. I / O dan Paket

a. 23 Programmable I / O Garis

b. 28-lead PDIP, 32-lead TQFP, dan 32-pad QFN / MLF 7. Tegangan Operasi

a. 2.7V - 5.5V (ATmega8L) b. 4.5V - 5.5V (ATmega8) 8. Kelas Kecepatan

a. 0 - 8MHz (ATmega8L) b. 0 - 16MHz (ATmega8) 9.

a. Aktif: 3.6mA

b. Menganggur Mode: 1.0mA c. Power-down Mode: 0.5μA 2.1.3 Memori Atmega 8

Memori atmega terbagi menjadi tiga yaitu :

(21)

1. Memori Flash Memori flash adalah memori ROM tempat kode-kode program berada. Kata flash menunjukan jenis ROM yng dapat ditulis dan dihapus secara elektrik. Memori flash terbagi menjadi dua bagian yaitu bagian aplikasi dan bagian boot. Bagian aplikasi adalah bagian kode-kode program apikasi berada. Bagian boot adalah bagian yang digunakan khusus untuk booting awal yang dapat diprogram untuk menulis bagian aplikasi tanpa melalui programmer/downloader, misalnya melalui USART. 32 General purpose registers 64 I/O registers Additional I/O registers Internal RAM Flash Boot Section EEPROM 13.

2. Memori Data Memori data adalah memori RAM yang digunakan untuk keperluan program. Memori data terbagi menjadi empat bagian yaitu : 32 GPR (General Purphose Register) adalah register khusus yang bertugas untuk membantu eksekusi program oleh ALU (Arithmatich Logic Unit), dalam instruksi assembler setiap instruksi harus melibatkan GPR.Dalam istilah processor komputer sahari-hari GPR dikenal sebagai “chace memory”. I/O register dan Aditional I/O register adalah register yang difungsikan khusus untuk mengendalikan berbagai pheripheral dalam mikrokontroler seperti pin port, timer/counter, usart dan lain-lain. Register ini dalam keluarga mikrokontrol MCS51 dikenal sebagi SFR(Special Function Register).

3. EEPROM EEPROM adalah memori data yang dapat mengendap ketika chip mati (off), digunakan untuk keperluan penyimpanan data yang tahan terhadap gangguan catu daya. 14 2.1.3 Timer/Counter 0 Timer/counter 0 adalah sebuah timer/counter yang dapat mencacah sumber pulsa/clock baik dari dalam chip (timer) ataupun dari luar chip (counter) dengan kapasitas 8-bit atau 256 cacahan. Timer/counter dapat digunakan untuk : 1. Timer/counter biasa

2. Clear Timer on Compare Match (selain Atmega 8) 3. Generator frekuensi (selain Atmega 8)

4. Counter pulsa eksternal

(22)

Mikrokontroler AVR Atmega 8 memiliki Port USART pada Pin 2 dan Pin3 untuk melakukan komunikasi data antara mikrokontroler dengan mikrokontroler ataupun mikrokontroler dengan komputer. USART dapat difungsikan sebagai transmisi data sinkron, dan asinkron. Sinkron berarti clock yang digunakan antara transmiter dan receiver satu sumber clock. Sedangkan asinkron berarti transmiter dab receiver mempunyai sumber clock sendiri-sendiri.

USART terdiri dalm tiga blok yaitu clock generator, transmiter, dan receiver.

2.1.5 Sistim Minimum Atmega 8

Dengan menggunakan minimum sistem yang kompatibel dengan atmega8mikrokontroler atmega8 bertindak sebagai mikro target dimana kita membutuhkan downloader lain intuk mendownload firmware ke atmega8.

downloader tersebut bisa berupa downloader paralel atau serial dengan tools programmernya menggunakan Ponkemudian sediakan USBASP (Downloader) yang lain untuk mendownload firmware ke atmega8. (Downloader tidak harus yang berbasis USBASP bisa yang lain asal kompatibel dengan MOSI,MISO,SCK dan reset mikrokontroler AVR).

2.2 LCD

LCD merupakan salah satu perangkat penampil yang sekarang ini mulai banyak digunakan.Penampil LCD mulai dirasakan menggantikan fungsi dari penampil CRT (Cathode Ray Tube), yang sudah berpuluh-puluh tahun digunakan manusia sebagai penampil gambar/text baik monokrom (hitam dan putih), maupun yang berwarna.Teknologi LCD memberikan keuntungan dibandingkan dengan teknologi CRT, kaena pada dasarnya, CRT adalah tabung triode yang digunakan sebelum transistor ditemukan.

Beberapa keuntungan LCD dibandingkan dengan CRT adalah konsumsi

daya yang relative kecil, lebih ringan, tampilan yang lebih bagus, dan ketika

berlama-lama di depan monitor, monitor CRT lebih cepat memberikan kejenuhan

pada mata dibandingkan dengan LCD

(23)

Gambar 2.2 LCD

LCD memanfaatkan silicon atau gallium dalam bentuk Kristal cair sebagai pemendar cahaya.Pada layar LCD, setiap matrik adalah susunan dua dimensi piksel yang dibagi dalam baris dan kolom.Dengan demikian, setiap pertemuan baris dan kolom adalah sebuah LED terdapat sebuah bidang latar (backplane), yang merupakan lempengan kaca bagian belakang dengan sisi dalam yang ditutupi oleh lapisan elektroda trasparan.Dalam keadaan normal, cairan yang digunakan memiliki warna cerah. Daerah-daerah tertentu pada cairan akan berubah warnanya menjadi hitam ketika tegangan diterapkan antara bidang latar dan pola elektroda yang terdapat pad sisi dalam lempeng kaca bagian depan.

Keunggulan LCD adalah hanya menarik arus yang kecil (beberapa microampere), sehingga alat atau sistem menjadi portable karena dapat menggunakan catu daya yang kecil.Keunggulan lainnya adalah tampilan yang diperlihatkan dapat dibaca dengan mudah di bawah terang sinar matahari.Di bawah sinar cahaya yang remang-remang dalam kondisi gelap, sebuah lampu (berupa LED) harus dipasang dibelakang layar tampilan.

LCD yang digunakan adalah jenis LCD yang mena mpilkan data dengan 2 baris tampilan pada display. Keuntungan dari LCD ini adalah :

1. Dapat menampilkan karakter ASCII, sehingga dapat memudahkan untuk membuat program tampilan.

2. Mudah dihubungkan dengan port I/O karena hanya mengunakan 8 bit data dan 3 bit control.

3. Ukuran modul yang proporsional.

4. Daya yang digunakan relative sangat kecil.

(24)

LCD 16x2 10

11

12 13 11 12

13 14

D0 D1 D2 D3 D4 D5 D6 D7

2 15

+5VDC

RS RW

EN 4 5 6

1 3 16

VC C V+ BL

G ND LC D Dr v V- BL

Gambar 2.3. Konfigurasi Pin LCD

Operasi dasar pada LCD terdiri dari empat, yaitu instruksi mengakses proses internal, instruksi menulis data, instruksi membaca kondisi sibuk, dan instruksi membaca data. ROM pembangkit sebanyak 192 tipe karakter, tiap karakter dengan huruf 5x7 dot matrik.Kapasitas pembangkit RAM 8 tipe karakter (membaca program), maksimum pembacaan 80x8 bit tampilan data.Perintah utama LCD adalah Display Clear, Cursor Home, Display ON/OFF, Display Character Blink, Cursor Shift, dan Display Shift. Tabel 2.1. menunjukkan operasi dasar LCD

Tabel 2.1.Operasi Dasar LCD

RS R/W Operasi

0 0 Input Instruksi ke LCD

0 1 Membaca Status Flag (DB7) dan alamat counter (DB0 ke DB6)

1 0 Menulis Data

1 1 Membaca Data

Tabel 2.2. Konfigurasi LCD

Pin Bilangan biner Keterangan

RS 0 Inisialisasi

1 Data

RW 0 Tulis LCD / W (write)

(25)

1 Baca LCD / R (read)

E 0 Pintu data terbuka

1 Pintu data tertutup

Tabel 2.3.Konfigurasi Pin LCD Pin

No.

Keterangan Konfigurasi Hubung

1 GND Ground

2 VCC Tegangan +5VDC

3 VEE Ground

4 RS Kendali RS

5 RW Ground

6 E Kendali E/Enable

7 D0 Bit 0

8 D1 Bit 1

9 D2 Bit 2

10 D3 Bit 3

11 D4 Bit 4

12 D5 Bit 5

13 D6 Bit 6

14 D7 Bit 7

15 A Anoda (+5VDC)

16 K Katoda (Ground)

Lapisan film yang berisis Kristal cair diletakkan di antara dua lempeng

kaca yang telah ditanami elektroda logam transparan. Saat teganga dicatukan pada

beberapa pasang elektroda, molekul – molekul Kristal cair akan menyusun diri

agar cahaya yang mengenainya akan dipantulkan atau diserap. Dari hasil

pemantulan atau penyerapan cahaya tersebut akan terbentuk pola huruf, angka,

atau gambar sesuai bagian yang di aktifka.

(26)

LCD membutuhkan tegangan dan daya yang kecil sehingga sangat popular untuk aplikasi pada kalkulator, arloji digital, dan instrument elektronika lain seperti Global Positioning System (GPS), baragraph display dan multimeter digital. LCD umumnya dikemas dalam bentuk Dual In Line Package (DIP) dan mempunyai kemampuan untuk menampilkan beberapa kolom dan baris dalam satu panel. Untuk membentuk pola, baik karakter maupun gambar pada kolom dan baris secara bersamaan digunakan metode Screening.

Metode screening adalah mengaktifkan daerah perpotongan suatu kolo dan suatu baris secara bergantian dan cepat sehingga seolah-olah aktif semua.Penggunaan metode ini dimaksudkan untuk menghemat jalur yang digunakan untuk mengaktifkan panel LCD. Saat ini telah dikembangkan berbagai jenis LCD, mulai jenis LCD biasa, Passive Matrix LCD (PMLCD), hingga Thin- Film Transistor Active Matrix (TFT-AMLCD). Kemampuan LCD juga telah ditingkatkan daru yang monokrom hingga yang mampu menampilkan ribuan warna.

2.3Water Flow Sensor G1/2

Water Flow sensor terdiri dari tubuh katup plastik, rotor air, dan sensor hall efek. Ketika air mengalir melalui, gulungan rotor-rotor. Kecepatan perubahan dengan tingkat yang berbeda aliran. Sesuai sensor hall efek output sinyal pulsa.Kelebihan sensor ini adalah hanya membutuhkan 1 sinyal (SIG) selain jalur 5V dc dan Ground. Water flow sensor ini terdiri atas katup plastik, rotor air, dan sebuah sensor hall-effect.

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 divais 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 divais.

(27)

2.3.1 Spesifikasi Flow Sensor

a. Bekerja padategangan5VDC-24VDC

b. Arus Maksimum saat ini15mA(DC5V)

c. Berat sensor 43 gram

d. Tingkat Aliranrentang 0,5~ 60L / menit

e. SuhuPengoperasian 0°C~ 80°

f. Operasikelembaban35%~ 90% RH

g. Operasitekanan bawah1.75Mpa 2.4 Bahasa Pemograman Arduino Uno

Bahasa Pemograman Arduino Uno jenis pemograman yang paling banyak digunakan terutama untuk para pemula sangat disarankan untuk digunakan Arduino Uno.Dan banyak sekali referensi versi yang digunakan untuk membahas Arduino Uno. Versi terakhir adalah Arduino Uno R3 ( revisi 3 ),menggunakan ATMega 328 sebagai mikrokontrolernya.Berikut penjelasan bagian bahasa pemograman Arduino Uno :

Void setup () {

// semua kode yang ada disini akan dibaca sekali oleh Arduino }

Void loop () {

// semua kode yang ada disini akan dibaca berulang kali (terus-menerus)oleh Arduino

}

(28)

Semua kode program yang ada di dalam bagian void setup akan dibaca sekali oleh Arduino.Biasanya isinya merupakan kode perintah untuk menentukan fungsi pada sebuah pin.

Contoh kodenya seperti:

pinMode (13, OUTPUT); //menentukan pin 13 sebagai OUTPUT pinMode(3, INPUT); //menentukan pin 3 sebagai INPUT

Adapun untuk komunikasi antara Arduino dengan komputer menggunakan:

Serial.begin(9600);

Semua kode program yang ada di dalam void loop akan dibaca berulang kali (terus-menerus) oleh Arduino.Isinya berupa kode-kode perintah kepada pin INPUT dan OUTPUT pada Arduino.

Contoh kodenya seperti berikut:

digitalWrite(13, HIGH); //untuk memberikan 5v(nyala)kepada pin 13 digitalWrite(13, LOW); //untuk memberikan 0v(mati) kepada pin 13

analogWrite(3, 225); //untuk memberikan nilai 225(setara dengan 5v)kepada pin3

Adapun untuk menampilkan sensor di Serial Monitor,bisa menggunakan:

Serial.print(namasensor); //menampilkan nilai sensor di variabel nama sensor Untuk menampilkan teks biasanya menggunakan

Serial.print(“Selamat Datang”); //menampilkan teks Selamat Datang pada serial

monitor

Dan untuk membuka serial Monitor sendiri pada Arduino,bisa dengan memilih menu tools kemudian pilih Serial Monitor,atau dengan menekan kombinasi

CTRL+SHIFT+M di keyboard.Kamu bisa membuat catatan di program dan tidak akan dibaca oleh Arduino,dengan cara mengetikkan // kemudian mengetikan catatan seperti:

Voidloop(){

// Catatan pada baris ini tidak akan di baca oleh program

}

(29)

Tapi pemakaian tanda // hanya berfungsi pada catatan satu baris saja.Jika kamu ingin membuat catatan yang lebih panjang yang berupa paragraf.Maka pertama kamu ketikkan /* lalu ketikkan catatanmu ,dan jika sudah selesai tutup dengan kode */. Contohnya seperti berikut:

Void loop ()}

/*apapun yang akan kamu ketikkan disini tidak akan dibaca oleh program sepanjang apapun kamu mengetikkannya

*/

BAB 3 PERANCANGAN DAN PEMBUATAN ALAT

3.1 Diagram Blok Sistem

(30)

Gambar 3.1 Diagram blok sistem 3.1.1 Fungsi – Fungsi Diagam Blok

1. Supply berfungsi sebagai sumber tegangan.

2. Bluetooth berfungsi sebagai penerima dan pemancar data.

3. Pompa berfungsi sebagai penyedot air

4. Driver relay berfungsi sebagai penggerak relay

5. Flow sensor berfungsi sebagai penghitung jumlah aliran 6. Set 1berfungsi sebagai pengatur volume air ( pull down)

Set 2 berfungsi sebagai set mode

Set 3 berfungsi sebagai pengatur volume air ( pull up) Set 4 berfungsi sebagai set mode

Set 5 berfungsi sebagai tombol oke 7. LCD berfungsi sebagai penampil data

8. Relay berfungsi sebagai saklar untuk pompa.

3.2 Rangkaian Mikrokontroler Atmega8

Rangkaian mikrokontroller merupakan pusat pengendalian dari bagian input dan keluaran serta pengolahan data. Pada sistem ini digunakan mikrokontroller jenis Atmega8 yang memiliki spesifikasi sebagai berikut:

a. Kristal 8 MHz, yang berfungsi sebagai pembangkit clock.

b.Kapasitor 22 pF pada pin XTAL1 dan XTAL2.

c. Resistor 10 kΩ dan kapasitor 10 nF pada pin reset.

d.Port masukan dan keluaran yang digunakan yaitu :

(31)

 PortC.0 digunakan sebagai Penerima data dari remote (receiver)

 PortA.1, PortB.1 -PortB.4 digunakan sebagai data input basis transistor pada driver relay.

Skema rangkaian sistem minimum mikrokontroller dapat dilihat pada gambar berikut :

Gambar 3.2 Rangkaian Mikrokontroler Atmega8 3.3 Rangkaian Regulator 7805

Mikrokontroler, sensor dan komponen komponen elektonika, kebanyakan menggunakan tegangan 5v untuk menstabilkan tegangan dapat menggunakan ICLM7805, yang berfungsi sebagai penstabil tegangan, dan mempertahankan output tetap 5 volt.

Gambar 3.3 Rangkaian Regulator 7805

3.4Rangkaian LCD

Pada alat ini, display yang

(32)

Crystal Display) 16 x 2. Untuk blok ini tidak ada komponen tambahan karena mikrokontroler dapat memberi data langsung ke LCD, pada LCD Hitachi - M1632 sudah terdapat driver untuk mengubah data ASCII output mikrokontroler menjadi tampilan karakter. Pemasangan potensio sebesar 10 KΩ untuk mengatur kontras karakter yang tampil. Gambar 3.5 berikut merupakan gambar rangkaian LCD yang dihubungkan ke mikrokontroler. Gambar 3.5, rangkaian ini terhubung ke PB.1 - PB.7, yang merupakan pin I/O dua arah dan pin fungsi khusus, yaitu sebagai Timer/Counter, komperator analog dan SPI mempunyai fungsi khusus sebagai pengiriman data secara serial. Sehingga nilai yang akan tampil pada LCD display akan dapat dikendalikan oleh Mikrokontroller Atmega8.

Gambar 3.4 Rangkaian LCD

3.5Rangkaian Sensor Aliran

Sensor aliran memiliki tegangan kerja 5V DC-24V C , perpandingan aliran

0,5~ 60L / menit dan tekanan air maksimal 1,75 MPa.

(33)

Gambar 3.6 Rangkaian Flow Sensor 3.6 Flowchat Sistem

3.7 Gambar Flowchat Sistem

BAB IVPENGUJIAN ALAT

(34)

4.1Pengujian Rangkaian

4.1.1Pengujian Rangkaian Regulator 7805

Voltage regulator IC adalah IC yang digunakan untuk mengatur tegangan .IC 7805 adalah Regulator 5V, Voltage yang membatasi output tegangan 5V dan menarik 5V diatur power supply.Pengujian rangkaian regulator ini biasanya menggunakan volt meter, rangkaian ic7805 ini akan mengeluarkan tegangan 5 volt dengan inputan diatas 6 volt sampai dengan 35 Volt.

4.1.2.Pengujian Rangkaian Mikrokontroler

Pemrograman menggunakan mode ISP (In System Programming) mikrokontroler harus dapat diprogram langsung pada papan rangkaian dan rangkaian mikrokontroler harus dapat dikenali oleh program downloader.

Pada pengujian ini berhasil dilakukan dengan dikenalinya jenis mikrokontroler oleh program downloader yaitu Atmega8.

Gambar 4.1. Informasi Signature Mikrokontroler

4.1.3 Pengujian Rangkaian LCD

Bagian ini hanya terdiri dari sebuah LCD dot matriks 2 x 16 karakter yang

berfungsi sebagai tampilan hasil pengukuran dan tampilan dari beberapa

keterangan. LCD dihubungkan langsung ke Port B dari mikrokontroler yang

berfungsi mengirimkan data hasil pengolahan untuk ditampilkan dalam bentuk

alfabet dan numerik pada LCD.Display karakter pada LCD diatur oleh pin EN,

RS dan RW: Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu

(35)

LCD bahwa anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low “0” dan set ( high ) pada dua jalur kontrol yang lain RS dan RW. Jalur RW adalah jalur kontrol Read/

Write. Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low ( 0 )

Berdasarkan keterangan di atas maka kita sudah dapat membuat progam untuk menampilkan karaker pada display LCD. Adapun program yang diisikan ke mikrokontroller untuk menampilkan karakter pada display LCD adalah sebagai berikut:

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 7, 6, 4, 3, 2);

Void setup() {lcd.begin(16, 2);}

Void loop() {

Lcd.setCursor(0,0);

Lcd.putsf(“tes lcd”);

}

Program di atas akan menampilkan kata “Tes LCD” di baris pertama pada display LCD 2x16. Pada alat dalam penelitian ini, Saat keseluruhan rangkaian diaktifkan.

4.1.4 Pengujian Rangkaian Sensor Aliran (Flow)

Flow sensor diuji dengan cara menghubungkan water flow sensor pada mikrokontroler, dan memasukkan program ke dalam mikrokontroler. Sehingga dapat diketahui apakah sensor tersebut dapat berfungsidengan baik atau tidak.

Kemudian pengujian pengukuran alat ini dengan menggunakan botol ukur sebagai penampung keluaran air dari water flow sensor tersebut. Jika flow sensor dapat berkerja dengan baik, maka hasil perhitungan akan ditampilkan pada layar LCD.

Berikut hasil pengujian ketepatan output sensor.

(36)

Tabel 4.1 Pengujian data flow sensor No.

Percobaan

Metode Gelas Ukur (L) Output Sensor (ml) Selisih (ml)

1 0,5 0,48 0,02

2 1 0,94 0,06

3 1,5 1,38 0,12

4 2 1,90 0,1

Berdasarkan pengujian diatas terdapat kekurangan pada alat water flow sensor karena alat ini tidak memiliki ketepatan atau presisi 100%, terdapat kesalahan atau ketidaktepatan pengukuran. Berikut persentase kesalahan :

1. Persentase kesalahan pengujian data flow sensor Persentase kesalahan % =

( 500 ml) Persentase kesalahan % = ( 1000 ml) Persentase kesalahan % =

( 1500 ml) Persentase kesalahan % = ( 2000 ml)

Adapun program yang menjalankan sensor ini sebagai berikut :

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 6, 5, A4, A5, 4);

#define pompa A0

#define up A1

#define down 11

#define righ 10

#define left 9

(37)

#define ok 12 int state=0;

float volum=0;

char recev;

byte statusLed = 13;

byte sensorInterrupt = 0;

byte sensorPin = 2;

float calibrationFactor = 4.5;

volatile byte pulseCount;

float flowRate;

unsigned int flowMilliLitres;

float totalMilliLitres;

unsigned long oldTime;

void setup() {

lcd.begin(16, 2);

pinMode(pompa,OUTPUT);

Serial.begin(9600);

pinMode(statusLed, OUTPUT);

(38)

pinMode(sensorPin, INPUT);

digitalWrite(sensorPin, HIGH);

pinMode(up, INPUT);

pinMode(down, INPUT);

pinMode(left, INPUT);

pinMode(righ, INPUT);

pinMode(ok, INPUT);

digitalWrite(up, HIGH);

digitalWrite(down, HIGH);

digitalWrite(left, HIGH);

digitalWrite(righ, HIGH);

digitalWrite(ok, HIGH);

pulseCount = 0;

flowRate = 0.0;

flowMilliLitres = 0;

totalMilliLitres = 0;

oldTime = 0;

attachInterrupt(sensorInterrupt, pulseCounter, FALLING);

}

(39)

void loop() {

while (state==0) {

digitalWrite(pompa,LOW);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Android >>>");

lcd.setCursor(0,1);

lcd.print("Manual");

if (digitalRead(down)==0){state=1;}

if (digitalRead(ok)==0){state=2;delay(200) delay(200);

}

while (state==1) {

digitalWrite(pompa,LOW);

(40)

flowRate = 0.0;

flowMilliLitres = 0;

totalMilliLitres = 0;

oldTime = 0;

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Android");

lcd.setCursor(0,1);

lcd.print("Manual >>>");

if (digitalRead(up)==0){state=0;}

if (digitalRead(ok)==0){state=3;delay(200);}

delay(300);

}

while (state==3) {

digitalWrite(pompa,LOW);

if (digitalRead(righ)==0){volum+=0.1;}

if (digitalRead(left)==0){volum-=0.1;}

lcd.setCursor(0,0);

lcd.print("Set Volume");

lcd.setCursor(0,1);

(41)

lcd.print(volum,1);

if (digitalRead(ok)==0){state=4;delay(200);}

delay(100);

lcd.clear();

}

while (state==4) {

if (totalMilliLitres>=volum) {

digitalWrite(pompa,LOW);

lcd.setCursor(0,0);

lcd.print("Debit: ");

lcd.print(flowRate,3);

lcd.print(" L/S");

lcd.setCursor(0,1);

lcd.print("Vol : ");

lcd.print(totalMilliLitres);

lcd.print(" L");

if (digitalRead(ok)==0){state=3;delay(300

(42)

else{

digitalWrite(pompa,HIGH);

if (digitalRead(ok)==0){state=3;delay(300);

}

if((millis() - oldTime) > 200){

detachInterrupt(sensorInterrupt);

oldTime = millis();

flowRate = pulseCount;

flowRate=flowRate*0.0263/480/2.5*100;

totalMilliLitres+=flowRate;

unsigned int frac;

lcd.setCursor(0,0);

lcd.print("Debit: ");

lcd.print(flowRate,3);

lcd.print(" L/S");

lcd.setCursor(0,1);

lcd.print("Vol : ");

lcd.print(totalMilliLitres);

(43)

lcd.print(" L");

pulseCount = 0;

attachInterrupt(sensorInterrupt, pulseCounter, FALLING);

} } }

while (state==2){

digitalWrite(pompa,LOW);

pulseCount = 0;

flowRate = 0.0;

flowMilliLitres = 0;

totalMilliLitres = 0;

oldTime = 0;

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Set Volume");

lcd.setCursor(0,1);

(44)

if (Serial.available()){recev= Serial.read();

if (recev=='A'){volum+=0.1;

}

else if (recev=='B'){volum-=0.1;}

else if (recev=='Z'){state=5;}

}

Serial.print("*F");

Serial.print(volum);

Serial.print("*");

Serial.print("*G");

Serial.print(totalMilliLitres);

Serial.print("*");

Serial.print("*H");

Serial.print(flowRate,3);

Serial.print("*");

delay(50);

}

while (state==5)

{

(45)

if (totalMilliLitres>=volum) {

digitalWrite(pompa,LOW);

lcd.setCursor(0,0);

lcd.print("Debit: ");

lcd.print(flowRate,3);

lcd.print(" L/S");

lcd.setCursor(0,1);

lcd.print("Vol : ");

lcd.print(volum);

lcd.print(" L");

if (Serial.available()){if (Serial.read()=='Z'){state=2;delay(200);}}

}

else{

digitalWrite(pompa,HIGH);

if (Serial.available()){if (Serial.read()=='Z'){state=2;delay(200);}}

if((millis() - oldTime) > 200){

(46)

flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;

oldTime = millis();

flowRate = pulseCount;

flowRate=flowRate*0.0263/480/2.5*100;

totalMilliLitres+=flowRate;

* flowMilliLitres = ((flowRate / 60) * 1000)/8256;

totalMilliLitres += flowMilliLitres;

unsigned int frac;

lcd.setCursor(0,0);

lcd.print("Debit: ");

lcd.print(flowRate,3);

lcd.print(" L/S");

lcd.setCursor(0,1);

lcd.print("Vol : ");

lcd.print(totalMilliLitres);

lcd.print(" L");

pulseCount = 0;

attachInterrupt(sensorInterrupt, pulseCounter, FALLING);

}

(47)

}

Serial.print("*F");

Serial.print(volum);

Serial.print("*");

Serial.print("*G");

Serial.print(totalMilliLitres);

Serial.print("*");

Serial.print("*H");

Serial.print(flowRate,3);

Serial.print("*");

}

}

void pulseCounter(){pulseCount++;}

4.2 Analisa Rangkaian

(48)

Voltage regulator IC adalah IC yang digunakan untuk mengatur tegangan .IC 7805 adalah Regulator 5V, Voltage yang membatasi output tegangan 5V dan menarik 5V diatur power supply.Rangkaian regulator 7805 biasanya dianalisa menggunakan volt meter, rangkaian ic7805 ini akan mengeluarkan tegangan 5 volt dengan inputan diatas 6 volt sampai dengan 35 Volt.

4.2.2 Analisa Rangkaian Mikrokontroler

Pemrograman menggunakan mode ISP (In System Programming) mikrokontroler harus dapat diprogram langsung pada papan rangkaian dan rangkaian mikrokontroler harus dapat dikenali oleh program downloader.

Pada Analisa ini berhasil dilakukan dengan dikenalinya jenis mikrokontroler oleh program downloader yaitu Atmega8.

Gambar 4.2. Informasi Signature Mikrokontroler

Atmega8 menggunakan kristal dengan frekuensi 8 MHz, apabila Chip Signature sudah dikenali dengan baik dan dalam waktu singkat, bisa dikatakan rangkaian mikrokontroler bekerja dengan baik dengan mode ISP-nya.

4.2.3 Analisa Rangkaian LCD

LCD dihubungkan langsung ke Port B dari mikrokontroler yang berfungsi mengirimkan data hasil pengolahan untuk ditampilkan dalam bentuk alfabet dan numerik pada LCD.Display karakter pada LCD diatur oleh pin EN, RS dan RW:

Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa

anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka

(49)

melalui program EN harus dibuat logika low “0” dan set ( high ) pada dua jalur kontrol yang lain RS dan RW. Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low ( 0 ).

Berdasarkan keterangan di atas maka kita sudah dapat membuat progam untuk menampilkan karaker pada display LCD. Adapun program yang diisikan ke mikrokontroller untuk menampilkan karakter pada display LCD adalah sebagai berikut:

#include <LiquidCrystal.h> // memasukkan ke library LiquidCrystal lcd(8, 7, 6, 4, 3, 2); // konfigurasi pinLCD Void setup()

{lcd.begin(16, 2);}// Inisialisasi LCD Void loop()

{

Lcd.setCursor(0,0); //meletakkan posisi karakter pada LCD Lcd.putsf(“tes lcd”); //meletakkan tulisan tes lcd pada layar LCD }

Program di atas akan menampilkan kata “Tes LCD” di baris pertama pada display LCD 2x16.

4.2.4 Analisa Rangkaian Sensor Aliran (Flow Meter)

Flow sensor di analisa dengan cara menghubungkan water flow sensor pada mikrokontroler, dan memasukkan program ke dalam mikrokontroler.

Sehingga dapat diketahui apakah sensor tersebut dapat berfungsi dengan baik atau tidak. Kemudian pengujian pengukuran alat ini dengan menggunakan botol ukur sebagai penampung keluaran air dari water flow sensor tersebut. Jika flow sensor dapat berkerja dengan baik, maka hasil perhitungan akan ditampilkan pada layar LCD. Berikut hasil pengujian ketepatan output sensor.

Tabel 4.2Analisa data flow sensor

(50)

Percobaan

1 0,5 0,48 0,02

2 1 0,94 0,06

3 1,5 1,38 0,12

4 2 1,90 0,1

Berdasarkan pengujian diatas terdapat kekurangan pada alat water flow sensor karena alat ini tidak memiliki ketepatan atau presisi 100%, terdapat kesalahan atau ketidaktepatan pengukuran. Berikut persentase kesalahan :

1. Persentase kesalahan analisa data flow sensor

Persentase kesalahan % = ( 500 ml) Persentase kesalahan % = ( 1000 ml) Persentase kesalahan % = ( 1500 ml) Persentase kesalahan % = ( 2000 ml)

Adapun program yang menjalankan sensor ini sebagai berikut :

#include <LiquidCrystal.h>// memasukkan ke library

LiquidCrystal lcd(8, 6, 5, A4, A5, 4); // konfigurasi PIN LCD

#define pompa A0 // pompa di PIN a0

#define up A1 // up di PIN A1

#define down 11 // down di PIN 11

#define righ 10 // right di PIN 10

#define left 9 // left di PIN 9

#define ok 12 // ok di PIN 12

(51)

int state=0; // membuat variabel pada tipe data interger float volum=0; // membuat variabel pada tipe data float char recev; // membuat variabel pada tipe data carakter

byte statusLed = 13; // membuat variabel pada tipe data byte byte sensorInterrupt = 0;// membuat variabel pada tipe data byte byte sensorPin = 2;// membuat variabel pada tipe data byte

float calibrationFactor = 4.5; // membuat variabel pada tipe data float dengan nilai 4.5

volatile byte pulseCount; // membuat variabel pada tipe data byte float flowRate; // membuat variabel pada tipe data float

unsigned int flowMilliLitres; // membuat variabel pada tipe data interger float totalMilliLitres; // membuat variabel pada tipe data float

unsigned long oldTime; // membuat variabel pada tipe data float

void setup() {

lcd.begin(16, 2); // inisialisasi LCD

pinMode(pompa,OUTPUT); // pompa menjadi output Serial.begin(9600); // inisialisasi serial

pinMode(statusLed, OUTPUT); // statusled menjadi output

(52)

digitalWrite(statusLed, HIGH); // statusled menjadi high pinMode(sensorPin, INPUT); // sensorpin menjadi output digitalWrite(sensorPin, HIGH); // sensorpin menjadi high pinMode(up, INPUT); // up menjadi input

pinMode(down, INPUT); //down menjadi input pinMode(left, INPUT); //left menjadi input pinMode(righ, INPUT); //right menjadi input pinMode(ok, INPUT); // ok menjadi input

digitalWrite(up, HIGH); // up menjadi high digitalWrite(down, HIGH); //down menjadi high digitalWrite(left, HIGH); //left menjadi high digitalWrite(righ, HIGH); //right menjadi high digitalWrite(ok, HIGH); // ok menjadi high

pulseCount = 0; // memberikan 0 pada variabel pulseCount

flowRate = 0.0; // memberikan 0 pada variabel flowRate

flowMilliLitres = 0; // memberikan 0 pada variabel flowMilliLitres

totalMilliLitres = 0; // memberikan 0 pada variabel totalMilliLitres

oldTime = 0; // memberikan 0 pada variabel oldTime

(53)

attachInterrupt(sensorInterrupt, pulseCounter, FALLING); // membuat attachInterrupt

}

void loop() {

while (state==0)// perulangan selama nilai state 0 {

digitalWrite(pompa,LOW); // pompa mati lcd.clear(); // menghapus LCD

lcd.setCursor(0,0); // meletakkan posisi karakter pada LCD

lcd.print("Android >>>"); // mencetak karakter android pada LCD lcd.setCursor(0,1); // meletakkan posisi karakter pada LCD

lcd.print("Manual"); // dicetak Karakter Manual pada LCD

if (digitalRead(down)==0){state=1;} // jika tombol down ditekan maka state sama dengan 1

if (digitalRead(ok)==0){state=2;delay(200);} // jika tombol ok ditekan maka state sama dengan 2 dengan delay 200 ms

delay(200); // delay sama dengan 200 ms

(54)

while (state==1) // perulangan selama nilai state 1 {

digitalWrite(pompa,LOW); // pompa mati

pulseCount = 0; // memberikan 0 pada variabel pulseCount flowRate = 0.0; // memberikan 0 pada variabel flowRate flowMilliLitres = 0; // memberikan 0 pada variabel flowMilliLitres totalMilliLitres = 0; // memberikan 0 pada variabel totalMilliLitres oldTime = 0; // memberikan 0 pada variabel oldTime

lcd.clear(); // menghapus LCD

lcd.setCursor(0,0); // meletakkan posisi karakter pada LCD lcd.print("Android"); // dicetak Karakter Android pada LCD lcd.setCursor(0,1); // meletakkan posisi karakter pada LCD

lcd.print("Manual >>>"); // mencetak karakter Manual pada LCD

if (digitalRead(up)==0){state=0;} // jika tombol up tekan maka state sama dengan 0

if (digitalRead(ok)==0){state=3;delay(200);} // jika tombol up tekan maka state sama dengan 3 dengan delay sama dengan 200 ms

delay(300); // delay sama dengan 200 ms }

while (state==3) // perulangan selama nilai state 3

(55)

{

digitalWrite(pompa,LOW); // pompa mati

if (digitalRead(righ)==0){volum+=0.1;} // jika tombol right ditekan maka volume bertambah

if (digitalRead(left)==0){volum-=0.1;} // jika tombol left ditekan maka volume berkurang

lcd.setCursor(0,0); // meletakkan posisi karakter pada LCD

lcd.print("Set Volume"); // mencetak karakter Set Volume pada LCD lcd.setCursor(0,1); // meletakkan posisi karakter pada LCD

lcd.print(volum,1); // mencetak nilai volum pada LCD

if (digitalRead(ok)==0){state=4;delay(200);} // jika ok ditekan maka state sama dengan 4 dengan delay sama dengan 200 ms

delay(100); // delay sama dengan 200 ms lcd.clear(); // menghapus LCD

}

while (state==4) // perulangan selama nilai state 4 {

if (totalMilliLitres>=volum) // jika volume yang masuk lebih besar atau sama dengan

{

digitalWrite(pompa,LOW); // pompa mati

(56)

lcd.setCursor(0,0); // mencetak nilai flowrate pada LCD lcd.print("Debit: "); // mencetak karakter Debit pada LCD lcd.print(flowRate,3); // mencetak nilai flowrate pada LCD lcd.print(" L/S"); // mencetak karakter L/S pada LCD

lcd.setCursor(0,1); // meletakkan posisi karakter pada LCD lcd.print("Vol : "); // mencetak nilai volume pada LCD

lcd.print(totalMilliLitres); // mencetak nilai totalmillitres pada LCD lcd.print(" L"); // mencetak karakter L pada LCD

if (digitalRead(ok)==0){state=3;delay(300);} // jika ok ditekan maka state 3 dengan delay sama dengan 300 ms

}

else{ // jika yang lain

digitalWrite(pompa,HIGH); // pompa menjadi high

if (digitalRead(ok)==0){state=3;delay(300);} // jika ok ditekan maka state 3 dengan delay sama dengan 300

if((millis() - oldTime) > 200){ // timer

detachInterrupt(sensorInterrupt); // menggambil data dari sensorinterrupt oldTime = millis(); // timer

flowRate = pulseCount; // membaca pulsa

flowRate=flowRate*0.0263/480/2.5*100; // nilai kalibrasi

(57)

totalMilliLitres+=flowRate; // menjumlahkan flowrate dengan berulang selama pompa aktif

unsigned int frac; // membuat variabel pada tipe data interger

lcd.setCursor(0,0); // meletakkan posisi karakter pada LCD lcd.print("Debit: "); // mencetak karakter Debit pada LCD lcd.print(flowRate,3); // mencetak nilai flowrate pada LCD lcd.print(" L/S"); // mencetak karakter L/S pada LCD

lcd.setCursor(0,1); // meletakkan posisi karakter pada LCD lcd.print("Vol : "); // mencetak nilai volume pada LCD lcd.print(totalMilliLitres); // mencetak nilai totalmillitres pada LCD lcd.print(" L"); // mencetak karakter L pada LCD

pulseCount = 0; // memberikan 0 pada variabel pulseCount

attachInterrupt(sensorInterrupt, pulseCounter, FALLING); // membuat attachInterrupt

}

}

}

(58)

digitalWrite(pompa,LOW); // pompa mati

pulseCount = 0; // memberikan 0 pada variabel pulseCount flowRate = 0.0; // memberikan 0 pada variabel flowRate flowMilliLitres = 0; // memberikan 0 pada variabel flowMilliLitres totalMilliLitres = 0; // memberikan 0 pada variabel totalMilliLitres oldTime = 0; // memberikan 0 pada variabel oldTime

lcd.clear(); // menghapus LD

lcd.setCursor(0,0); // meletakkan posisi karakter pada LCD

lcd.print("Set Volume"); // mencetak karakter Set Volume pada LCD lcd.setCursor(0,1); // meletakkan posisi karakter pada LCD

lcd.print(volum,1); // mencetak nilai Volume pada LCD

if (Serial.available()){recev= Serial.read(); // kalau serial aktif maka data diambil dari android

if (recev=='A'){volum+=0.1;} // jika data yang dimasukkan A maka volum bertambah 1

else if (recev=='B'){volum-=0.1;} // jika data yang dimasukkan B maka volum berkurang 1

else if (recev=='Z'){state=5;} // jika data yang dimasukkan A maka state sama dengan 5

}

Serial.print("*F"); // mengirim data ke android

Serial.print(volum); // mengirim data ke android

(59)

Serial.print("*"); // mengirim data ke android

Serial.print("*G"); // mengirim data ke android

Serial.print(totalMilliLitres); // mencetak nilai totalmillitres pada LCD Serial.print("*"); // mengirim data ke android

Serial.print("*H"); // mengirim data ke android Serial.print(flowRate,3); // mengirim data ke android Serial.print("*"); // mengirim data ke android

delay(50); // delay 50 ms }

while (state==5) // perulangan selama nilai state 5 {

if (totalMilliLitres>=volum) // jika volume yang masuk lebih besar atau sama dengan

{

digitalWrite(pompa,LOW); // pompa mati

lcd.setCursor(0,0); // meletakkan posisi karakter pada LCD

lcd.print("Debit: "); // mencetak karakter Debit pada LCD

(60)

lcd.print(flowRate,3); // Print the integer part of the variable lcd.print(" L/S"); // mencetak karakter L/S pada LCD

lcd.setCursor(0,1); // meletakkan posisi karakter pada LCD lcd.print("Vol : "); // mencetak karakter Vol pada LCD lcd.print(volum); // mencetak karakter volum pada LCD lcd.print(" L"); // mencetak karakter L pada LCD

if (Serial.available()){if (Serial.read()=='Z'){state=2;delay(200);}} // jika serial aktif dan jika data dimasukkan z maka state sama dengan 2 dengan delay sama dengan 200 ms

}

else{

digitalWrite(pompa,HIGH); // pompa hidup

if (Serial.available()){if (Serial.read()=='Z'){state=2;delay(200);}} // jika serial aktif dan jika data dimasukkan z maka state sama dengan 2 dengan delay sama dengan 200 ms

if((millis() - oldTime) > 200){ // timer

detachInterrupt(sensorInterrupt); // mengambil data dari sensorinterrupt flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;

//

oldTime = millis(); // timer

flowRate = pulseCount; // membaca pulsa

(61)

flowRate=flowRate*0.0263/480/2.5*100; // nilai kalibrasi

totalMilliLitres+=flowRate; // menjumlahkan flowrate dengan berulang selama pompa aktif

/* flowMilliLitres = ((flowRate / 60) * 1000)/8256;

totalMilliLitres += flowMilliLitres;*/

unsigned int frac; // membuat variabel pada tipe data interger

lcd.setCursor(0,0); // meletakkan posisi karakter pada LCD lcd.print("Debit: "); // mencetak karakter Debit pada LCD lcd.print(flowRate,3); // mencetak nilai flowrate pada LCD lcd.print(" L/S"); // mencetak karakter L/S pada LCD

lcd.setCursor(0,1); // meletakkan posisi karakter pada LCD lcd.print("Vol : "); // mencetak karakter Vol pada LCD

lcd.print(totalMilliLitres); // mencetak nilai totalmillitres pada LCD lcd.print(" L"); // mencetak karakter L pada LCD

pulseCount = 0; // memberikan 0 pada variabel pulseCount

attachInterrupt(sensorInterrupt, pulseCounter, FALLING); // membuat attachInterrupt

}

}

(62)

Serial.print("*F"); // mengirim data ke android Serial.print(volum); // mengirim data ke android Serial.print("*"); // mengirim data ke android

Serial.print("*G"); // mengirim data ke android

Serial.print(totalMilliLitres); // mencetak nilai totalmillitres pada LCD Serial.print("*"); // mengirim data ke android

Serial.print("*H"); // mengirim data ke android

Serial.print(flowRate,3); // mencetak nilai flowrate pada LCD Serial.print("*"); // mengirim data ke android

}

}

void pulseCounter(){pulseCount++;} // pulsa dari sensor

Referensi

Dokumen terkait

Pengalaman seni : Seniman Senandung Jolo Pekerjaan : Pensiunan Penjaga

The writer said that the aims of this study are to categorize the types of slang words and phrases, interpreting and identifying the function of slang words and phrases, and to

Menurut Pasal 1 angka 6 Perpres 38/ 2015, Kerjasama Pemerintah dengan Badan Usaha (KPBU) adalah kerjasama antara peme- rintah dan Badan Usaha dalam Penyediaan

Pada variabel CTPS diperoleh bahwa seluruh responden memiliki fasilitas CTPS di rumahnya sejumlah 28 orang (100%), se- luruh responden mendapatkan pernah

Kategori alasan: Kepercayaan dan kecocokan antar rekan kerja.. Emily Ford, Betty Izumi, JostLottes and Dawn

Dengan membaca teks, siswa dapat menuliskan ungkapan atau kalimat saran, masukan, dan penyelesaian masalah (sederhana) sebagai warga negara dengan tepat. Dengan membaca teks,

Dari hasil ini menunjukan bahwa penggunaan filter berpori 0,5 mikron, 0,3 mikron dan karbon aktif sangat baik untuk aliran air PDAM yang kurang bersih.. Kata Kunci : Filter

• Siswa memerhatikan penjelasan guru tentang kegiatan yang akan dilakukan hari ini yaitu kegiatan melempar dan menangkap bola dengan menggunakan bola yang terbuat dari