PI Controller Tuning for totem pole Pfc

46 views (last 30 days)
Hi all,
I am working on simulating a Totem-Pole Bridgeless PFC on Simulink. I have developed the control system and need to tune the PI values for the PI controller.
Since the video is for a Boost PFC, the control system is a little different when compared to a Totem-Pole PFC.
I tried the tuning with help of sisotool by find the transfer function using small signal analysis ,and found the kp and ki but the desired response is not coming.The transfer function is shown below as a code
% the controller transfer function
clc;
clear all;
s=tf('s');
Vin=230;
V0=400;
d=0.1868;
L=2.0634e-4;
C1=0.0042;
R=48.48;
fs=65000;
Ts=1/fs;
%Gid=(Vin*(2+R*C1*s))/(R*(1-d^3)*((C1*L*s^2)/((1-d)^2)+((L*s)/R*((1-d)^2))+1));
Gid=V0/(1+s*L*R);
Gvd=(Vin*R)/(2*V0*(s*R*C1 +1));
I have attached my simulation file ,Please Help me guys
%the parameters which I used
clc
clear all;
Vin=input("Enter the value ")
fline=50;
Vinpeak=sqrt(2)*Vin;
V0=400;
V0_min=380;
Po=3300;
n=0.95;
t_holdup=10e-3;
Iin=Po/(n*Vin);
fsw=65000;
D=(1-(Vinpeak/V0));
deliin=Iin*0.30;
delvo=0.025*V0;
L=(Vinpeak*D)/(fsw*deliin);
Cpower=Po/(2*pi*fline*delvo*V0);
Choldup=(2*Po*t_holdup)/(V0^2-V0_min^2);
cap=max(Cpower,Choldup);
Ts = 1/(100*fsw); % Sampling time for the plant [sec]
Tsc = 1/(50*fsw); % Sampling time for the controller [sec]
Iinpeak = 2*(Po/(n*0.01))/Vinpeak;
  5 Comments

Sign in to comment.

Accepted Answer

Sam Chak
Sam Chak on 30 Sep 2022
Edited: Sam Chak on 1 Oct 2022
I forgot to ask the PI values you obtained from sisotool. Please check if the performance requirements are satisfied for your Totem-Pole Bridgeless PFC:
s = tf('s');
Vin = 230;
V0 = 400;
d = 0.1868;
L = 2.0634e-4;
C1 = 0.0042;
R = 48.48;
fs = 65000;
fline = 50;
Ts = 1/fs;
Gid = V0/(1 + s*L*R)
Gid = 400 ---------- 0.01 s + 1 Continuous-time transfer function.
Gic = pidtune(Gid, 'PI', 0.1*fs)
Gic = 1 Kp + Ki * --- s with Kp = 0.14, Ki = 542 Continuous-time PI controller in parallel form.
Gcli = minreal(feedback(Gic*Gid, 1))
Gcli = 5579 s + 2.169e07 ----------------------- s^2 + 5679 s + 2.169e07 Continuous-time transfer function.
margin(Gic*Gid) % Requirements: Pm = 45°–60°, ωc = 10% of fs
step(Gcli)
Gvd = (Vin*R)/(2*V0*(s*R*C1 + 1))
Gvd = 1.115e04 ------------- 162.9 s + 800 Continuous-time transfer function.
kpv = 0.1*1.46087; % 10% of the previous designed kp value
kiv = 0.1*7.17463; % 10% of the previous designed ki value
Gvc = pid(kpv, kiv)
Gvc = 1 Kp + Ki * --- s with Kp = 0.146, Ki = 0.717 Continuous-time PI controller in parallel form.
Gclv = minreal(feedback(Gvc*Gvd, 1))
Gclv = 10 s + 49.11 --------------------- s^2 + 14.91 s + 49.11 Continuous-time transfer function.
margin(Gvc*Gvd) % Requirements: Pm = 90°, ωc = 10% of 2*fline
step(Gclv)
  16 Comments
Sam Chak
Sam Chak on 1 Oct 2022
After opening the Simulink model, I don't see the transfer function , anything that is mathematically equivalent to it. Correct me if I'm wrong.
The output of the PI(z) block goes straight into one of the 2 input ports of the Product block.
What do the block components have to do the transfer function ?
If all the blocks make up to have the equivalent mathematical transfer function , and you place the PI(s) block in the correct position as shown above, then you should the converging step response.
However, I noticed there are other nonlinear blocks, so I don't think they are part of the transfer function . Perhaps, you would like to check with your research friends / group members / project manager, who are involved in the Bridgeless PFC project.

Sign in to comment.

More Answers (1)

Barath Narayanan
Barath Narayanan on 2 Oct 2022
Ok type in the matlab command as ee_ totem_pole_pfc and see the control subsystem

Products


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!