Anda di halaman 1dari 2

////////////////////////////////////////////////////////////////////////////////// // fungsi setting Drops = pengaturan jumlah cairan yg

diberikan tiap jam (ml/h)


// data Drop rate sebagai sumber data untuk setting kecepatan motor
// ditampilkan pada PC (Drops)
//////////////////////////////////////////////////////////////////////////////////
void cek_Up_Drops()
{
int Set_Up_DR = digitalRead (1);
if (Set_Up_DR==LOW)
{
cek_Up_Drops();
}
else
{
delay(300);
if (Drops<500) //jika data volume lbh kecil dari 500 maka
{
Drops+=10; //data drops + 10
speedset=Drops; //data drops = data speedset (set kecepatan)
formula();
}
}
}
////////////////////////////////////////////////////////////////////////////////// // fungsi formula setting speed
// - formula setting drops ke drops1 (data pengaturan supply cairan yg akan
// dikeluarkan tiap jam "ml/h)"
// - formula setting drops (jumlah pemberian cairan ml/h) ke speedset (setting
// kecepatan motor)
//////////////////////////////////////////////////////////////////////////////////void formula()
{
Drops2=Drops;
Drops1=Drops2/60;
speedset=speedset*10; // data speedset sebagai sumber data pengaturan kecepatan motor
}
//////////////////////////////////////////////////////////////////////////////////
// fungsi counter = interupsi timer external 0 sebagai counter
// putaran motor untuk perbandingan jumlah kecepatan putaran motor tiap menit
//////////////////////////////////////////////////////////////////////////////////void IRQcounter()
{
IRQcount++; // increment data IRQ saat menerima picuan putaran motor
}
////////////////////////////////////////////////////////////////////////////////// //fungsi reset counter drops
//////////////////////////////////////////////////////////////////////////////////void CountDrops()
{
cli(); // disable counter
IRQcount = 0; // IRQ = 0
result = IRQcount; // result = IRQcount
sei(); // enable counter
}
//////////////////////////////////////////////////////////////////////////////////
//fungsi stop counter drops & pengambilan data counter
//////////////////////////////////////////////////////////////////////////////////
void StopCount()
{
cli(); // disable counter
result = IRQcount; // result = IRQcount
tetesan=tetesan+=result; // tambahkan data result ke tetesan
datatetesan();
tetesan = 0; // clear data counter
}
//////////////////////////////////////////////////////////////////////////////////
// fungsi datatetesan
// jumlah counter putaran motor dikonversi menjadi jumlah cairan yang dihasilkan (tetesdata1)
// > kolom = LEFT
// > satuan = ml
// yang dihasilkan dari perhitungan putaran motor sebanyak 10 putaran motor / ml. ditampilkan pada PC
//////////////////////////////////////////////////////////////////////////////////
void datatetesan()
{
tetesan1=tetesan1+=tetesan; // counter motor disimpan u/ dibandingkan dengan setting drops
tetesan2=tetesan1*0.1; // yang kemudian akan di reset u/ di hitung kembali pada
// perbandingan selanjutnya
tetesdata=tetesdata+=tetesan; // counter motor disimpan u/ data tampilan jumlah cairan
// yang telah dikeluarkan
tetesdata1=tetesdata*0.1; // data yang ditampilkan akan terus ditambahkan
lcd.setCursor(0xC,1); // set cursor baris 1 kolom 12
lcd.print(tetesdata1); // tampilkan data hitungan
}
//////////////////////////////////////////////////////////////////////////////////
// fungsi External = rutine timer interupsi over flow
// membandingkan jumlah pengaturan kecepatan motor (Drops1) dengan
// jumlah putaran motor yang terjadi (tetesan2) selama 1 menit (dataload)
// yg apabila jumlah cairan yg dihasilkan masih lebih sedikit dari pada
// jumlah cairan yg diatur, maka data speed akan ditambah sehingga putaran
// motor akan bertambah, demikian pula sebaliknya
//////////////////////////////////////////////////////////////////////////////////
void External()
{
dataload--;
if (dataload!=0)
{
dataload = dataload;
}
else
{
dataload1++;
dataload = 60; // reload interrupt timer1 = 60 second
if (Drops1>tetesan2) // membandingkan data drops1 (setting drop) dgn tetesan2
// (data counter putaran motor)
{
speedset+=10; // menambah kecepatan motor jika data drop lebih besar dari
// hasil counter putaran motor
tetesan1 = 0;
}
else if (Drops1<tetesan2)
{
speedset-=10; // mengurangi kecepatan motor jika data drop lebih kecil dari
// hasil counter putaran motor
tetesan1 = 0;
}
else if (Drops1==tetesan2)
{
tetesan1 = 0;
}
}
}

Anda mungkin juga menyukai