clc clear all close all % installer le package control: pkg install -forge control % s'assurer de charger le package control pkg load control % ------------------------------------------------------------------------ % Code de generation de diagramme de Bode des 3 circuits % 1. Filtre passe-bas % 2. Filtre passe-haut % 3. Montage Ampli-op, inverseur avec filtre passe-haut % % Les valeurs des éléments R et C sont arbitraires :) % % F. Senny - 21/02/2022 % ------------------------------------------------------------------------ % 1. Filtre passe-bas % La fonction de transfert doit etre mise sous forme generique % % an (jw)^n + ... + a2 (jw)^2 + a1 (jw) + a0 % T(jw) = Cst * --------------------------------------------- % bm (jw)^m + ... + b2 (jw)^2 + b1 (jw) + b0 % % % Le filtre passe-bas est % % 1 % T(jw) = --------------- % RC (jw) + 1 % % Donc, Cst = 1, b1 = RC, a0=1, b0=1 R=1e3; % 1 kOhm C=1e-6;% 1 µF % wc = 1/RC = 1e-3 rad/s TFiltLP = tf([1],[R*C 1]); % tf est une fonction qui prend 2 arguments = 2 vecteurs des coefficients a et b % tf(num,den) % avec num = [an ... a2 a1 a0] -> soit num = [a0] = [1] % et den = [bm ... b2 b1 b0] -> soit den = [b1 b0] = [R*C 1] % Notez bien que les coefficients nuls inutiles ne sont pas repris figure;bode(TFiltLP); title(['Filtre passe-bas, wc = ' num2str(1/(R*C))]) % 2. Filtre passe-haut % La fonction de transfert doit toujours etre mise sous forme generique % % an (jw)^n + ... + a2 (jw)^2 + a1 (jw) + a0 % T(jw) = Cst * --------------------------------------------- % bm (jw)^m + ... + b2 (jw)^2 + b1 (jw) + b0 % % % Le filtre passe-haut est % % RC (jw) % T(jw) = --------------- % RC (jw) + 1 % % Donc, Cst = 1, a1 = RC, a0 = 0, b1 = RC, b0 = 1 R=1e3; % 1 kOhm C=1e-6;% 1 µF % wc = 1/RC = 1e-3 rad/s TFiltHP = tf([R*C 0],[R*C 1]); % tf est une fonction qui prend 2 arguments = 2 vecteurs des coefficients a et b % tf(num,den) % avec num = [an ... a2 a1 a0] -> soit num = [a1 a0] = [R*C 0] % et den = [bm ... b2 b1 b0] -> soit den = [b1 b0] = [R*C 1] % Notez bien que les coefficients nuls ne sont pas repris, sauf a0=0 necessaire % pour faire comprendre que R*C = a1 % /!\ Si vous aviez mis num = [R*C] -> cela signifie a1 = 0 et a0 = R*C figure;bode(TFiltHP); title(['Filtre passe-haut, wc = ' num2str(1/(R*C))]) % 3. Ampli AC, inverseur avec passe-haut % La fonction calculee est % % R2 RC (jw) % T(jw) = - ---- --------------- % R1 RC (jw) + 1 % % Donc, Cst = -R2/R1, a1 = RC, a0 = 0, b1 = RC, b0 = 1 R2=1e4; % 10 kOhm R1=1e3; % 1 kOhm C=1e-6;% 1 µF Cst=-R2/R1 % wc = 1/R1C = 1e-3 rad/s TAOpHP = Cst*tf([R1*C 0],[R1*C 1]); figure;bode(TAOpHP); title(['Ampli AC inverseur avec filtre passe-haut, G = ' num2str(R2/R1) ... ', wc = ' num2str(1/(R*C))])