• Tidak ada hasil yang ditemukan

Sistem Pengatur Pengisian Tangki Air 2 L Menggunakan Sensor Flow Meter Berbasis Mikrokontoler ATMega8 Chapter III V

N/A
N/A
Protected

Academic year: 2017

Membagikan "Sistem Pengatur Pengisian Tangki Air 2 L Menggunakan Sensor Flow Meter Berbasis Mikrokontoler ATMega8 Chapter III V"

Copied!
35
0
0

Teks penuh

(1)

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.2Rangkaian 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.

(2)

 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.3Rangkaian 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

(3)

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

(4)

Gambar 3.6 Rangkaian Flow Sensor 3.6Flowchat Sistem

(5)

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

(6)

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:

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)

(7)

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 % =

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

(8)

#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);

(9)

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;

(10)

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) {

(11)

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;}

(12)

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");

(13)

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");

(14)

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);

(15)

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); }

(16)

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);}}

(17)

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;

(18)

}

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

(19)

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

(20)

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

(21)

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 % =

Adapun program yang menjalankan sensor ini sebagai berikut : #include <LiquidCrystal.h>// memasukkan ke library

(22)

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

(23)

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

(24)

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

(25)

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 }

(26)

{

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

{

(27)

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

(28)

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

} } }

(29)

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

}

(30)

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

(31)

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

(32)

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

(33)

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

}

}

(34)

BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah melakukan tahap perancangan dan pembuatan sistem yang kemudian dilanjutkan dengan tahap pengujian dan analisa maka dapat diambil kesimpulan sebagai berikut :

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 :

(35)

5.2 Saran

Dari hasil Proyek Akhir ini masih terdapat beberapa kekurangan dan

dimungkinkan untuk pengembangan lebih lanjut.Oleh karenanya penulis merasa perlu untuk memberi saran sebagai berikut:

1.Untuk penelitian kedepannya,perlu diperhatikan ukuran volume air yang akan dialirkan

Gambar

Gambar 3.1 Diagram blok sistem
gambar berikut :
Gambar 3.6 Rangkaian Flow Sensor
Gambar 4.1. Informasi Signature Mikrokontroler
+4

Referensi

Dokumen terkait

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

[r]

demikian, R&amp;D yang merupakan salah satu keputusan strategis perusahaan dapat menjadi penyebab dalam konflik kepentingan karena perbedaan tujuan antara manajer dan

(1) Seksi Kesehatan Hewan mempunyai tugas melakukan penyiapan bahan perencanaan, perumusan kebijakan teknis, pembinaan dan koordinasi serta pelaksanaan