Anda di halaman 1dari 14

ALAT PEMISAH DAN PENGHANCUR SAMPAH

I. Blok Diagram
Berikut merupakan blok diagram dari Alat pemisah dan penghancur sampah :

Dan berikut ini adalah gambar rangkaian atau implementasi dari blok diagram yang telah
di rencanakan :
II.Tabel I/O
N INPUT OUTPUT
o
1 Push button 1 (PINA.0) MOTOR 1 (out 1 dan out 2
2 Push button 2 (PINA.1) dari IC L293D)
3 Push button 3 (PINA.2) MOTOR 2 (out 3 dan out 4
4 Push button 4 (PINA.3) dari IC L293D)

III. Informasi atau Cara Kerja System


Alat pemisah dan penghancur sampah ini adalah bisa diibaratkan seperti tempat
sampah yang pintar. Tempat sampah ini yangg ingin saya desain sebenarnya adalah akan
memisahkan antara sampah organic dan samapah non organic. Dimana sampah yang organic
akan diarahkan oleh sebuah conveyor mini oleh sebuah motor 1 dan sampah yang non
organic akan diarahkan oleh conveyor mini yang diputar oleh motor 2. Pada saat sampah
organic dan non organic sudah terpisah melewati jalurnya masing masing, maka sampah
akan perlahan lahan akan digerakkan oleh sebuah motor 1 dan motor 2 menuju ke
tempatnya masing- masing (tempat penghancur) selama interval beberapa menit.Kecepatan
motor pada saat menuju tempat penghancuran tersebut juga bisa di atur mulai dari yang
paling rendah dengan duty cycle 10% dan yang paling tinggi adalah 30%. Disini kecepatan
yang dignakan untuk membawa sampah tersebut diatur agar tidak terlalu cepat karena
sampah tersebut dikhawatirkan masih ada yang tidak terbawa sepenunhya ke tempat
penghancuran tersebut. Sampai pada akhirnya sampah itu akan sampai pada tempat untuk
menghancurkan sampah organic dan sampah non organic tersebut.
Di tempat penghancuran tersebut , sampah akan dihancurkan oleh sebuah alat
penghancur berupa benda tajam yang digerakkan oleh motor dengan setting kecepatan yang
kita bisa atur kecepatannya, mulai dari tingkat yang paling rendah dengan duty cycle 50%
sampai yang paling tinggi adalah 90%. Pengaturan duty cycle disini lah yang kan
menentukan nilai kecepatan pada motor penggerak dan penghancur sampah organic dan
sampah non organic tersebut. Semakin tinggi duty cycle maka kecepatan motor untuk
mengerakkan alat penghancur tersebut akan semakin cepat.
Walaupun pada kenyataannnya disini saya ingin menggunakan sensor yang bisa
mendeteksi apakah itu sampah organic atau sampah non organic, tetapi masih belum
menemukan untuk menggunakan sensor apa dan cara membedakan sampah organic dan
sampah non organic secara otomatis pada program yang telah dibuat.
IV. Program

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 4/16/2017
Author : Gamar Basuki
Company : GER86
Comments:

Chip type : ATmega16


Program type : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model : Small
External RAM size :0
Data Stack size : 256
*****************************************************/

#include <mega16.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>

int n=0,w=0, s=0, ;


int loopa, loopb, loopc;

/*int SA,SB;
char MA[8];
char MB[8];*/
// Alphanumeric LCD functions
#include <alcd.h>

#define ADC_VREF_TYPE 0x00

// Read the AD conversion result


unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

// Declare your global variables here

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

// Input/Output Ports initialization


// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out
Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out
Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 46.875 kHz
// Mode: Ph. correct PWM top=0x03FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA3;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 46.875 kHz
// Mode: Phase correct PWM top=0xFF
// OC2 output: Non-Inverted PWM
ASSR=0x00;
TCCR2=0x66;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization


// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization


TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization


// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 750.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization


// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf(" PREPARATION & ");
lcd_gotoxy(0,1);
lcd_putsf(" CRUSHING TRASH");
lcd_gotoxy(0,2);
lcd_putsf(" Oleh : ");
lcd_gotoxy(0,3);
lcd_putsf(" 1310151002 ");
delay_ms(100);
lcd_clear();

lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" -- MENU -- ");
lcd_gotoxy(0,1);
lcd_putsf(">I II III");

while (1)
{
if(read_adc(2)==0)
{
if(n>0)
{
lcd_gotoxy(n*6,1);
lcd_putsf(" ");
lcd_gotoxy((n-1)*6,1);
lcd_putsf(">");
n=n-1;
delay_ms(30);
}
}

if(read_adc(3)==0)
{
if(n<2)
{
lcd_gotoxy(n*6,1);
lcd_putsf(" ");
lcd_gotoxy((n+1)*6,1);
lcd_putsf(">");
n=n+1;
delay_ms(30);
}
}

if(read_adc(1)==0)
{
if(n==0)
{
loopa=1;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("|| SEPARATION ||");
delay_ms(30);
lcd_gotoxy(0,1);
lcd_putsf("==>:");
lcd_gotoxy(0,2);
lcd_putsf(">Organik Non");
}
if(n==1)
{
loopb=1;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" ||PREPARATION||");
delay_ms(30);
lcd_gotoxy(0,1);
lcd_putsf("==>:");
lcd_gotoxy(0,2);
lcd_putsf(">10% 20% 30%");
}
if(n==2)
{
loopc=1;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(" || CRUSHING || ");
delay_ms(30);
lcd_gotoxy(0,1);
lcd_putsf("==>:");
lcd_gotoxy(0,2);
lcd_putsf(">50% 75% 90%");
}
}

while(loopa==1)
{
if(read_adc(2)==0)
{
if(n>0)
{
lcd_gotoxy(w*6,2);
lcd_putsf(" ");
lcd_gotoxy((n-2)*5,2);
lcd_putsf(">");
n=n-1;
delay_ms(30);
}
}

if(read_adc(3)==0)
{
if(n<2)
{
lcd_gotoxy(w*6,2);
lcd_putsf(" ");
lcd_gotoxy((n+2)*5,2);
lcd_putsf(">");
n=n+1;
delay_ms(30);
}
}

if(read_adc(1)==0)
{
lcd_gotoxy(0,3);
lcd_putsf(" ...PEMISAHAN.... ");
if(w==0)
{
PORTD.0=0;
PORTD.1=1;
OCR1A = 300;
PORTD.2=1;
PORTD.3=0;
OCR1B = 100;
delay_ms(1000);
}
if(w==1)
{
PORTD.0=0;
PORTD.1=1;
OCR1A = 300;
PORTD.2=1;
PORTD.3=0;
OCR1B = 100;
delay_ms(1000);
}
PORTD.0=0;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
lcd_gotoxy(0,3);
lcd_putsf("Proses Selesai");
delay_ms(1000);
loopa=0;
}
}

while(loopb==1)
{
if(read_adc(2)==0)
{
if(s>0)
{
lcd_gotoxy(s*6,2);
lcd_putsf(" ");
lcd_gotoxy((s-1)*6,2);
lcd_putsf(">");
s=s-1;
delay_ms(30);
}
}

if(read_adc(3)==0)
{
if(s<2)
{
lcd_gotoxy(s*6,2);
lcd_putsf(" ");
lcd_gotoxy((s+1)*6,2);
lcd_putsf(">");
s=s+1;
delay_ms(30);
}
}

if(read_adc(1)==0)
{
lcd_gotoxy(0,3);
lcd_putsf("...PREPARATING...");
if(w==0)
{
PORTD.0=1;
PORTD.1=0;
OCR1A = 300;
PORTD.2=1;
PORTD.3=0;
OCR1B = 300;
delay_ms(1000);
}
if(w==1)
{
PORTD.0=1;
PORTD.1=0;
OCR1A = 400;
PORTD.2=1;
PORTD.3=0;
OCR1B = 400;
delay_ms(1000);

}
if(w==2)
{
PORTD.0=1;
PORTD.1=0;
OCR1A = 500;
PORTD.2=1;
PORTD.3=0;
OCR1B = 500;
delay_ms(1000);
}
PORTD.0=0;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
lcd_gotoxy(0,3);
lcd_putsf("Proses Selesai");
delay_ms(1000);
loopa=0;
}
}

while(loopc==1)
{
if(read_adc(2)==0)
{
if(s>0)
{
lcd_gotoxy(s*6,2);
lcd_putsf(" ");
lcd_gotoxy((s-1)*6,2);
lcd_putsf(">");
s=s-1;
delay_ms(30);
}
}

if(read_adc(3)==0)
{
if(s<2)
{
lcd_gotoxy(s*6,2);
lcd_putsf(" ");
lcd_gotoxy((s+1)*6,2);
lcd_putsf(">");
s=s+1;
delay_ms(30);
}
}

if(read_adc(1)==0)
{
lcd_gotoxy(0,3);
lcd_putsf(" Crushing Mode");
if(w==0)
{
PORTD.0=1;
PORTD.1=0;
OCR1A = 300;
PORTD.2=1;
PORTD.3=0;
OCR1B = 300;
delay_ms(1000);
}
if(w==1)
{
PORTD.0=1;
PORTD.1=0;
OCR1A = 512;
PORTD.2=1;
PORTD.3=0;
OCR1B = 512;
delay_ms(1000);
}
if(w==2)
{
PORTD.0=1;
PORTD.1=0;
OCR1A = 920.7;
PORTD.2=1;
PORTD.3=0;
OCR1B = 920.7;
delay_ms(1000);
}
PORTD.0=0;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
lcd_gotoxy(0,3);
lcd_putsf("Proses Selesai");
delay_ms(1000);
loopa=0;
}
}

}
}
V. Kesimpulan
Alat pemilah dan penghancur sampah ini yang coba direalisasikan dalam
bentuk simulasi proteus dengan upaya bisa membedakan antara sampah organic dan
sampah non organic masih belum menemukan cara yang tepat untuk membedakan ciri
ciri diantara keduanya. Alat yang coba disimulasikan disini masih mendeteksi sampah
organic dan sampah non organic secara manual masih belum secara otomatis.