• Tidak ada hasil yang ditemukan

Perancangan Sistem Perbaikan Faktor Daya (cos ) Otomatis Dengan Menggunakan Mikrokontroler ATMega8535

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perancangan Sistem Perbaikan Faktor Daya (cos ) Otomatis Dengan Menggunakan Mikrokontroler ATMega8535"

Copied!
8
0
0

Teks penuh

(1)

LAMPIRAN A

(2)

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

(3)

// 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

(4)

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;

// 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

(5)

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")

lcd_putsf("Manonggor"); lcd_gotoxy(6,1);

lcd_putsf("USU"); delay_ms(500);

(6)

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

(7)

{if (mode==6 && cos_phi <=0.82) {mode=7; {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;}

}

(8)

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

Gambar

Gambar Rangkaian Keseluruhan

Referensi

Dokumen terkait

mikrokontroler ATMega8535 sebagai pusat kontrol dari semua rangkaian, rangkaian jembatan H (H-Bridge) sebagai pengendali gerakan motor elevator dan motor pintu elevator,

Dari hasil simulasi sistem pengendalian motor cadangan otomatis ini digunakan Mikrokontroler ATMega8535 untuk otak dari seluruh rangkaian, dan ditampilkan pada LCD,

GAMBAR

Gambar Lampira 2 Pengujian Data Sample Dan Data Alat Yang Dirancang.. Gambar Lampira 3

Gambar Skematik Rangkaian Keseluruhan Alat..

Rangkaian sensor arus seperti yang terlihat pada Gambar 4 terdiri dari toroida, rangkaian dioda penyearah tegangan, op-amp sebagai buffer,.. amp sebagai pengubah arus ke

Gambar titik pengukuran rangkaian driver Jika mikrokontroler mengirimkan perintah berupa logika 1 untuk mengaktifkan 4N25, maka optocoupler akan aktif dikarenakan infra merah akan

Gambar 8: Mode eksterior pada Android VR 2.10 Tampilan Aplikasi Android VR Gambar 9: Rangkaian keseluruhan alat Rangkaian pada gambar 9 merupakan semua rangkaian dari masing-masing