Selasa, 28 Juni 2011

PENGISIAN TANGKI (TANDON) AIR OTOMATIS MENGGUNAKAN ATMEGA8535

Beberapa bulan yang lalu saya telah membuat aplikasi pengisian tangki air otomatis menggunakan mikrokontroler. Mungkin aplikasi ini sangat sederhana dan terbilang cukup mahal jika menggunakan mikrokontroler, dikarenakan dipasaran sudah banyak yang menjual sensor level air menggunakan bandul dan sudah mempunyai output untuk relay. Tetapi tidak ada salahnya jika kita mencoba membuatnya menggunakan mikrokontroler, anggap saja sebagai latihan.

Pada aplikasi ini saya menggunakan prinsip penekanan push button sebagai cara untuk mendeteksi level air (sensor level air). Terdapat 2 buah sensor level air yaitu MAX dan MIN, sedangkan GND digunakan untuk mendeteksi sensor mana yang sedang terbaca. Cara kerjanya jika air berada dibawah sensor MIN maka sensor MIN (PC3) akan belogika high. Kemudian jika air berada diatas sensor MIN maka sensor MIN (PC3) akan berlogika low (terhubung ke GND karena terkena air). Begitu juga untuk sensor MAX (PC2), jika air sudah penuh (menyentuh sensor MAX) maka yang awalnya sensor MAX (PC2) berlogika high akan berubah menjadi low.

Dengan kata lain jika tangki air sedang kosong maka sensor MIN dan MAX akan berlogika high dan jika air sudah penuh sensor MIN dan sensor MAX akan berlogika low.

Kemudian terdapat duah buah saklar yaitu saklar MODE dan POMPA. Saklar MODE digunakan untuk pemilihan mode yaitu otomatis dan manual. Jika mode otomatis maka motor pompa akan bekerja (mengisi) jika tangki air sedang kosong (dibawah sensor MIN), dan akan berhenti mengisi ketika terdeteksi sensor MAX (penuh). Untuk mode manual motor pompa dapat dinyalakan secara manual menggunakan saklar POMPA, jika dinyalakan motor pompa tersebut dan air sudah penuh, maka saya buat motor pompa tersebut mati dengan sendirinya. Dan terdapat beberapa LED yang digunakan sebagai indikator untuk masing-masing parameter.


Berikut adalah listing program lengkapnya:

//kondisi=0 adalah keadaan kosong,
//kondisi=1 adalah keadaan penuh,
//penggunaan variabel kondisi berfungsi sebagai penghilang
//efek bouncing yg disebabkan oleh gelombang air

bit kondisi;

#include <mega16.h>

#define pompa PORTA.0
#define ind_pompa PORTA.5
#define ind_min PORTA.7
#define ind_max PORTA.6
#define mode PINC.0
#define on_off PINC.1
#define maxim PINC.2
#define minim PINC.3

void otomatis()//pemilihan mode otomatis
{
if  (mode==1)//mode otomatis
  {
    if (kondisi==0)
    {
        if (maxim==1)//kosong   
            {
            pompa=0;
            ind_pompa=0;       
            }  
         if (maxim==0)//penuh
            {        
            pompa=1;
            ind_pompa=1;
            kondisi=1;
            }
    }                 
    if (kondisi==1)
    {        
        if (minim==1)
        {
        kondisi=0;
        }
    }       
  }
}    

void manual()//pemilihan mode manual
{
if  (mode==0)//manual
    {
     if (maxim==0)
       {
              pompa=1;
              ind_pompa=1;
       }
    else
       {
        if (on_off==0)
            {  
            pompa=0;
            ind_pompa=0;
            }
        else  
            {
            pompa=1;
            ind_pompa=1;
            }
       }
    }
}

void indikator()//menyalakan indikator LED MIN dan MAX
{
if (maxim==0) ind_max=0;
    else ind_max=1;
if (minim==0) ind_min=0;  
    else ind_min=1;
}

void main(void)
{
DDRA=0xff;   //inisialisasi port mikro
PORTA=0xff;
DDRC=0×00;
PORTC=0xff;

while (1)
      {
      otomatis();
      manual();
      indikator();
      };
}

Untuk mendapatkan file program dalam bentuk CodeVision AVR silakan download pada link dibawah ini.


Semoga bermanfaat…

7 komentar:

  1. mas,saya mau nanya,gimana kita menentukan spesifikasi relai yang digunakan dalam hubungannya dengan spesifikasi pompa motor itu sendiri.misalnya saya punya pompa motor AC 220V/400 Watt.nah,relai yang cocok itu apa?
    terimakasih.

    BalasHapus
  2. 400 watt
    sehingga 400 watt/220volt=1.81 ampere

    sehingga harus memilih relai dengan tegangan coil 5volt (klo tegangan koilnya bebas, tai rangkaian diatas lebih tepat 5 volt, klo tegangannya lebih besar harus menggunakan rangkaian driver transistor)dengan minimal 1.81 ampere dan klo bisa lebih besar dari itu nilainya... kemudian kontak relainya haru dapat menghandle 220 volt Ac

    BalasHapus
  3. mas, aku mau nanya, sensor yg dipake dsni itu seperti sebuah kabel yg d masukkan k dlm air ya ?
    trus qt taunya dia berlogika high atau low itu indikatonya dari arus yg mengalir ke di kabel itu ?

    lalu mau tanya juga kok link buat codingnya ga bsa di akses ya mas ?
    makasihh..

    BalasHapus
  4. mas, kok link buat download coding ga bisa ya ?
    boleh mnt codingnya ga mas sm boleh minta list komponennya yg lengkap ga ?
    klo bisa d email ya mas, ygyosnita@gmail.com
    makasihh banyakk..

    BalasHapus
  5. @yogi yosnita : betul sekali..., logikanya ketika sensor minimun tersentuh air maka sensor minimum tersebut akan terhubung ke ground, jika tidak tersentuh air maka logikanya high. begitu juga untuk sensor maksimal

    BalasHapus
  6. link untuk download codingnya udah saya coba dan bisa kok...
    trus list komponennya sama persis kaya rangkaian diatas

    BalasHapus
  7. mas, aku udah download tuh codingnya,,
    tapi bingung soalnya codingnya tu banyak bgt, trus ada folder2 lain lagi kan didlmnya, bisa di jelasin ga codingnya yang di folder itu buat yg mana2 aja, sm urutan2nya kya gmn mas ?

    makasihh

    BalasHapus