• Tidak ada hasil yang ditemukan

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); }; }

Dokumen terkait