Manipulating Bode plot with known poles and zeros.
Show older comments
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
Answers (1)
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)
Categories
Find more on Time and Frequency Domain Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!