Selasa, 29 Mei 2012

SIMULASI VENDING MACHINE DENGAN PROTEUS



Halo sob ni ad ilmu lagi………..ni ilmu-ilmu yang ane dapet dari tugas - tugas kuliah…hehehehe…. tugas kelompok sob… O iya terimakasih bwat temen-temen kelompok q yang dulu membuat tugas ini….mari berbagi…….

Vending Machine
Vending Machines adalah sebuah mesin penjual otomatis yang telah diprogram agar dapat mengeluarkan produk seperti minuman kaleng kepada pelanggan secara otomatis, setelah sebelumya pelanggan memasukkan semisal voucher berupa koin atau kartu, uang kertas tunai, atau bahkan kartu kredit sebagai alat bayarnya. Dengan adanya mesin penjual otomatis masyarakat dapat dengan mudah membeli minuman yang ia perlukan. Mesin ini sangat praktis bagi para pembeli. Berikut peralatan yang dibutuhkan:
a.       Microcontroller ATMega16
Sebagai chip utama yang akan menjalankan program digunakan Microcontroller ATMega16. Chip ini akan diisi dengan program yang akan menjalankan veding machine. Dengan menggunakan memory 16Kb sebagai media penyimpanan dan meng-eksekusi program untuk menjalankan simulasi alat vending machine dengan minimum system.
b.      Tombol Input
Tombol input ini sebagai inputan user dalam memilih menu. Inputan ini juga yang digunakan untuk menentukan minuman mana yang diminta sesuai dengan menu yang ada dalam  vending machine itu sendiri.
c.       LCD 16x2
LCD ini digunakan untuk menampilkan menu dan jumlah koin yang dimasukkan oleh user. LCD ini membantu memonitor semua jalannya proses dalam vending machine.
d.      Power suplly
Power suplly digunakan untuk mengmenyuplai catu daya yang dibutuhkan vending machine untuk bisa menyala.
 
Perencanaan
Perencanaan vending machine ini dengan menggunakan simulasi minimum sistem. Simulasi ini dapat di lihat pada proteus sebagai berikut :



 

Sebagai otak mesin menggunakan ATMega16 yang dapat diprogram dengan menggunakan USB downloader untuk menanamkan program ke dalam chip tersebut. Chip ini yang akan mengoperasikan semua proses pada vending machine.. Sebagai interface dengan user dalam hal ini adalah pembeli digunakan tombol berupa push button sebanyak 3 buah. Fungsinya yaitu sebagai tombol masukkan koin, Ok / Ya, dan Cancel. Selain itu terdapat led sebanyak 3 buah yakni coin indicator, out drink indicator, serta out coin indicator  dan 1 buah buzzer. Adapun Lcd yang digunakan yaitu LCD 16x2 maksudnya terdapat 2 baris dengan 16 kolom, digunakan untuk menampilkan menu.
Agar mesin dalam hal ini vending machine dapat dijalankan oleh user maka sebaiknya perlu dibuat suatu rancangan sistem yang dikenal sebagai sequence proses. Untuk lebih jelasnya dapat dilihat pada gambar di bawah ini :
             PROSES MACHINE:

 

V. Listing Program
#include <mega16.h>
#include <stdio.h>
#include <delay.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>

#define     led_koin     PORTA.0
#define     out_drink    PORTA.1
#define     out_koin     PORTA.2
#define     buzzer       PORTA.3

#define     in_koin      PIND.0
#define     pb_ok        PIND.1
#define     pb_cancel    PIND.2

// Declare your global variables here
int jml_koin=0, deal;

int menu(void){
    switch (jml_koin)
    {                                 
        case 1: lcd_clear();lcd_gotoxy(0,0);lcd_putsf("1st coin
menu:");lcd_gotoxy(0,1);lcd_putsf("             Tea");break;
        case 2: lcd_clear();lcd_gotoxy(0,0);lcd_putsf("2nd coin
menu:");lcd_gotoxy(0,1);lcd_putsf("           Juice");break;
        case 3: lcd_clear();lcd_gotoxy(0,0);lcd_putsf("3rd coin
menu:");lcd_gotoxy(0,1);lcd_putsf("     Coffee Milk");break;
    }
 }

void make_deal(void){
    if(pb_ok==0){
        delay_ms(100);            
        if(jml_koin==0)
        {  
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_putsf("     Sorry!     ");
            lcd_gotoxy(0,1);
            lcd_putsf("No Coin No Drink");
            delay_ms(1000);
            deal=1;
        }                                 
        else
        {  
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_putsf("Take Your Drink!");
            delay_ms(500);
            out_drink=0;
            buzzer=0;
            delay_ms(100);
            buzzer=1;
            delay_ms(100);
            buzzer=0;
            delay_ms(100);
            buzzer=1;   
            lcd_clear();
            lcd_gotoxy(0,1);
            lcd_putsf("Thank For Buying");
            delay_ms(1000);
            PORTA=1;
            deal=1;
        }delay_ms(50);              
    }delay_ms(40);
}

void cancel(void){
    if(pb_cancel==0){
        delay_ms(80);
        if(jml_koin!=0){
            lcd_clear();
            lcd_gotoxy(0,0);
            lcd_putsf("Cancel..");
            delay_ms(500);
            lcd_gotoxy(0,1);
            lcd_putsf("Take Your Coin!");
            out_koin=0;
            delay_ms(1000);
            deal=1;
        }
    }    
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
PORTA=0xff;
DDRA=0xff;

PORTD=0x0f;
DDRD=0x00;

// LCD module initialization
lcd_init(16);

    while (1)
    {  
        /*** Display Standby Mode ***/
        jml_koin=0;
        deal=0;
        PORTA=0xff;
        lcd_gotoxy(0,0);
        lcd_putsf("   WELCOME TO   ");
        lcd_gotoxy(0,1);
        lcd_putsf("VENDING  MACHINE");
        delay_ms(1000);
        lcd_clear();
        lcd_gotoxy(0,0);
        lcd_putsf("Ins Coin Rp Only");
        lcd_gotoxy(0,1);
        lcd_putsf("Rp1000 minimum!!");
        delay_ms(10);
        /****************************/
       
        while(pb_cancel==1 && jml_koin!=4 && deal==0)
        {
            if(in_koin==0)
            {
                jml_koin++;          
                led_koin=0;
                delay_ms(250);
                menu();                       
                led_koin=1;  
            }         
           
            make_deal();
            cancel();
           
            if(jml_koin==4){             //over coin =coin > 3
                lcd_clear();
                lcd_gotoxy(0,0);
                lcd_putsf("Over Coin..");
                out_koin=0;
                delay_ms(700);
                lcd_clear();
                lcd_gotoxy(0,1);
                lcd_putsf("Take Your Coin!");
                delay_ms(1000);
            }
        };
       
    };
}
           
Cara kerja mesin penjual ini yaitu pembeli akan memilih berberapa menu minuman sesuai dengan masukkan koin dalam hal ini berupa penekanan tombol “insert coin”. Masukkan koin pertama berupa produk tertentu yang akan keluar jika ditekan tombol “OK”. Pembeli dapat memilih apakah ingin membeli produk  yang lain atau tidak jadi membeli. Jika iya maka pembeli dapat menekan tombol “insert coin” untuk membeli produk yang lain, jika tidak maka keluar dengan menekan tombol “cancel” disertai dengan pengembalian koin. Pada rancangan sistem yang kami buat hanya terdapat tiga menu minuman yakni Teh, Juice, dan Coffe Mix untuk tiga kali masukkan koin. Sehingga satu koin mewakili satu jenis minuman. Apabila koin yang dimasukkan lebih dari tiga maka secara otomatis akan keluar tampilan yang menandakan “Over Coin” disertai dengan pengembalian koin sesuai dengan yang dimasukkan. Setelah proses di atas telah selesai maka akan kembali ke proses awal yaitu tampilan menu  pada LCD, kemudian orang berikutnya akan melakukan proses yang sama seperti yang sudah dijelaskan di atas.






3 komentar:

  1. gan ini software inputan ICnya pake apa?

    BalasHapus
  2. Saya perlu sistem RFID yg mengendalikan selenoid untuk buat vending machine air isi ulang, apa bisa di bantu

    BalasHapus
  3. hello can you please tell me what software you used to qrite the code and how to upload to proteus ???

    BalasHapus