Jumat, 30 Agustus 2013



BAB IV
IMPLEMENTASI DAN ANALISIS SISTEM

Setelah perencanaan dan pembuatan sistem maka langkah selanjutnya yaitu melakukan implementasi terhadap sistem yang telah dibuat. Pengujian dilakukan untuk mengetahui apakah sistem yang telah
dibangun dapat berjalan sesuai dengan yang diinginkan. Pengujian dan analisa yang dilakukan meliputi :  mikrokontroller, sensor ultrasonik PING, modem dan  motor stepper.
Dalam implementasi dari beberapa rangkaian tersebut diatas dengan cara dihubungkan dengan power supply sesuai dengan perencanaan. Setelah dilakukan pengujian maka langkah selanjutnya adalah  dilakukan analisa terhadap sistem yang telah dibuat, sehingga bisa membandingkan dengan teori yang sudah ada, apakah ada perbedaan antara praktek dan teori, kemudian dicari pemecahan dari masalah tersebut.

4.1 Catu Daya
Catu daya yaitu digunakan untuk memberikan tegangan masukan ke mikro, dan sumber daya arus searah (DC) Pada tiap-tiap rangkaian dalam sistem. Rangkaian catu daya dalam sitem ini  terdiri dari 4 buah dioda penyearah, sebuah LED, sebuah kapasitor 1000 uf / 50 volt, sebuah kapasitor 100 nf, sebuah resistor 1 Kohm, sebuah IC penstabil tegangan dan sebuah transformator. Transformator yang di gunakan berkapasitas 2A dengan tegangan primer 220 volt AC dan tegangan sekunder 12 volt AC tersebut untuk masukan atau tegangan ke motor steper langsung. Kemudian tegangan 12 AC di konekan ke IC penstabil tegangan adalah IC 7805 yang di gunakan untuk mensetabilkan tegangan sebesar +5 volt dan di gunakan untuk mengaktifkan rangkaian mikrokontroler atau masukan tegangan ke mikro.


4.2 Mikrokontroler  AVR AT Mega16

Implementasi ini dimaksud untuk memeriksa apakah mikrokontroller dapat berfungsi dengan baik atau tidak. Untuk pengujiannya memakai software CodeVision AVR C Compiler.
         Dalam penggunaan perangkat keras ini, mikrokontroler di gunakan untuk mesin atau rangkaian elektronika pengontrol, dengan jalan kabel atau input output portA1 ke sensor ultrasonic. PortB ke buffer inframerah atau swict yang berfungsi sebagai menghentikan motor stepper. PortD0 dan D1 ke konektor komunikasi serial menju modem  dan motor stepper di portD3 dan D4.
  4.3 Sensor Ultrasonik

Fungsi sensor ultrasonic di rangkaian ini  adalah memberi informasi jarak dari kisaran 3cm hingga 3m, sedangkan yang digunakan dalam alat ini sensor ultrasonik menginformasikan jarak air dengan jarak sebagai berikut :  besar dari 16cm dari permukaan air ke sensor ultrasonik, kurang dari 12cm dari permukaan air ke sensor ultrasonik dan kurang dari 6cm dari pemukaan air ke sensor ultrasonik.

4.4 Modem
         Modem ini berfunsi sebagai pengirim sms dari mikrokontroler ke handpone dengan pesan info jarak yang sudah dimasukan dalam program pada mikrokontroler.

4.5 Motor Stepper
         Motor steper akan berfungi jika kondisi air di posisi besar dari 16cm dan kurang dari 6cm dari permukaan air. Saat di posisi 16cm dari permukaan air motor stepper akan bergerak searah jarum jam dan begitu sebaliknya jika posisi air pada 6cm dari permukaan air, Motor steper akan bergerak kebalikannya.
           4.6 Tampilan Flowchart Sistem

Cara Kerja Flowchart Sistem
Dalam alat pemantauan pasang dan surut  air ini digunakan mikrokontroller sebagai pembanding data input ketinggian default dari user dengan data ketinggian air yang telah dibaca oleh sensor. Sensor yang dipakai yaitu sensor ultrasonik karena gelombang ultrasonik dapat memantul pada permukaan air dan sensor ultasonik memiliki keakuratan yang bagus. Membaca ketinggian air oleh sensor ultrasonik ini menggunakan prinsip lamanya pantulan gelombang tersebut atau intensitas kekuatan pantulannya. Output dari modul sensor ultrasonik ini akan dikonversi datanya menjadi data digital oleh ADC  per satuan waktu, dan data tersebut akan masuk sebagai data input dari sensor pada komparator yaitu mikrokontroler.
Untuk proses pertama user (petugas air) akan memberi input ketinggian air yang diinginkan pada keypad matriks dan data tersebut akan dibaca oleh mikrokontroler sebagai data input user. Mikrokontroler yang telah diprogram akan selalu membanding data dari sensor dan data dari user, kedua data tersebut sebelumnya dikonversi menjadi data 8 bit atau data 16 bit dan jenis mikrokontroler yang nyaman untuk proses ini yaitu mikrokontroller jenis AVR (AT Mega16).
Ada tiga kondisi output dari hasil pembandingan data masukan,
Pertama apabila kondisi air besar dari 16cm, dari sensor ultrasonik maka mikrokontroler akan memberi sinyal output atau perintah pada driver motor untuk menutup pintu dan mengirim sms pada handphone .
Kedua apabila kondisi air kurang dari 12cm, dari sensor ultrasonik maka mikrokontroler akan memberi sinyal output atau perintah pada driver motor untuk untuk diam atau tetap pada kondisi tersebut (motor tidak bekerja) akan tetapi mokrokontroler akan menginformasikan atau mengirim sms pada handphone.
Ketiga apabila data kondisi air kurang dari 6cm, dari sensor ultrsonik maka mikrokontroler akan memberi sinyal output atau perintah pada driver motor untuk membuka pintu air (motor bekerja) serta modem mengirimkan sms pada handphone dan menunggu sampai kondisi air surut dan kemudian pintu akan tertutup.
Setiap instruksi atau pembandingan data ini dilakukan terus-menerus setiap satuan waktu (contoh per sepuluh detik) sehingga apabila motor sedang bekerja (membuka atau menutup) dan ketinggian air sudah kembali ke ketinggian yang diinginkan maka dengan segera pintu air akan mempertahankan kondisi tersebut hingga perubahan selanjutnya.
          Output atau sinyal dari mikrokontroler ini akan diterima oleh driver motor. Data digital dari mikrokontroller ini masih lemah dan fungsi dari driver motor ini untuk menguatkan atau menggerakkan motor gearbox yang dipasang pada pintu air. Prinsip kerja driver motor ini yaitu mengatur arah putar motor gearbox ini sehingga motor pintu air ini bisa berfungsi untuk membuka dan menutup pintu air ini dengan mudah.

4.7 Software
Standar bahasa C yang asli adalah standar dari UNIX.  Sistem operasi, kompiler C dan seluruh program aplikasi UNIX yang esensial ditulis dalam bahasa C.
Struktur penulisan bahasa C umum terdiri atas empat blok, yaitu;
Header
#include <mega16.h>
#include<delay.h>

       Keterangan:       
#(Preprosessor) digunakan untuk memasukkan(include) text dari file lain.
#include  berarti meng-include file mega16 yang ada di CC:\cvavr\inc\. Dengan demikian berarti kita mempersiapkan, fungsi-fungsi dan instruksi-instruksi yang dapat digunakan pada pemrogramman mikrokontroler ATMega16 seperti perintah DDRA, PORTA, PORTB, PINA, register-registernya dan lain-lain.
                                             
Proses Level ketinngian air
Listing Program:
#define Clock           PORTD.2
#define Direction       PORTD.3
#define Enable          PORTD.4
int Arah,SMS1,SMS2;
#include
#include
#define SigOut PORTA.1
#define SigIn PINA.1
#define DirSig DDRA.1
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include
#include
#include "Deklar.c"
#include "Ping.c"
#include "GSM.c"
#include "Stepper.c"
void main(void)
{ 
Deklarasi();
lcd_init(16);        
//---- Arah=1 --> dianggap air penuh, arah motor membuka
Arah=1;
SMS1=0;
SMS2=0;
while (1)
      {
     //--- Arah==1 --> motor turun
      if((JarPing>16))
       {
        PutarTutup();
        if(PINB.2==0)  // kena limit bawah
        {
          PutarBuka();  
          SendSMS16();
        }
       }
         if((JarPing>=11)&&(JarPing<=12))
       {
          SendSMS11();
        }
      //--- Arah==0 --> motor naik
      if((JarPing<6 span="">
       {       
        PutarBuka();
        if(PINB.1==0) // kena limit atas
        {
          PutarTutup();
          SendSMS6();            
        }
       }
      };
}
Program ini menampilkan level ketinggia air apabila kondisi air besar dari 16cm, dari sensor ultrasonik maka mikrokontroler akan memberi sinyal output atau perintah pada driver motor untuk menutup pintu dan mengirim sms pada handphone .
Kedua apabila kondisi air kurang dari 12cm, dari sensor ultrasonik maka mikrokontroler akan memberi sinyal output atau perintah pada driver motor untuk untuk diam atau tetap pada kondisi tersebut (motor tidak bekerja) akan tetapi mokrokontroler akan menginformasikan atau mengirim sms pada handphone.
Kemudian apabila data kondisi air kurang dari 6cm, dari sensor ultrsonik maka mikrokontroler akan memberi sinyal output atau perintah pada driver motor untuk membuka pintu air (motor bekerja) serta modem mengirimkan sms pada handphone dan menunggu sampai kondisi air surut dan kemudian pintu akan tertutup.

Proses Pembacaan Sensor PING (Sensor Ultrasonik)
Listing Program:
float BacaPing(void)
{
        counter=0; //Initial value
        DirSig=1; //Set as output
        SigOut=1;
        delay_us(5);
        SigOut=0;
        DirSig=0; //Set as input
        SigOut=1;
        while (SigIn==0)          
                {}
        while (SigIn==1)
                {counter++;}
        return distance;
}

Proses Pengiriman SMS
Listing Program:
void SendSMS16 (void)
{
 lcd_clear(); 
// lcd_gotoxy(0,0);
// lcd_putsf("Mengirim SMS");
//printf("AT");
putchar('A');
putchar('T');
delay_ms(500);
//printf("AT+CMGF=1");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('M');
putchar('G');
putchar('F');
putchar('=');
putchar('1');
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
//printf("AT+CSCA=");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('S');
putchar('C');
putchar('A');
putchar('=');
putchar(0x22);
//printf("+6289644000001");
// No SMS Center Operator yg digunakan
// THREE
putchar('+');
putchar('6');
putchar('2');
putchar('8');
putchar('9');
putchar('6');
putchar('4');
putchar('4');
putchar('0');
putchar('0');
putchar('0');
putchar('0');
putchar('0');
putchar('1');
putchar(0x22);
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
//printf("AT+CMGS=");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('M');
putchar('G');
putchar('S');
putchar('=');
putchar(0x22);
//printf("+6281802414034");
// No HP Tujuan
putchar('+');
putchar('6');
putchar('2');
putchar('8');
putchar('9');
putchar('9');
putchar('5');
putchar('5');
putchar('5');
putchar('8');
putchar('0');
putchar('3');
putchar('3');
putchar(0x22);
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
// Isi Pesan
putchar(0x0D);
putchar('K');
putchar('e');
putchar('t');
putchar('i');
putchar('n');
putchar('g');
putchar('g');
putchar('i');
putchar('a');
putchar('n');
putchar(' ');
putchar('a');
putchar('i'); 
putchar('r');
putchar(':');
putchar('1');
putchar('6');
putchar(' ');
putchar('c');
putchar('m');
putchar(0x1A);
lcd_clear(); 
lcd_gotoxy(0,0);
lcd_putsf("SMS Terkirim"); 
lcd_gotoxy(0,1);
lcd_putsf("jarak 16 cm");
delay_ms(1000);
}
void SendSMS11 (void)
{
 lcd_clear(); 
// lcd_gotoxy(0,0);
// lcd_putsf("Mengirim SMS");
//printf("AT");
putchar('A');
putchar('T');
delay_ms(500);
//printf("AT+CMGF=1");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('M');
putchar('G');
putchar('F');
putchar('=');
putchar('1');
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
//printf("AT+CSCA=");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('S');
putchar('C');
putchar('A');
putchar('=');
putchar(0x22);
//printf("+6289644000001");
// No SMS Center Operator yg digunakan
// THREE
putchar('+');
putchar('6');
putchar('2');
putchar('8');
putchar('9');
putchar('6');
putchar('4');
putchar('4');
putchar('0');
putchar('0');
putchar('0');
putchar('0');
putchar('0');
putchar('1');
putchar(0x22);
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
//printf("AT+CMGS=");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('M');
putchar('G');
putchar('S');
putchar('=');
putchar(0x22);
//printf("+6281802414034");
// No HP Tujuan
putchar('+');
putchar('6');
putchar('2');
putchar('8');
putchar('9');
putchar('9');
putchar('5');
putchar('5');
putchar('5');
putchar('8');
putchar('0');
putchar('3');
putchar('3');
putchar(0x22);
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
// Isi Pesan
putchar(0x0D);
putchar('K');
putchar('e');
putchar('t');
putchar('i');
putchar('n');
putchar('g');
putchar('g');
putchar('i');
putchar('a');
putchar('n');
putchar(' ');
putchar('a');
putchar('i'); 
putchar('r');
putchar(':');
putchar('1');
putchar('1');
putchar(' ');
putchar('c');
putchar('m');
putchar(0x1A);
lcd_clear(); 
lcd_gotoxy(0,0);
lcd_putsf("SMS Terkirim");
lcd_gotoxy(0,1);
lcd_putsf("jarak 11 cm");
delay_ms(1000);
}
void SendSMS6 (void)
{
 lcd_clear(); 
// lcd_gotoxy(0,0);
// lcd_putsf("Mengirim SMS");
//printf("AT");
putchar('A');
putchar('T');
delay_ms(500);
//printf("AT+CMGF=1");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('M');
putchar('G');
putchar('F');
putchar('=');
putchar('1');
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
//printf("AT+CSCA=");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('S');
putchar('C');
putchar('A');
putchar('=');
putchar(0x22);
//printf("+6289644000001");
// No SMS Center Operator yg digunakan
// THREE
putchar('+');
putchar('6');
putchar('2');
putchar('8');
putchar('9');
putchar('6');
putchar('4');
putchar('4');
putchar('0');
putchar('0');
putchar('0');
putchar('0');
putchar('0');
putchar('1');
putchar(0x22);
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
//printf("AT+CMGS=");
putchar('A');
putchar('T');
putchar('+');
putchar('C');
putchar('M');
putchar('G');
putchar('S');
putchar('=');
putchar(0x22);
//printf("+6281802414034");
//printf("+628995558033");
// No HP Tujuan
putchar('+');
putchar('6');
putchar('2');
putchar('8');
putchar('9');
putchar('9');
putchar('5');
putchar('5');
putchar('5');
putchar('8');
putchar('0');
putchar('3');
putchar('3');
putchar(0x22);
putchar(0x0D);
putchar(0x0A);
delay_ms(500);
// Isi Pesan
putchar(0x0D);
putchar('K');
putchar('e');
putchar('t');
putchar('i');
putchar('n');
putchar('g');
putchar('g');
putchar('i');
putchar('a');
putchar('n');
putchar(' ');
putchar('a');
putchar('i'); 
putchar('r');
putchar(':');
putchar('0');
putchar('6');
putchar(' ');
putchar('c');
putchar('m');
putchar(0x1A);
lcd_clear(); 
lcd_gotoxy(0,0);
lcd_putsf("SMS Terkirim");  
lcd_gotoxy(0,1);
lcd_putsf("jarak 06 cm");
delay_ms(1000);
}


Proses Program Motor Steper
Listing Program:
void PutarBuka(void)
{
      int i;
      Enable=0;
      Direction=0;
      for (i=1; i<4 i="" span="">
       {
        Clock=0;
        delay_ms(1);     
        Clock=1;
        delay_ms(1);
       }
     Enable=1; 
//     delay_ms(1000);
}
void PutarTutup(void)
{
      int i;
      Enable=0;
      Direction=1;
      for (i=1; i<4 i="" span="">
       {
        Clock=0;
        delay_ms(1);     
        Clock=1;
        delay_ms(1);
       }
     Enable=1; 
//     delay_ms(1000);
}

Proses komunikasi Serial
Listing Program:
void Deklarasi (void)
{
Func0=In
PORTA=0x00;
DDRA=0x00;
Func0=Out
PORTB=0x00;
DDRB=0x01;
Func0=In
PORTC=0x00;
DDRC=0x00;
Func0=In
PORTD=0x00;
DDRD=0x1C;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x05;
ACSR=0x80;
SFIOR=0x00;  
PORTC.3=1;
}

Tidak ada komentar:

Posting Komentar