对比方案赛+TPS40304 Compensation_Calculation
[复制链接]
Required: Inputvoltage: 10 – 16V; OutPutvoltage:3.3 ; MaxOutputCurrent:1Amp; Ripple: ±5% Step1:
Step2:
Step3:Choosing Controller Option in the sniped picture mentionedabove. Step4:
Opt for TPS40304 which is implemented Voltage Mode Controlstrategy and also a synchronous buck controller. Step5:
Step6:Check in the schematic parameters: Step7:The values of Rfbt,Rcomp,Rcomp2,Ccomp,Ccomp2,Ccomp2 are mymanual calculation results using Matlab , and the source code is just likethis(Some parameters reference the datasheet of TPS40304) : function varargout =TPS40304CompDemo(varargin) %% Output stagetransfeer function for Voltage Mode Switch Power supply. syms S ESR = 0.01 ; Rout = 3.3; Cout = 20*10^(-6); L = 15*10^(-6); DCR = 0.096; Z1 = ESR + 1/Cout/S; Z2 = Z1*Rout/(Z1 +Rout); Z3 = L*S + DCR; Glc = Z2 / (Z2 + Z3); %% PWM stage transferfunction calculation; Vdd = 14; Vramp = Vdd/6; Gpwm = 1/Vramp; %% the Power Stagetransfer function G = Gpwm*Glc; Fcross = 30000; Fwcross = 2*pi*Fcross; [Num Den] = numden(G); Nump = sym2poly(Num); Denp = sym2poly(Den); [Mag Phase] =bode(Nump,Denp,Fwcross); Mag_DB = 20*log10(Mag); %% K Facotr Methordcalculation precudure , Assume Phase Margin wantted is 70 degree Rfbt = 10000 Phase_Margin_Target =70; Phase_Boost =Phase_Margin_Target - Phase - 90 k = tand(Phase_Boost/4+45)^2 Fzeros = Fwcross/sqrt(k) Fpoles = Fwcross*sqrt(k) G = 10^(- Mag_DB/20); Ccomp2 =1/Fwcross/G/Rfbt; Ccomp = Ccomp2*(k - 1); Rcomp = sqrt(k)/Fwcross/Ccomp; Rcomp2 = Rfbt/(k - 1); Ccomp3 =1/Fwcross/sqrt(k)/Rcomp2; Gain = 1/S/Rfbt/(Ccomp +Ccomp2); z1 = (1 +S*Ccomp*Rcomp); z2 = (1 +S*Ccomp3*(Rcomp2 + Rfbt)); p1 = (1 +S*Rcomp*Ccomp*Ccomp2/(Ccomp + Ccomp2)); p2 = (1 +S*Ccomp3*Rcomp2); Hc = Gain*z1*z2/p1/p2; %% the open looptransfer symbol expression to poly expression and proceed onto bode plot; [Numh Denh] =numden(Hc); Numhp = sym2poly(Numh); Denhp = sym2poly(Denh); Gtotal =series(tf(Nump,Denp),tf(Numhp,Denhp)); bode(tf(Nump,Denp)); hold on; bode(tf(Numhp,Denhp)); hold on; margin(Gtotal); grid on; grid minor; msgbox(strvcat(['Theresult of Rfbtis ' num2str(Rfbt)]... ,['The result of Rcomp 'num2str(Rcomp)]... ,['The result of Rcomp2 'num2str(Rcomp2)]... ,['The result of Ccomp 'num2str(Ccomp)]... ,['The result of Ccomp2 'num2str(Ccomp2)]... ,['The result of Ccomp3 'num2str(Ccomp3)])... ,'Compensation values'); varargout{1} = Gtotal; end
and got that: Gm is 31.7dB,Pm is 70 degree, the cross frequency is 30kHz, But I calculate the compensation circuit with WEBENCH ,theresult is not so identical: Gm is 13.66dB,Pm is 27.26 degree, the cross frequency is 190kHz,and another obvious difference is the tremendous DC gain : My manual calculationresults are all below than 50dB, But the Webench are above the 60dB at LowFrequency. That sounds weird . So, Could anybody please give me some advice on my calculationprocedure, or provide the reason why they differ so much? Appreciate it! Otherwise, the webench really very flexible and useful.
Thanks for all your time.
|