PERANCANGAN SISTEM KONTROL TANAMAN BAWANG BERBASIS MIKROKONTROLLER



1. Tujuan Perancangan[kembali]

1.  Membuat prototype aplikasi Sitem Kontrol Tanaman bawang yang dapat mempermudah dalam mengontrol kelembaban tanah dan kecukupan air pada tanaman bawang

2.     Mengaplikasikan konsep – konsep PWM, ADC, dan teori komunikasi mikrokontroller yang telah dipelajari saat praktikum. 

2. Komponen[kembali]

a. Soil Moisture



b. Water Sensor
c. Rain Sensor



d. Arduino
e. LCD

f. Motor DC



3. Dasar Teori[kembali]

-        Soil moisture sensor



Soil Moisture Sensor adalah suatu modul yang berfungsi untuk mendeteksi tingkat kelembaban tanah dan juga dapat digunakan untuk menentukan apakah ada kandungan air di tanah/ sekitar sensor. Cara penggunaan modul ini cukup mudah, yakni dengan memasukkan sensor ke dalam tanah dan setting potensiometer untuk mengatur sensitifitas dari sensor. Keluaran dari sensor akan bernilai 1 / 0 ketika kelembaban tanah menjadi tinggi / rendah yang dapat di treshold dengan potensiometer. Spesifikasi dari sensor ini adalah :

1.     Comparator menggunakan LM393

2.     Hanya menggunakan 2 plat kecil sebagai sensor

3.     Supply Tegangan 3.3-5 VDC

4.     Digital output D0 dapat secara langsung dikoneksikan dengan MCU dengan mudah

 


Sensor ini digunakan untuk mengukur kadar air didalam tanah, atau juga bisa untuk menedeteksi cuaca yang terjadi hari kemarin dan hari ini melalui media tanah, prinsip kerja sensor ini sangat simpel yaitu ada dua buah lempengan yang mana jika kedua buah lempengan terkena media penghantar maka elektron akan berpindah dari kutub + ke kutub - sehingga terjadilah arus yang akan menimbulkan tegangan. Pergerakan elektron dimanfaatkan untuk mendeteksi apakah ada air di tanah ataukah tidak, jika tanah basah berarti tanah tersebut mengandung media penghantar, namun jika tanah kering maka tidak mengandung media penghantar elektron, sehingga pada adc mikrokontroller akan terlihat perbedaannya. 

-        Water level Sensor



Prinsip kerja dari sensor water level adalah membaca resistasi yang dihasilkan oleh air   yang mengenai lempengan yang bergaris-garis pada sensor tersebut, semakin banyak air yang mengenai permukaan bergaris garis tersebut maka hambatannya semakin kecil dan ketika tidak ada air yang mengenai lempengan sensor tersebut maka hambatanya sangat besar atau bisa dikatakan tidak terhingga.

Karakteristik:

1)     Working voltage: 5V

2)      Working Current: <20ma

3)     Interface: Analog

4)      Width of detection: 40mm×16mm

5)      Working Temperature: 10℃~30℃

6)     Weight: 3g

7)     Size: 65mm×20mm×8mm

8)     Arduino compatible interface

9)     Low power consumption

 

Pinout: 

a)     "S" stand for signal input 

b)     "+" stand for power supply 

c)     "-" stand for GND

-      Rainsensor 

Rain Sensor (Sensor Hujan) adalah alat yang   dapat   membaca   intensitas air /dengan mengunakan panel sensor air. Panel ini dapat bekerja apabila terhubung dengan komponen lain. Panel ini adalah jenis resistor yang nilai hambatanya dapat berubah tergantung dari intensitas keberadaan air yang ada pada permukaan panel. Jika air mengenai permukaan panel semakin kecil hambatanya dalam panel (Sainsmart 2016). Interval Max = 1023,  internal  Min = 0.

Pembacaan sensor untuk  sistem :

1.     Hujan kecil                        : if  (rain >= 600  && rain <=700)

2.     Hujan sedang                    : if  (rain  >=  500  &&  rain <=600)

3.     Hujan deras                       : if  (rain >= 400 && rain <=500)

4.     Hujan sangat deras            : if  (rain < 400).

-  Arduino


Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.

-  LCD



Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter). Struktur LCD dapat dilihat pada gambar berikut:



Keterangan:

-         Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk.

-        Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).

-        Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).

-        Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).

-        Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk.

-         Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.

Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.

-  Motor DC

Motor Listrik DC atau DC Motor adalah suatu perangkat yang mengubah energi listrik menjadi energi kinetik atau gerakan (motion). Motor DC ini juga dapat disebut sebagai motor arus searah. Seperti namanya, DC Motor memiliki dua terminal dan memerlukan tegangan arus searah atau DC (Direct Current) untuk dapat menggerakannya.Motor Listrik DC ini biasanya digunakan pada perangkat-perangkat elektronik dan listrik yang menggunakan sumber listrik DC seperti vibrator ponsel, kipas DC dan bor listrik DC.

Motor Listrik DC atau DC Motor ini menghasilkan sejumlah putaran per menit atau biasanya dikenal dengan istilah RPM (Revolutions per minute) dan dapat dibuat berputar searah jarum jam maupun berlawanan arah jarum jam apabila polaritas listrik yang diberikan pada Motor DC tersebut dibalikan. Motor listrik DC tersedia dalam berbagai ukuran rpm dan bentuk. Kebanyakan motor listrik DC memberikan kecepatan rotasi  sekitar 3000 rpm hingga 8000 rpm dengan tegangan operasional dari 1,5V hingga 24V. Apabila tegangan yang diberikan ke motor listrik DC lebih rendah dari tegangan operasionalnya maka akan dapat memperlambat rotasi motor DC tersebut sedangkan tegangan yang lebih tinggi dari tegangan operasional akan membuat rotasi motor DC menjadi lebih cepat. Namun ketika tegangan yang diberikan ke Motor DC tersebut turun menjadi dibawah 50% dari tegangan operasional yang ditentukan maka Motor DC tersebut tidak dapat berputar atau terhenti. Sebaliknya, jika tegangan yang diberikan ke Motor DC tersebut lebih tinggi sekitar 30% dari tegangan operasional yang ditentukan, maka motor DC tersebut akan menjadi sangat panas dan akhirnya akan menjadi rusak.

Pada saat motor listrik DC berputar tanpa beban, hanya sedikit arus listrik atau daya yang digunakannya, namun pada saat diberikan beban, jumlah arus yang digunakan akan meningkat hingga ratusan persen bahkan hingga 1000% atau lebih (tergantung jenis beban yang diberikan). Oleh karena itu, produsen motor DC biasanya akan mencantumkan Stall Current pada Motor DC. Stall Current adalah arus pada saat poros motor berhenti karena mengalami beban maksimal.


4. Listining Program[kembali]

-   Master

//MASTER

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

 

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

           

#define SOIL A1

#define WATER A2

#define RAIN A0

//LiquidCrystal lcd(8, 9, 10, 11, 12, 13);        

int nilaiRAIN;

int nilaiSOIL;

int nilaiWATER;

float panjangSensor = 6 ;

void setup()     //Semua kode dalam fungsi ini dieksekusi sekali

{

  lcd.init();

 lcd.backlight();                           //Deklarasi pin A0 sebagai OUTPUT

  pinMode(A1, INPUT);

  pinMode(A2, INPUT);

  lcd.begin(16, 2);                             //Dimensi LCD yang digunakan

  Serial.begin(9600); //Set baud rate 9600

}

 

void loop()   //Semua kode dalam fungsi ini dieksekusi berulang

{

 

  int nilaiWATER = analogRead(WATER);

  float tinggiAir = nilaiWATER * panjangSensor / 1023;

   //lcd.clear();                             //Menghapus layar LCD

   lcd.setCursor(0, 0);

   lcd.print("Tinggi Air = ");

   lcd.setCursor(13, 0);

   lcd.print(tinggiAir);

   lcd.setCursor(14, 0);

   lcd.print("cm");

 

  if (tinggiAir < 3 )

  {

    Serial.println("5");

 //lcd.clear();                             //Menghapus layar LCD

 lcd.setCursor(0, 0);

 lcd.print("Tinggi Air = ");

 lcd.setCursor(13, 0);

 lcd.print(tinggiAir);

 lcd.setCursor(14, 0);

 lcd.print("cm");

    delay(100);

  }

  if (tinggiAir >= 3)

  {

    Serial.println("4");

    delay(100);

    lcd.setCursor(0, 0);

    lcd.print("Tinggi Air = ");

    lcd.setCursor(13, 0);

    lcd.print(tinggiAir);

    lcd.setCursor(14, 0);

    lcd.print("cm");

  }

 

   //SOIL

    nilaiSOIL = analogRead(SOIL);

   

    if (nilaiSOIL > 700) {

      Serial.println("1");

   delay(100);

      //lcd.clear();

      lcd.setCursor(0, 1);                     //Menentukan posisi kursor pada awal penulisan

      lcd.print("Kondisi : Kering");           //Menampilkan text pada LCD

    }

    if(nilaiSOIL<=700) {

      Serial.println("3");

   delay(100);

      //lcd.clear();

      lcd.setCursor(0, 1);                     //Menentukan posisi kursor pada awal penulisan

      lcd.print("Kondisi : Basah.");           //Menampilkan text pada LCD

  }

 

  delay(1000);

 

  //RAIN

    nilaiRAIN = analogRead(RAIN);

    if(nilaiRAIN <550) {

      Serial.println("2");

    delay(100);

    }

    if(nilaiRAIN>=550) {

      Serial.println("6");

    delay(100);

    }

    delay(100);

  

}


 SLAVE


//SLAVE

#include<Servo.h>

Servo servorain;

Servo servosoil;

#define in1 2 //Deklarasi pin 2 sebagai input 1

#define in2 3 //Deklarasi pin 10 sebagai input 2

#define duration 2000 //Deklarasi durasi 2000 ms

 

int pos1 = 0;

int pos2 = 0;

int data;

 

void setup()   //Semua kode dalam fungsi ini dieksekusi sekali

{

   servosoil.attach(10);    

   servorain.attach(9);

   pinMode(in1, OUTPUT); //Deklarasi in1 sebagai OUTPUT

  pinMode(in2, OUTPUT); //Deklarasi in2 sebagai OUTPUT

  Serial.begin(9600);            //Set baud rate 9600

}

void loop()                         //Semua program dalam fungsi ini dieksekusi berulang

{

  if(Serial.available()>0)

  {

    int data = Serial.read();

    if(data=='5')  //Jika data yang dikirimkan berlogika TINGGI AIR < 2

      {

        digitalWrite(in1, HIGH);  //in2 diberi logika 0

        digitalWrite(in2, LOW);

        //  delay(1000);                     //Jarak waktu 1000 ms setelah input dieksekusi

      }      

    else if(data=='3')  //Jika data yang dikirimkan berlogika KONDISI BASAH

      {

        servosoil.write(0);

        delay(15);

      }        

    else if(data=='2')  //Jika data yang dikirimkan berlogika   ADA HUJAN

      {

        servorain.write(90);

        }

    else if(data=='1')  //Jika data yang dikirimkan berlogika   KONDISI KERING

      {

        servosoil.write(90);

        delay(15);

      }

    else if(data=='4'){

        digitalWrite(in1, LOW);  //in2 diberi logika 0 TINGGI AIR > 4

        digitalWrite(in2, LOW);

        }

    if(data=='6'){

        servorain.write(0);  //itidak ada hujan

        delay(100);

        }

  }

}

5. Flowchart[kembali]

Master







Slave








6. Rangkaian Simulasi[kembali]




7. Hardware dan Video[kembali]








8. Analisis[kembali]

Sistem kontrol tanaman bawang ini memiliki prinsip kerja dimana jika kandungan air pada tanaman bawang sudah cukup, maka jika terjadi hujan dan agar air hujan tidak mengenai tanaman bawang dan kandungan air pada bawang tidak terlebih maka digunakan terpal untuk menutup tanaman bawang dari atas dengan rain sensor, jadi saat rain sensor mendeteksi hujan, maka output nya yang berupa motor DC yang akan membuka terpal untuk menutup tanaman bawang tersebut. Kemudian, karena tamanan membutuhkan air sesuai dengan kebutuhannya maka digunakan soil moisture untuk mendeteksi kelembapan dari tanah, yang dimana saat tanah kering, maka sensor soil moisture akan mendeteksi tanah kering tersebut dan output pada motor servo akan menghidupkan keran air untuk menyiram tanaman. Selanjutnya disaat hujan turun, jika terdapat genangan air yang turun dari terpal yang akan menganggu kecukupan air dari tanaman, maka akan didetekesi level air pada genangan tersebut, dan apabila genangannya terlalu tinggi, maka water level akan mengeluarkan output servo yang akan membuka saluran pembuangan air. 

9. Kesimpulan[kembali]

Berdasarkan percobaan yang telah dilakukan, perancangan sistem kontrol tanaman bawang dapat dilakukan dengan pengaplikasiaan materi yang telah dipelajari saat praktikum seperti komunikasi pada Arduino dan dengan menggunakan water level sensor, rain sensor dan soil moisture sensor. Perancangan yang dibuat dalam bentuk prototypr ini bertujuan untuk  mempermudah dalam mengontrol kelembaban tanah dan kecukupan airnya. 

10. Download[kembali]

Video Rangkaian Download

File Rangkaian Download

Datasheet resistor Download

Datasheet motor DC Download


Tidak ada komentar:

Posting Komentar

[Menuju Akhir] [KEMBALI KE MENU SEBELUMNYA]   DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. P...