Bab IV Pengujian Sistem
5.2 Saran
Agar sistem ini dapat lebih sempurna dan bermanfaat, maka penulis memberikan saran-saran sebagai berikut ini:
1. Untuk mendapatkan nilai kapasitansi yang lebih tepat sehingga pengkompensasian lebih optimal sesuai nilai beban, sebaiknya kombinasi kapasitor lebih variatif (dirangkai seri dan paralel) sesuai beban yang ada. 2. Sistem ini dirancang untuk beban induksi saja karena umumnya umumnya
beban yang bersifat reaktif induktif yang banyak ditemukan di rumah tangga ataupun industri. Namun ada baiknya kepada peneliti berikutnya merancang alat pengkompensasi yang juga dilengkapi pengkompensasian untuk beban reaktif kapasitif.
3. Sebaiknya peneliti berikutnya juga merancang untuk daya 2 atau 3 fasa, karena kebutuhan listrik semakin hari semakin mengalami perkembangan.
4. Untuk mendapatkan hasil pengujian yang bebar-benar lebih objektif, beban juga harus ditambahi dengan jenis beban resistif murni seperti misalnya lampu pijar.
DAFTAR PUSTAKA
Arifianto, Deni. 2011. Kamus Komponen Elektronika. Cetakan Pertama. Jakarta: PenerbitKawanPustaka.
Edminister, Joseph A. 1983. Rangkaian Listrik. Edisi Kelima. Jakarta: Penerbit Erlangga.
Fowler, Richard J. 1979.Electricity: Principles and Applications. New York: McGraw-Hill, Inc.
Rangkuti, Syahban. 2011. Mikrokontroller Atmel AVR. Bandung: Penerbit Informatika.
Susilo, Deddy. 2010. 48 Jam Kupas Tuntas Mikrokontroler MCS51 & AVR. Yogyakarta: PenerbitAndi.
Taufiq, Dwi Septian Suyadhi. 2010. Buku Pintar Robotika. Edisi I. Yogyakarta: Penerbit ANDI.
Tooley, Michael. 2003. Rangkaian Elektronik: Prinsip dan Aplikasi. Edisi Kedua. Jakarta: Penerbit Erlangga.
Tse, Chi Kong.2002. Analisis Rangkaian Linear. Jakarta: Penerbit Erlangga.
W. Mack Grady & Robert J. Gilleskie, 1993, HARMONICS AND HOW THEY RELATE TO POWER FACTOR, Proc. of the EPRI Power Quality Issues & Opportunities Conference California, San Diego, CA
Woollard, Barry. 2003. Elektronika Praktis. Cetakan Kelima. Jakarta: PT Pradnya Paramita.
Zbar, Paul Berk. 1958. Electricity−Electronics Fundamentals: A Text-Lab Manual. Second Edition. New York: McGraw-Hill, Inc.
Zbar, Paul Berk. 1983. BASIC ELECTRICITY: A Text-Lab Manual. Fifth Edition. New York: McGraw-Hill, Inc.
Zuhal.1988.Dasar Teknik Tenaga Listrik dan Elektronika Daya. Cetakan Keenam. Jakarta: Gramedia Pustaka Utama.
http://en.wikipedia.org/wiki/Capacitor. Diakses tanggal 29 Oktober 2012, Pukul 19.00 WIB
http://en.wikipedia.org/wiki/Power_factor_correction#Power_factor_correction_in_no n-linear_loads. Diakses tanggal 28 Oktober 2012, Pukul 20.00 WIB
http://id.wikipedia.org/wiki/Lampu_pendar. Diakses tanggal 28 Oktober 2012, Pukul 19.30 WIB
http://iwandesetia.blogspot.com/2012/04/memperbaiki-faktor-daya-menggunakan. html. Diakses tanggal 29 Oktober 2012, Pukul 19.00 WIB
http://www.allegromicro.com. Diakses tanggal 20 Juli 2012, Pukul 15.30 WIB http://www.atmel.com. Diakses tanggal 15 Juni 2012, Pukul 18.30 WIB
http://www.infoservicetv.com/cara-kerja-kapasitor.html. Diakses tanggal 26 Mei 2012, Pukul 15.00 WIB
LAMPIRAN A
LAMPIRAN B
Program Keseluruhan Pada Mikrokontroler ATMega8535
/***************************************************** This program was produced by the
CodeWizardAVR V1.25.3 Standard Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 4/23/2009 Author : F4CG Company : F4CG Comments:
Chip type : ATmega8535 Program type : Application Clock frequency : 4.433619 MHz Memory model : Small
External SRAM size : 0 Data Stack size : 128
*****************************************************/ #include <mega8535.h>
// Alphanumeric LCD Module functions #asm
.equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #include <stdio.h> #include <delay.h> #include <math.h> #define FIRST_ADC_INPUT 0 #define LAST_ADC_INPUT 1
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1]; #define ADC_VREF_TYPE 0x40
// ADC interrupt service routine // with auto input scanning
interrupt [ADC_INT] void adc_isr(void) {
register static unsigned char input_index=0; // Read the AD conversion result
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT)) input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
// Start the AD conversion ADCSRA|=0x40;
}
// Declare your global variables here
int ind1, ind2, ind3, ind4, ind5, i, in1, mode, sudut; float nilai, nilai1, cos_phi, arus, tegangan, temp8,
cos(float x); unsigned char data[16];
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=P State3=P State2=P State1=P State0=P
PORTB=0x1F; DDRB=0x00;
// Port C 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
PORTC=0x00; DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State7=T State6=T State5=0 State4=0 State3=0 State2=0 State1=T State0=T
PORTD=0x00; DDRD=0x3C;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh
// OC0 output: Disconnected TCCR0=0x00;
TCNT0=0x00; OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh
// OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off
// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; 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: Timer 2 Stopped // Mode: Normal top=FFh
// OC2 output: Disconnected ASSR=0x00;
TCCR2=0x00; 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;
// Analog Comparator initialization // Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80; SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 554.202 kHz // ADC Voltage Reference: AVCC pin // ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff); ADCSRA=0xCB;
SFIOR&=0xEF;
// LCD module initialization lcd_init(16);
// Global enable interrupts #asm("sei") mode=0; in1=0; ind1=0; ind2=0; ind3=0; ind4=0; ind5=0; PORTD.2=0; PORTD.3=0; PORTD.4=0; PORTD.5=0; lcd_gotoxy(4,0); lcd_putsf("Manonggor"); lcd_gotoxy(6,1); lcd_putsf("USU"); delay_ms(500); while (1) {
// Place your code here tegangan=0;
arus=0;
for(i=1;i<=10000;i++) {
temp8=nilai/51; nilai=(nilai-511)/51; nilai1=adc_data[1]; nilai1=nilai1*0.26667; if (nilai1>=tegangan) {tegangan=nilai1;} if (nilai>=arus) {arus=nilai;} delay_us(20); } while (adc_data[1]==0.0){delay_us(2);} while (adc_data[1]!=0.0){delay_us(2);}
if (adc_data[1]==0.0 && adc_data[0]==0.0) {cos_phi=1;} else { while (adc_data[1]==0.0){delay_us(2);} while (adc_data[1]!=0.0){delay_us(2);} sudut=0; for(i=1;i<=100;i++) { sudut=sudut+1; if (adc_data[0]==0.0){break;} delay_us(50); }} cos_phi=cos(sudut); /* if (sudut<=10) {cos_phi=sudut/10.15;} else
{if (sudut<=20) {cos_phi=sudut/21.28;} else
{if (sudut<=30) {cos_phi=sudut/34.64;} else
{if (sudut<=40) {cos_phi=sudut/52.21;} else
{if (sudut<=50) {cos_phi=sudut/77.78;} else
{if (sudut<=60) {cos_phi=sudut/120;} else
{if (sudut<=70) {cos_phi=sudut/204.67;} else
if (sudut<=80) {cos_phi=sudut/460.7;} else
{if (sudut<=90) {cos_phi=0;}}}}}}}} */
if (mode==7 && cos_phi <=0.82) {mode=0; PORTD.2=0; PORTD.3=0; PORTD.4=0; PORTD.5=0;}
{if (mode==6 && cos_phi <=0.82) {mode=7; PORTD.4=1;}
else
{if (mode==5 && cos_phi <=0.82) {mode=6; PORTD.3=1;}
else
{if (mode==4 && cos_phi <=0.82) {mode=5; PORTD.2=1;}
else
{if (mode==3 && cos_phi <=0.82) {mode=4; PORTD.4=0; PORTD.5=1;}
else
{if (mode==2 && cos_phi <=0.82) {mode=3; PORTD.3=0; PORTD.4=1;}
else
{if (mode==1 && cos_phi <=0.82) {mode=2; PORTD.2=0; PORTD.3=1;}
else
{if (ind1==1 && cos_phi <=0.82) {mode=1; PORTD.2=1;}}}}}}}} lcd_clear(); sprintf(data,"Cos Phi=%0.2f",cos_phi); lcd_gotoxy(0,0); lcd_puts(data); sprintf(data,"A=%0.2f",arus); lcd_gotoxy(0,1); lcd_puts(data); tegangan=arus*5; tegangan=210-tegangan; sprintf(data,"T=%0.0f",tegangan); lcd_gotoxy(8,1); lcd_puts(data); if(PINB.1==0) {
if(ind2==0) {ind2=1; PORTD.2=1;} else {ind2=0; PORTD.2=0;}
} if(PINB.2==0) {
if(ind3==0) {ind3=1; PORTD.3=1; } else {ind3=0; PORTD.3=0;}
}
if(PINB.3==0) {
if(ind4==0) {ind4=1; PORTD.4=1;} else {ind4=0; PORTD.4=0;}
} if(PINB.4==0)
{
if(ind5==0) {ind5=1; PORTD.5=1;} else {ind5=0; PORTD.5=0;}
}
if(PINB.0==0) {
if(ind1==0) {ind1=1;} else {ind1=0; PORTD.2=0; PORTD.3=0; PORTD.4=0; PORTD.5=0; mode=0;}
} if (ind1==1) {sprintf(data,"OT",cos_phi); lcd_gotoxy(14,0); lcd_puts(data);} else {sprintf(data,"MA",cos_phi); lcd_gotoxy(14,0); lcd_puts(data); } sprintf(data,"%d",mode); lcd_gotoxy(15,1); lcd_puts(data); delay_ms(1000); }; }