어떻게이 단계에서 올바른

P

praveen_palaparthi

Guest
안녕하세요 저는 사인파 UPS.I에 사인파 생성하는 코드를 작성했습니다 일하고 있지만 일부에서는 이러한 제거하고 순수한 사인파 얻을 계단.내 논리를 변경해야 할 경우 나를 추천했다.
미안하지만, 당신이 첨부 파일을보기 위해서는 로그인이 필요

 
그린 colur 파형 출력 전압과 출력 전압 ............. 노란 색깔을 제어하기위한 컨트롤러를 감지 전압입니다

 
인용구 :

내 논리를 변경해야 할 경우 나를 추천했다.
 
죄송 여기 논리입니다.


36 간격으로 사인파 나누어주기의 절반과 array.I에서 값을 저장 매 278 마이크로초 그래서 내가 사인 table.How 전에서 가치를 복용하여 업데이 트됩니다 듀티 사이클 타이머 - 0 intialised 278 있어요 두 번째 마이크로 ... 좋아, 그래서 기간을 10으로 나눈 밀 36 전 두번째는 절반 수준에 불과주기 찍은이 우리가 278.여기 계단이있다 개방형 루프없이 오전지고 순수 사인파.
and then i am calculating the error=ref-output
.THen this error is passed through PI euqation then i am sending the corrected duty cycle to registers.

하지만 포인트로 내보내 때 전압 감지 지점마다 278 마이크로 초에 제가 의미 figure.First 난에 나타난 이러한 소음이 점점 오전 ADC를 사용하여 출력 전압을 측정 가능한 오전 듀티 사이클 PI는 오전 equation.I 수정하는 데 사용하는 직류 에서 감지 전압 파형에 노란 색깔이 DC 출력 전압
= 측정 - 500 그리고 나서 오류 계산 오전 = 심판입니다 측정한 출력 전압 오프셋 substrating 오전부터 이렇게 그림과 같이 원산지 2.5 볼트로
전환됩니다 전압 감지에 설정된 - 출력.
그렇다면이 오류가 사설 탐정을 통해 euqation 그럼 레지스터에 수정된 오전 듀티 사이클을 보내는 전달됩니다.

이 코드가 실행되는 모든 278 마이크로초 듀티 사이클 여기 사이비 해결을위한 코드입니다.sine_value = sine_table [sine_table_count];ref_voltage = sine_value;out_voltage_1 = out_voltage - 500;(Half_cycle_count)(out_voltage_1 = ~ out_voltage_1;out_voltage_1 = out_voltage_1 1;)x = ref_voltage - out_voltage_1;Z1 = 기씨 * x;z는 = Z1>> 10;y를 = yold (KP를 * (x - xold)) z는;Duty_cycle = y를>> 6;만약 (Duty_cycle <0)(Duty_cycle = ~ Duty_cycle;Duty_cycle = Duty_cycle 1;)만약 (Duty_cycle> 0x1F4)Duty_cycle = 0x1f0;xold = x;yold = y를;

이건 내가 무슨 짓을하고
소음이 나를 거기에 일정한 듀티 사이클을 유지하는 올바른 volatge 어떤
논리 230 볼트의 / -10 볼트입니다 권해주십시오지고있다.
미안하지만, 당신이 첨부 파일을보기 위해서는 로그인이 필요

 
좋아, 컨트롤러 디자인을 중심으로 문제가있는 것 같습니다.

귀하의 컨트롤러의 제로 교차점 불연속과 기본적인 문제가있습니다.사설 탐정 출력 가정 전에 올바른 듀티 사이클을 생산하지만, 비 - 제로 제로 교차로 신호했다.왜냐하면 당신 제로보다는 횡단 사인 테이블은 출력 전압을 반전하는 신호가 제로 건너 후 내가 잘못 극성의 시작 값을 갖습니다.이것은 진동 컨트롤러 컨트롤러 이상 반응에 여러 intervalls 듀티 사이클에서 샘플링을 제거하는 단계가 발생합니다.추가적인 문제로서, 경우 PI는 출력 제로 (실제 극성을) 관련, 그것을 대신 긍정적인 출력 생산의 과잉 공급한다.제외어 duty_cycle 대신 값을 half_cycle 반전의 정보를 사용해야한다.

그것은 경우에, 작은 출력 전압 측정에 오프셋이 문제의 원인이기 때문에, 그것을 조정하여 최소화 될 수있을 수있는 임의의 500의 오프셋.하지만 기본적으로, 각 반 사이클에서 PI는 컨트롤러 극성 반전을 잘못 한 것 같아요.당신이 그렇게 할 경우 적어도, 당신은 제로 교차로에서, 필수적인 신호를 재설정해야한다.

당신은, 오픈 루프 파형 꽤 좋은 보도했다.그래서 나도 궁금해, 필요한 경우는 순간적인 출력 전압을 정확합니다.당신은 RMS를 출력 속도가 느린 대신 컨트롤러를 사용할 수있습니다.

 
선생님은 출력 정정 부분이 좋아, 내 논리 wrong.I 폐루프 논리를 개발하는 데 도움이 나와 함께하시기 바랍니다 sinusoidal에만 퍼팅은 PWM 세대가는 완료 코드 말해 놓을테니까 당신은 주어진있다.
이 타이머 - 0은 sinuoidal의 PWM 내가 루틴을 생성 intialisation 부분은 언급하지 않았습니다.무효 interruupt ACDC (무효)((TOIF)(
= 0 T0IF;T0CS = 0; / / timer0 설정TMR0 = 0x5B;PSA의 = 0;PS2 = 0;PS1 = 0;PS0 = 1;sine_value = sine_table [sine_table_count];ref_voltage = sine_value;out_voltage_1 = out_voltage - 500;(Half_cycle_count)(out_voltage_1 = ~ out_voltage_1;out_voltage_1 = out_voltage_1 1;)x = ref_voltage - out_voltage_1;Z1 = 기씨 * x;z는 = Z1>> 10;y를 = yold (KP를 * (x - xold)) z는;Duty_cycle = y를>> 6;만약 (Duty_cycle <0)(Duty_cycle = ~ Duty_cycle;Duty_cycle = Duty_cycle 1;)만약 (Duty_cycle> 0x1F4)Duty_cycle = 0x1f0;xold = x;yold = y를;PR2 = 0x80으로; / / 0xA6은 0x80은 0x80 0x93 0xC0;T2CON = 0x04; / enablint 타이머 2 prescaler 가치 = 1:1만약 (Half_cycle_count) / / 긍정적인 반주기(CCPR2L = Duty_cycle>> 2;CCP2CON = ((Duty_cycle & & 0x03) <<4) 0 x0C;CCP1CON = 0x00;)또 / / 제외어 30주기(CCPR1L = Duty_cycle>> 2;CCP1CON = ((Duty_cycle & & 0x03) <<4) 0 x0C;CCP2CON = 0x00;)sine_table_count ;만약 (sine_table_count> = 0x24)(sine_table_count = 0x00;
(Half_cycle_count)Half_cycle_count = 0;그 밖의Half_cycle_count = 1;)
)
 

Welcome to EDABoard.com

Sponsor

Back
Top