Manipulating Bode plot with known poles and zeros.
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I'm trying to re-create the open loop response of an op-amp with the following script.
%% Openloop Transferfunction
A_ol = 145; %DC open-loop gain in dB
GBW = 4.5e6; %Gain bandwidth product Hz
SP = 9.5e6; %visual estimation off aditional -90 deg of fase shift
%-------------------------------------------------------
A_0 = 10^(A_ol/20); %DC open-loop gain V/V
tau_0 = GBW/A_0; %Dominant Pole frequency in Hz
tau_s = SP; %Secundary Pole frequency in Hz
figure(1)
options = bodeoptions;
options.FreqUnits = 'Hz';
options.Xlim = {[10e-3 10e7]};
options.MagLowerLimMode = 'Manual';
options.MagLowerLim = 0;
bode(zpk([],[-tau_0 -tau_s],-A_0*tau_0*tau_s),options)
xline(tau_0)
xline(tau_s)

For some reason the pole placement is not in line with the markers in the plot.
And the x-axis range is 10^-2 to 10^8 instead of the specified 10^-3 to 10^7
Am I using the zpk function wrong? or is there somthing else that I'm missing?
Regards Rasmus
0 Kommentare
Antworten (1)
Paul
am 11 Feb. 2022
Bearbeitet: Paul
am 11 Feb. 2022
The poles and zeros in zpk should be in rad/s (at least with the default settings). So the poles are at
-[GBW SP]*2*pi. Then if the zpk gain is k, then at DC we must have k/(GBW/SP/2/pi/2/pi) = 10^(A_ol/20)
A_ol = 145; %DC open-loop gain in dB
GBW = 4.5e6; %Gain bandwidth product Hz
SP = 9.5e6; %visual estimation off aditional -90 deg of fase shift
h = zpk([],-[GBW SP]*2*pi,10^(A_ol/20)*SP*GBW*(2*pi)^2);
options = bodeoptions;
options.FreqUnits = 'Hz';
bode(h,options)
xline(GBW)
xline(SP)
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
