Add analysis about effect of 10uF load

This commit is contained in:
Thomas Dehaeze 2020-09-04 15:18:01 +02:00
parent 447ea1b6fb
commit 08cb2b8daa

View File

@ -547,6 +547,7 @@ Three measurements are done:
pi_sr_min = load('mat/pi_slew_rate_min.mat'); pi_sr_min = load('mat/pi_slew_rate_min.mat');
pi_sr_max = load('mat/pi_slew_rate_max.mat'); pi_sr_max = load('mat/pi_slew_rate_max.mat');
pi_sr_max_notch = load('mat/pi_slew_rate_max_notch_high.mat'); pi_sr_max_notch = load('mat/pi_slew_rate_max_notch_high.mat');
pi_sr_load = load('mat/pi_slew_rate_max_notch_high_2stacks.mat');
#+end_src #+end_src
#+begin_src matlab #+begin_src matlab
@ -556,6 +557,7 @@ Three measurements are done:
[tf_sr_min, f] = tfestimate(pi_sr_min.V_in, pi_sr_min.V_out, win, [], [], 1/Ts); [tf_sr_min, f] = tfestimate(pi_sr_min.V_in, pi_sr_min.V_out, win, [], [], 1/Ts);
[tf_sr_max, ~] = tfestimate(pi_sr_max.V_in, pi_sr_max.V_out, win, [], [], 1/Ts); [tf_sr_max, ~] = tfestimate(pi_sr_max.V_in, pi_sr_max.V_out, win, [], [], 1/Ts);
[tf_sr_max_notch, ~] = tfestimate(pi_sr_max_notch.V_in, pi_sr_max_notch.V_out, win, [], [], 1/Ts); [tf_sr_max_notch, ~] = tfestimate(pi_sr_max_notch.V_in, pi_sr_max_notch.V_out, win, [], [], 1/Ts);
[tf_sr_load, ~] = tfestimate(pi_sr_load.V_in, pi_sr_load.V_out, win, [], [], 1/Ts);
#+end_src #+end_src
#+begin_src matlab #+begin_src matlab
@ -569,6 +571,7 @@ Three measurements are done:
plot(f, abs(tf_sr_min), 'DisplayName', 'Slew Rate - Min') plot(f, abs(tf_sr_min), 'DisplayName', 'Slew Rate - Min')
plot(f, abs(tf_sr_max), 'DisplayName', 'Slew Rate - Max') plot(f, abs(tf_sr_max), 'DisplayName', 'Slew Rate - Max')
plot(f, abs(tf_sr_max_notch), 'DisplayName', 'Remove Notch') plot(f, abs(tf_sr_max_notch), 'DisplayName', 'Remove Notch')
plot(f, abs(tf_sr_load), 'DisplayName', 'With Load')
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log'); set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
ylabel('Amplitude'); xlabel('Frequency [Hz]'); ylabel('Amplitude'); xlabel('Frequency [Hz]');
hold off; hold off;
@ -579,6 +582,7 @@ Three measurements are done:
plot(f, 180/pi*unwrap(angle(tf_sr_min))-angle_delay) plot(f, 180/pi*unwrap(angle(tf_sr_min))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_sr_max))-angle_delay) plot(f, 180/pi*unwrap(angle(tf_sr_max))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_sr_max_notch))-angle_delay) plot(f, 180/pi*unwrap(angle(tf_sr_max_notch))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_sr_load))-angle_delay)
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin'); set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin');
ylabel('Phase'); xlabel('Frequency [Hz]'); ylabel('Phase'); xlabel('Frequency [Hz]');
hold off; hold off;
@ -630,3 +634,38 @@ The identified transfer function still seems to match the one of a notch filter
linkaxes([ax1,ax2], 'x'); linkaxes([ax1,ax2], 'x');
xlim([10, 5e3]); xlim([10, 5e3]);
#+end_src #+end_src
** With Load
#+begin_src matlab
R = 2.78; % Output Impedance [Ohm]
C = 9e-6; % Load capacitance [F]
G_amp = 10/(1 + s*R*C);
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(2, 1, 1);
hold on;
plot(f, abs(tf_sr_max_notch), 'DisplayName', 'No load')
plot(f, abs(tf_sr_load), 'DisplayName', '$10\mu F$ load')
plot(f, abs(squeeze(freqresp(G_amp, f, 'Hz'))), 'k--', 'DisplayName', 'Model')
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'log');
ylabel('Amplitude'); xlabel('Frequency [Hz]');
hold off;
legend('location', 'southwest');
ax2 = subplot(2, 1, 2);
hold on;
plot(f, 180/pi*unwrap(angle(tf_sr_max_notch))-angle_delay)
plot(f, 180/pi*unwrap(angle(tf_sr_load))-angle_delay)
plot(f, 180/pi*unwrap(angle(squeeze(freqresp(G_amp, f, 'Hz')))), 'k--')
set(gca, 'Xscale', 'log'); set(gca, 'Yscale', 'lin');
ylabel('Phase'); xlabel('Frequency [Hz]');
hold off;
ylim([-180, 45]);
yticks(-360:45:90)
linkaxes([ax1,ax2], 'x');
xlim([10, 5e3]);
#+end_src