%% Simulation / Modélisation de systèmes linéaires % Module : Ingénierie Electronique % pour le traitement de l'Information %-------------------------------------------------------------- % TD_09 : AOP en boucle ouverte - fermée %-------------------------------------------------------------- % Auteur : Julien VILLEMEJANE % Date : 11/12/2020 %-------------------------------------------------------------- clear all; close all; %% Fonction de transfert d'un AOP % Fonction de transfert d'un filtre passe-bas du premier ordre % --> H(jw) = A / (1 + jw/wc) A = 1e5; % Amplification différentielle A funitaire = 1e6; % Bande-passante unitaire fc = funitaire/A; % Fréquence de coupure en boucle ouverte wc = 2*pi*fc; f = logspace(-1,7,101); % vecteur des pulsations entre 10^-1 et 10^7 tf_num = A; tf_den = 1 + 1*j * (2*pi*f)/wc; % Fonction de transfert H_AOP_BO = tf_num ./ tf_den; % Diagramme de Bode figure(1); subplot(2,1,1); semilogx(f, 20*log10(abs(H_AOP_BO))); grid on; xlabel('fréquence (Hz)'); ylabel('Gain (dB)'); legend('AOP boucle ouverte'); subplot(2,1,2); semilogx(f, angle(H_AOP_BO)); grid on; xlabel('fréquence (Hz)'); ylabel('Phase (rd)'); %% Fonction de transfert d'un AOP en boucle fermée (Gain de retour = 0dB) % Type suiveur H_RETOUR = 1; H_AOP_BF = H_AOP_BO ./ (1 + H_AOP_BO.*H_RETOUR); % Diagramme de Bode figure(2); subplot(2,1,1); semilogx(f, 20*log10(abs(H_AOP_BO)),f, 20*log10(abs(H_AOP_BF))); grid on; xlabel('pulsation (rd/s)'); ylabel('Gain (dB)'); legend('AOP boucle ouverte','AOP boucle fermée'); subplot(2,1,2); semilogx(f, angle(H_AOP_BO),f, angle(H_AOP_BF)); grid on; xlabel('pulsation (rd/s)'); ylabel('Phase (rd)'); %% Fonction de transfert d'un AOP en boucle fermée (Gain de retour = 20dB) % Type inverseur R2 = 9*1e3; R1 = 1e3; H_RETOUR_2 = R1/(R1+R2); H_ALPHA = -R2/(R1+R2); H_AOP_BF_2 = H_ALPHA .* H_AOP_BO ./ (1 + H_AOP_BO.*H_RETOUR_2); % Diagramme de Bode figure(3); subplot(2,1,1); semilogx(f, 20*log10(abs(H_AOP_BO)),f, 20*log10(abs(H_AOP_BF)),f, 20*log10(abs(H_AOP_BF_2))); grid on; xlabel('pulsation (rd/s)'); ylabel('Gain (dB)'); legend('AOP boucle ouverte','AOP suiveur','AOP inverseur'); subplot(2,1,2); semilogx(f, angle(H_AOP_BO),f, angle(H_AOP_BF),f, angle(H_AOP_BF_2)); grid on; xlabel('pulsation (rd/s)'); ylabel('Phase (rd)'); %% Fonction de transfert d'un AOP en boucle fermée (Gain de retour = 20dB) % Type non-inverseur R2 = 9*1e3; R1 = 1e3; H_RETOUR_2 = R1/(R1+R2); H_AOP_BF_2 = H_AOP_BO ./ (1 + H_AOP_BO.*H_RETOUR_2); % Diagramme de Bode figure(4); subplot(2,1,1); semilogx(f, 20*log10(abs(H_AOP_BO)),f, 20*log10(abs(H_AOP_BF)),f, 20*log10(abs(H_AOP_BF_2))); grid on; xlabel('pulsation (rd/s)'); ylabel('Gain (dB)'); legend('AOP boucle ouverte','AOP suiveur','AOP non-inverseur'); subplot(2,1,2); semilogx(f, angle(H_AOP_BO),f, angle(H_AOP_BF),f, angle(H_AOP_BF_2)); grid on; xlabel('pulsation (rd/s)'); ylabel('Phase (rd)');