Diagramme de Bode

Diagramme de Bode

Reprenons le cas du circuit RC

circuitRC.svg

Le diagramme de Bode permet de caractériser un circuit en Fréquence.
Toute sinusoïde “entrant” dans un système linéaire temporellement invariant (SLTI) subit une atténuation (ou amplification) et un déphasage (retard temporel).
Cette modification du signal dépend de la fréquence .

trace_sinus.svg

Le tracé du diagramme de Bode consiste à observer l’atténuation et le déphasage du signal de sortie par rapport au signal d’entrée, et ce pour toutes les fréquences.

Ces observations se font en Régime Permanent .

Rappelons que tout signal est une somme infinie de sinusoïdes


Détermination de la Fonction de Transfert

Pont Diviseur de Tension avec les impédances :

vs(t)=ve(t).zCR+zC \overline{v_{s}}(t)= \overline{v_{e}}(t) . \frac{\overline{z_C}}{R + \overline{z_C}}
vs(t)=ve(t).11+jRCω \overline{v_{s}}(t)= \overline{v_{e}}(t) . \frac{1}{1 + jRC\omega}
T(ω)=vs(t)ve(t)=11+jRCω \overline{T}(\omega)=\frac{\overline{v_{s}}(t)}{\overline{v_{e}}(t)}=\frac{1}{1 + jRC\omega}

ω0=1τ=1RC \omega_0=\frac{1}{\tau}=\frac{1}{RC}

T(ω)=11+j(ωω0) \boxed{ \overline{T}(\omega)=\frac{1}{1 + j\left ( \frac{\omega}{\omega_0} \right ) } }


Rappels sur les complexes

bode_rappel_complexes.svg

z=a+jb=r.ejθ z=a+jb=r.e^{j\theta}

Module
r=a2+b2 r=\sqrt{a^2+b^2} ( pythagore )

Argument
θ=arctan(ba) \theta = \arctan \left( \frac{b}{a} \right )

Autre situation :
z=1a+jb=1r.ejθ z=\frac{1}{a+jb}=\frac{1}{r.e^{j\theta}}

Module
1r.ejθ=1r.1ejθ \left | \frac{1}{r.e^{j\theta}} \right | = \left | \frac{1}{r} \right | . \left | \frac{1}{e^{j\theta}} \right |
1a2+b2 \frac{1}{\sqrt{a^2+b^2}}

Argument
Sachant que :

exey=exy \frac{e^{x}}{e^{y}} = e^{x-y}

Arg[1r.ejθ]=Arg[e0]Arg[r.ejθ] Arg[ \frac{1}{r.e^{j\theta}} ] = Arg[e^{0}]-Arg[r.e^{j\theta}]
Arg[1r.ejθ]=0arctan(ba) Arg[ \frac{1}{r.e^{j\theta}} ] = 0-\arctan \left( \frac{b}{a} \right )
Arg[1r.ejθ]=arctan(ba) Arg[ \frac{1}{r.e^{j\theta}} ] = -\arctan \left( \frac{b}{a} \right )


Tracé du Diagramme de Bode

Rappelons que Vs et Ve étant sinusoïdaux, on peut les exprimer avec la forme complexe exponentielle :

ve(t)=VeMejωtΦe \overline{v_e}(t)=V_{e_M} e^{j\omega t -\Phi_e}
vs(t)=VsMejωtΦs \overline{v_s}(t)=V_{s_M} e^{j\omega t -\Phi_s}

Amplitude

L’observation de l’atténuation ou de l’amplification se fait en comparant le module du signal de sortie par rapport au module du signal d’entrée.

T(ω)=VsMejωtΦsVeMejωtΦe=11+jωω0 \mid T(\omega) \mid = \left | \frac{V_{s_M} e^{j\omega t -\Phi_s}}{V_{e_M} e^{j\omega t -\Phi_e}}\right |=\left | \frac{1}{1+j\frac{\omega}{\omega_0}} \right | VsM.ejωtΦsVeM.ejωtΦe=11+jωω0 \frac{|V_{s_M}|.| e^{j\omega t -\Phi_s}|}{|V_{e_M}| .| e^{j\omega t -\Phi_e}|}= \frac{1}{\left |1+j\frac{\omega}{\omega_0} \right |} VsMVeM=11+jωω0 \frac{|V_{s_M}|}{|V_{e_M}| }= \frac{1}{\left |1+j\frac{\omega}{\omega_0} \right | }

T(ω)=VsMVeM=11+(ωω0)2 \boxed{ \mid T(\omega) \mid = \frac{V_{s_M}}{V_{e_M}}=\frac{1}{\sqrt{1+\left ( \frac{\omega}{\omega_0} \right )^2}} }

En dB :

T(ω)dB=20logT(jω) \mid T(\omega) \mid _{dB} = 20log\mid T(j\omega) \mid

Tracé Asymptotique

ω+T(ω)ω0ωT(ω)dB20log(ω0)20log(ω)T(ω)dB20log(ω) \omega \rightarrow +\infty \Rightarrow \mid T( \omega ) \mid \rightarrow \frac{\omega_0}{\omega} \Rightarrow \mid T(\omega) \mid _{dB} \rightarrow 20\log(\omega_0)-20\log(\omega) \Rightarrow \mid T(\omega) \mid _{dB} \rightarrow -20\log(\omega)

20.log(10.ω)=20.log(ω)20 20.\log(10.\omega) = 20.\log(\omega) - 20

Pente -20dB/decade.

ω0T(ω)1T(ω)dB0 \omega \rightarrow 0 \Rightarrow \mid T( \omega ) \mid \rightarrow 1 \Rightarrow \mid T(\omega) \mid _{dB} \rightarrow 0

Points caractéristiques

ω=ω0T(ω)=12T(ω)dB=3dB \omega = \omega_0 \Rightarrow \mid T( \omega ) \mid = \frac{1}{\sqrt{2}} \Rightarrow \mid T(\omega) \mid _{dB} = -3dB

Déphasage

Φ=ΦsΦe=Arg[vs]Arg[ve] \Phi = \Phi_s - \Phi_e = Arg[v_s] - Arg[v_e]

Φ=Arg[T(ω)]=Arg[11+j(ωω0)] \Phi = Arg[T(\omega)] = Arg \left [\frac{1}{1 + j\left ( \frac{\omega}{\omega_0} \right ) } \right ]

Φ=arctan(ωω0) \boxed{ \Phi = -\arctan \left ( \frac{\omega}{\omega_0} \right ) }

Tracé Asymptotique

ω+Φarctan(+)Φπ2 \omega \rightarrow +\infty \Rightarrow \Phi \rightarrow -\arctan( +\infty ) \Rightarrow \Phi \rightarrow -\frac{\pi}{2}

Points caractéristiques

Φ(ω0)=arctan(ω0ω0)=π4 \Phi (\omega_0) = -\arctan \left ( \frac{\omega_0}{\omega_0} \right ) = -\frac{\pi}{4}

bode.svg


Script Scilab pour générer les figures ci dessus

bode.sce
//============================================================================//
//                          SYSTEME DU PREMIER ORDRE
//============================================================================//

h=figure(4)
f=get("current_figure") //get the handle of the current figure :
f.background=8


R=10e3
C=100e-9
to=R*C

num = 1;                            // numérateur de la fonction de transfert
den = poly([1 to],'p','c');         // denominateur de la fonction de transfert (1+to.s)
H_s= syslin('c',num,den);

fmin=1e-2
fmax=10e5
xgrid(5);
bode(H_s, fmin, fmax, "rad")


// PHASE
t=get("hdl")   //get the handle of the newly created object
t.font_foreground=2; // change font properties
//t.font_size=1;
t.font_style=10;
t.grid=[3,3]
t.children.children.thickness=4
t.children.children.foreground=5
t.data_bounds = [5,-110;6283185.3,-1.715D-08];
t.x_label.text="$\omega\ (rad/s)$"
t.x_label.font_style=10
t.x_label.font_size=3
t.x_label.foreground=5
t.y_label.text="$Phase\ (°)$"
t.y_label.font_style=10
t.y_label.font_size=3
t.y_label.foreground=5

// MAGNITUDE 
a=gca()
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
//a.font_size=1;
a.font_style=10;
a.children.children.thickness=4
a.children.children.foreground=5
a.data_bounds = [5,-75.963597;6283185.3,-1.715D-08];
a.x_label.text="$\omega\ (rad/s)$"
a.x_label.font_style=10
a.x_label.font_size=3
a.x_label.foreground=5
a.y_label.text="$Magnitude\ (dB)$"
a.y_label.font_style=10
a.y_label.font_size=3
a.y_label.foreground=5

xs2svg(f,'fig.svg')

//******************************************************************************
//                     Réponse à une sinusoide
//******************************************************************************

//clf()       // Effacement fenêtre courante
h=figure(4)
f=get("current_figure") //get the handle of the current figure :
f.background=8


t_min=0
t_max=0.02
y_min=0
y_max=0.009

subplot(221)
omega=500
temps=linspace(0,t_max,1000);
entree=(sin(omega*temps))
h=csim(entree,temps,H_s);
plot(temps,h,'r');

p = get("hdl");
p.children.thickness = 7;
a=gca()
a.x_location = "origin";
a.y_location = "origin"; 
a.data_bounds=[t_min,t_max,y_min,y_max];
a.font_size=5;          //set the tics label font size
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
a.box="off";            // Cadre
xlabel("$t$","fontsize",6,"color","red");
ylabel("$v_{s}(t)$","fontsize",6,"color","red","rotation",0);
title(["$\omega=500 rad/s$"],"color","black","fontsize",6);

plot(temps,entree)
p = get("hdl");
p.children.thickness = 3;


//******************************************************
subplot(222)
omega=1000

temps=linspace(0,t_max,1000);
entree=(sin(omega*temps))
h=csim(entree,temps,H_s);
plot(temps,h,'r');

p = get("hdl");
p.children.thickness = 7;
a=gca()
a.x_location = "origin";
a.y_location = "origin"; 
a.data_bounds=[t_min,t_max,y_min,y_max];
a.font_size=5;          //set the tics label font size
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
a.box="off";            // Cadre
xlabel("$t$","fontsize",6,"color","red");
ylabel("$v_{s}(t)$","fontsize",6,"color","red","rotation",0);
title(["$\omega=1000 rad/s$"],"color","black","fontsize",6);

plot(temps,entree)
p = get("hdl");
p.children.thickness = 3;

//******************************************************
subplot(223)
omega=2000

temps=linspace(0,t_max,1000);
entree=(sin(omega*temps))
h=csim(entree,temps,H_s);
plot(temps,h,'r');

p = get("hdl");
p.children.thickness = 7;
a=gca()
a.x_location = "origin";
a.y_location = "origin"; 
a.data_bounds=[t_min,t_max,y_min,y_max];
a.font_size=5;          //set the tics label font size
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
a.box="off";            // Cadre
xlabel("$t$","fontsize",6,"color","red");
ylabel("$v_{s}(t)$","fontsize",6,"color","red","rotation",0);
title(["$\omega=2000 rad/s$"],"color","black","fontsize",6);

plot(temps,entree)
p = get("hdl");
p.children.thickness = 3;
//******************************************************
subplot(224)
omega=5000

temps=linspace(0,t_max,1000);
entree=(sin(omega*temps))
h=csim(entree,temps,H_s);
plot(temps,h,'r');

p = get("hdl");
p.children.thickness = 7;
a=gca()
a.x_location = "origin";
a.y_location = "origin"; 
a.data_bounds=[t_min,t_max,y_min,y_max];
a.font_size=5;          //set the tics label font size
a.grid=[3,3];           // Couleur grille
a.labels_font_color=2;  // Couleur chiffres axes
a.box="off";            // Cadre
xlabel("$t$","fontsize",6,"color","red");
ylabel("$v_{s}(t)$","fontsize",6,"color","red","rotation",0);
title(["$\omega=5000 rad/s$"],"color","black","fontsize",6);

plot(temps,entree)
p = get("hdl");
p.children.thickness = 3;


// Export to svg
xs2svg(f,'fig.svg')