Rabu, 31 Agustus 2016

Water Turn Arduino Sesi Duo

Halaman ini adalah lanjutan dari praktek sebelumnya pada halaman

Water Turn Arduino Sesi 1

Nah bagi sahabat yang belum mengunjungi halaman sebelumnya silahkan klik link nya yaaaaa.....

 Cara kerja alat yang di rancang pada kesempatan kali ini adalah sebagai berikut  :

* Ketika Air kosong maka pompa otomtis mengisi air.
* Ketika Air penuh maka otomatis pompa air berhenti
* Ketika Saklar no 2 ditekan maka pompa akan bekerja secara manual mengisi air.
* Ketika Saklar no 3 ditekan maka pompa akan berhenti secara manual.

Ya intinya adalah alat ini dapat bekerja  secara otomatis dan juga dapat bekerja secara manual.


Apa saja yaaa .. yang kita perlukan dalam praktek kali ini......?
Tolong persiapkan yaaa  :
*  Mikrokontroller Arduino
*  Sensor jarak ping parallax
*  3 Buah Rangkaian Saklar
*  LCD 16x2 atau 20x4 Karakter.
*  Led 1 buah saja untuk simulasi Pompa.

Alat yang kita praktekan kali ini dapat dipasang pada torn besar atau kecil. Wah kok bisa yaaa....  ?  massa siiich.. kan beda ketinggiannya....?

Alat ini memang dirancang agar dapat di setel dan di sesuaikan dengan ukuran penampung air. karena Sensor ping Parallax yang di gunakan hanya sampai mengukur maksimal 3 meter maka ketinggian Torn harus di bawah 3 meter yaaa..

Seperti yang kita ketahui bahwaa sensor jarak yang kita gunakan pada prinsipnya adalah mengukur jarak dari sensor ke benda di depannya, dalam hal ini adalah jarak Sensor ke permukaan air. Sedangkan yang kita perlukan adalah jarak atau ketinggian airnya bukan jarak sensornya.





Pada saat normal atau baru di hidupkan alat akan berada pada posisi Running dimana alat akan bekerja sebagai berikut  :
*  Alat akan mengukur jarak dengan sensor dan akan di konversi ke tinggi air.
*  Tinggi  air akan di tampilkan di layar LCD
*  Jika tinggi air berada di batas bawah maka pompa akan di hidupkan
*  Jika pompa mengisi air dan sudah mencapai batas atas maka pompa akan berhenti.
Nah dengan cara kerja di atas maka air di dalam tower akan tetap terjaga.

Cara Penyetingan Alat
*  Tekan S1 ( Saklar 1) dan tampilan layar LCD akan masuk ke Pengaturan Tinggi Sensor. Sensor akan membaca jarak ke dasar torn. Misalnya jarak sensor dari dasar torn 80 cm Dalam praktek kali ini tirn harus dalam ke adaan kosong. Jarak inilah yang akan di simpan kememori 
     -  Bila jarak sudah sesuai tekan S1 dan data akan disimpan dan akan masuk ke menu selanjutnya
*  Sekarang kita berada di menu memasukan batas atas, misalkan tingi torn adalah 75 dan kita akan menyetel batas atas di level 70 maka halangi sensor sampai terbaca 70 cm  bila sudah sesuai nilainya tekan S1 untuk menyimpan data dan akan masuk ke menu mengatur batas bawah level air.
* Batas bawah level air kita setel saja 10 cm dari dasar torn, Hal ini dimaksudkan agar sebelum air dalam torn habis pompa air akan hidup dan mengisi torn. Cara penaturannya sama dengan batas atas. Bila sudah sesuai tinggal tekan S1 dan selesai sudah pengaturan alat.

Cara menyeting alat
Untuk menyeting alat lakukan langkah berikut


*****************************************************************************

#include <EEPROM.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
long  x;
int xx = 51;
String baris1, baris2 , b1, b2;
int z, ba,bb, t1,t2, t3;
boolean K1,K2,K3;
int y1,y2,a,ba1,ba2,bb1,bb2; // disimpan di eeprom 1
int mode=1;

void setup() {
pinMode (13 ,OUTPUT);
pinMode (10,INPUT) ;
pinMode (9,INPUT) ;
pinMode (8,INPUT) ;
  lcd.begin(20, 4);
   pinMode (53,OUTPUT); digitalWrite (53,1);
y1 = EEPROM.read (5);
y2 = EEPROM.read (6);a=(y1*100)+ (y2);
ba1 = EEPROM.read(1);
ba2 = EEPROM.read(2);
ba=ba1*100; ba=ba + ba2;
bb1 = EEPROM.read(3);
bb2 = EEPROM.read(4);
bb = bb1*100; bb = bb+bb2;
pinMode(8,INPUT); pinMode(9,INPUT); pinMode(10,INPUT);
}
void loop() {
pinMode(xx,OUTPUT);
digitalWrite(xx,LOW);
delayMicroseconds(2);
digitalWrite(xx,HIGH);
delayMicroseconds(5);
digitalWrite(xx,LOW);
pinMode(xx,INPUT);
x=pulseIn(xx,HIGH);
x=x/29/2;
z=a-x;
t1 = digitalRead(10) ;
t2 = digitalRead(9) ;
t3 = digitalRead(8) ;
delay (150);

if (mode ==1 ){
baris1= "Tinggi Air = "+String(z)+ " Cm";
  if (z <= bb ){
    digitalWrite (13,HIGH);
    baris2= "Pompa Air On" ;
   }
  if (z>=ba ) {
    digitalWrite (13,LOW);
    baris2 = "Pompa Air Off"; }
  if (t1 == 1 && K1 == false ) {
    K1 = true;    mode = 2 ; }

   if (t2 == 1 && K2 == false ) {
    K2= true; digitalWrite (13,1);
    baris2= "Pompa Air On" ; }
   if (t3 == 1 && K3 == false ) {
    K3= true; digitalWrite (13,0);
        baris2= "Pompa Air Off" ;}
   if (t1 == 0) K1= false;
   if (t2 == 0) K2 = false;
   if (t3 == 0) K3=false;
}
if (mode == 2){
  if (t1 == 0) K1 = false;
  baris1 = "Seting Tinggi Sensor";
  baris2 ="Tinggi : "+ String (x) +" Cm";
  if(t1 == 1 && K1 == false ) { mode = 3; K1= true ;
   y1=x/100;   EEPROM.write (5,y1);
   y2 = x% 100; EEPROM.write(6,y2);
   mode=3;
   a=x;
  }
  delay (90) ;
}
if (mode == 3 ){
  delay(90);
  if (t1 == 0) K1 = false;
  baris1 = "Set Batas Atas";
  baris2 = "Tinggi  : " + String (z) + " Cm";
  if(t1==1 && K1== false ) {
    K1= true;
    ba1=z/100; ba2=z%100;
  EEPROM.write (1,ba1);
  EEPROM.write (2,ba2);
  ba=z;
  mode=4;
}}

if (mode == 4 ){
  delay(110);
  if (t1 == 0) K1 = false;
  baris1 = "Set Batas Bawah";
  baris2 = "Tinggi  : "+ String (z)+ " Cm" ;
  if(t1==1 && K1== false) {
    K1= true ;
    bb1=z/100; bb2=z%100;
  EEPROM.write (3,bb1);
  EEPROM.write (4,bb2);
  baris2 = "Pompa Air Off";
  bb=z;
  mode =1 ;
}}
if (b1 != baris1 || b2 != baris2 ) {
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print(baris1);
  lcd.setCursor(0, 1); lcd.print(baris2);
  b1=baris1 ; b2= baris2;
}}

*****************************************************************************




Tidak ada komentar:

Posting Komentar