Oscillate Urs
Oscillate Urs
P3
Oscillateurs
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
— Os illateur —
La non-linéarité est une idée essentielle pour les oscillateurs : elle engendre des harmoniques et stabilise les
oscillateurs.
Soit un oscillateur mécanique (pendule, masse suspendue à un ressort, . . .) ou électrique (circuit RLC, . . .)
en régime libre. Celui-ci obéit par exemple à l’équation :
m ẍ + f ẋ + k x = 0
L’équation est non linéaire dès lors qu’un des facteurs m, f ou k est fonction de x.
Il est parfois intéressant d’avoir un système instable, c’est le cas dans les dispositifs oscillateurs.
3.2.1 Le principe
ve vs
Amplificateur
Quadripôle
• le démarrage des oscillations qui constitue un régime transitoire pendant lequel l’amplitude des os-
cillations croît,
• un régime permanent pendant lequel le signal de sortie est périodique. Durant cette phase, le signal
n’est pas parfaitement sinusoïdal car des phénomènes de non-linéarité interviennent, par exemple la
saturation d’un ALI.
Considérons le filtre suivant dans lequel on applique un signal vs à l’entrée et pour lequel on récupère
ve à la sortie. Cette configuration peu ordinaire tient au fait que la sortie du filtre est reliée à l’entrée de
l’amplificateur et que la sortie de l’amplificateur est injectée à l’entrée du filtre.
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
R C
i
vs R C ve
⇒ Activité 3. 1
Exprimer la dérivée de vs par rapport au temps en fonction de la tension ve et de ses dérivées.
R2
C R
E
vs (t)
ve (t)
C R
R1 + R2
vs = A ve = ve
R1
vs
Soit ve = et :
A
d2 vs 3 − A dvs vs
2
+ + 2 =0
dt τ dt τ
Une valeur de 3 pour A permettrait d’obtenir un oscillateur harmonique. Une telle valeur est cependant
risquée car la moindre dispersion énergétique dans le circuit entraînerait un amortissement du signal et
donc, sa disparition.
• Lorsqu’un système obéit à une équation différentielle du deuxième ordre, il est stable si les 3
cœfficients sont de même signe. Ainsi, sa solution ne diverge pas.
• Si un des cœfficients est de signe différent, alors, la solution diverge : choisissons le terme d’ordre
2 est positif.
◦ Si le terme d’ordre 1 est négatif, cela correspond à un frottement "négatif", donc une ampli-
fication du signal, ce que l’on souhaite ici.
◦ Si le terme d’ordre 0 est négatif, la solution n’est pas oscillatoire (en sin et cos ou exp(i . . . )
et exp(−i . . . )) mais divergente (en ch et sh ou exp(+ . . . ) et exp(− . . . )).
◦ Si les termes d’ordres 0 et 1 sont négatifs, les deux effets se combinent.
1
La fréquence des oscillations est donnée par ω02 = , soit :
τ2
ω0
f0 =
2π
On voit ainsi que la fréquence des oscillations est fixée par le filtre de Wien :
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
1
f0 =
2πRC
⇒ Activité 3. 2
Quelles seront les conséquences sur le signal de sortie vs :
1. d’une augmentation de R2 ?
2. d’une diminution de R ?
C L
Si on monte en série une bobine et un condensateur, on doit obtenir en principe en régime libre, pour
l’intensité, une équation du type :
La réponse à un échelon de tension devrait donc être des oscillations harmoniques (sinusoïdales).
Or, en pratique, il y a un amortissement, lié à la résistance du circuit, notamment dans la bobine : le circuit
LC est en réalité un circuit RLC.
C L
Pour obtenir des oscillations quasi-sinusoïdales, il faudrait annuler la résistance du circuit. Ceci est possible
en insérant dans le circuit un dipôle simulant une résistance négative.
3.4.2 Réalisation
R1
ie
A
−
S
∞
+
ve R2
vs
R0
M
i
ε = 0 = v+ − v−
Soit :
v+ = v− = ve
R0
v+ = vs
R0 + R2
De plus :
ve − vs
ie =
R1
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
Soit :
ve = R1 ie + vs
R0 + R2
ve = R1 ie + ve
R0
R1
et finalement, en posant RN = R0 :
R2
R1
ve = −R0 ie = −RN ie
R2
Cette relation est satisfaite tant que |vs | < Vsat , c’est-à-dire tant que :
ve − vs
En régime saturé, vs = ±Vsat et la relation ie = donne :
R1
ve = R1 ie + vs = R1 ie ± Vsat
Comme on peut le voir avec cette dernière expression, l’ordonnée à l’origine de ve vaut ±Vsat .
R0 R0
En saturation haute (vs = +Vsat ), ε > 0 et v+ = , ce qui implique ve < Vsat .
R0 + R2 R0 + R2
R0
Inversement, en saturation basse (vs = −Vsat ), ε < 0 et v+ = − , ce qui implique ve >
R0 + R2
R0
− Vsat .
R0 + R2
3.4.3.3 Caractéristique
ie
1
pente
R1 ve
−Ve,max
1
pente
R1
(a) courant - tension (b) tension - courant
On insère maintenant ce dipôle simulant une résistance négative dans le circuit RLC précédent.
Suivant la tension que l’on désire observer, les dipôles ne seront pas placés dans le même ordre.
On peut utiliser par exemple le montage suivant :
R1 A
R
uR
A
R − L
∞
uL −RN
L +
u RN R2 ⇔
C
uC C R0
M
M
i (b) Circuit équivalent
u C + u L + u R + u RN = 0
Avec :
q
uC =
C
di
uL = L
dt
uR = R i
uRN = −RN i
dq duC
Avec i = , on a i = C et :
dt dt
di
uC + L + (R − RN ) i = 0
dt
soit :
q di
+L + (R − RN ) i = 00
C dt
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
dq
ou encore, avec i = , et en dérivant l’équation précédente :
dt
d2 i R − RN di 1
+ + i=0
dt2 L dt L C
1 R − RN ω0
En posant ω02 = et 2 λ = = , on peut également l’écrire :
LC L Q
d2 i di
2
+2λ + ω02 i = 0
dt dt
3.4.4.1 Démarrage
Le système est stable si les 3 termes de l’équation différentielle sont de même signe.
Pour qu’il y ait des oscillations, il faut donc que le terme du premier ordre soit négatif, soit RN > R (donc
λ < 0) : c’est normal puisqu’il faut compenser la résistance totale du circuit.
Le démarrage a lieu grâce aux défauts de l’amplificateur linéaire intégré, par exemple la tension de décalage.
Le démarrage peut également avoir lieu grâce à de très petits mouvements aléatoires des électrons libres
dans le métal constituant la résistance. Ces très petites oscillations d’électrons (dues à l’agitation thermique)
existent dans tout conducteur.
Dans un premier temps, les oscillations sont sinusoïdales amplifiées puis, en raison de la présence de l’am-
plificateur opérationnel, quasi-sinusoïdales, de pulsation ω0 .
On peut représenter le démarrage des oscillations de la façon suivante (merci Python !) :
Evolution temporelle
0.04
0.02
Intensité i (A)
0.00
−0.02
−0.04
0 5 10 15 20 25 30 35
Temps t (s)
En régime établi, l’amplificateur est saturé et le régime est gouverné par une autre équation différentielle
qui tient compte du fait que l’amplificateur linéaire intégré fonctionne en régime saturé :
ve = R1 ie + vs
= R1 ie ± Vsat
uRN = R1 i ± Vsat
et :
soit :
d2 i (R + R1 ) di 1
+ + i=0
dt2 L dt L C
1 R + R1 ω0
ou encore, avec ω02 = et 2 λ′ = = ′ :
LC L Q
d2 i di
+ 2λ′ + ω02 i = 0
dt2 dt
On voit ainsi que dans les deux régimes, transitoire et établi, l’équation différentielle régissant l’évo-
lution de l’intensité i est linéaire à cœfficients constants.
Le caractère non linéaire du régime établi provient uniquement de la variation du signe d’amortis-
ω0 ω0
sement (2 λ = ou 2 λ′ = ′ ) suivant que l’amplificateur linéaire intégré fonctionne en régime
Q Q
linéaire ou saturé.
3.4.4.2 Entretien
L’entretien des oscillations ne nécessite pas d’alimentation, comme on peut le voir sur la représentation du
circuit.
Il ne faut cependant pas oublier que l’amplificateur linéaire intégré est alimenté par une source externe de
tension : c’est elle qui fournit l’énergie nécessaire à l’entretien de ces oscillations.
On peut représenter l’entretien des oscillations de la façon suivante :
0.04
Evolution temporelle
0.03
0.02
0.01
Intensité i (A)
0.00
−0.01
−0.02
−0.03
−0.04
30 32 34 36 38 40
Temps t (s)
3.4.4.3 Extinction
Si la valeur de la résistance négative est insuffisante, la résistance du circuit crée un amortissement des
oscillations jusqu’à leur disparition :
0.04
Evolution temporelle
0.03
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
0.02
0.01
Intensité i (A)
0.00
−0.01
−0.02
−0.03
−0.04
30 35 40 45 50 55 60 65 70
Temps t (s)
• Pour le démarrage, les allures de l’amplitude et du portrait de phase sont les suivantes :
Evolution temporelle 0.04
Portrait de phase
0.04 0.03
0.02
0.02
0.01
0.00 0.00
−0.01
−0.02
−0.02
−0.04 −0.03
−0.04
0 5 10 15 20 25 30 35 −0.06 −0.04 −0.02 0.00 0.02 0.04 0.06
Temps t (s) Intensité i (A)
0.04
Evolution temporelle 0.04
Portrait de phase
0.03 0.03
0.02 0.02
0.01 0.01
1/ω di/dt (A/s)
Intensité i (A)
0.00 0.00
−0.01 −0.01
−0.02 −0.02
−0.03 −0.03
−0.04 −0.04
30 32 34 36 38 40 −0.06 −0.04 −0.02 0.00 0.02 0.04 0.06
Temps t (s) Intensité i (A)
0.04
Evolution temporelle 0.04
Portrait de phase réduit
0.03 0.03
0.02 0.02
0.01 0.01
1/ω di/dt (A/s)
Intensité i (A)
0.00 0.00
−0.01 −0.01
−0.02 −0.02
−0.03 −0.03
−0.04 −0.04
30 35 40 45 50 55 60 65 70 −0.06 −0.04 −0.02 0.00 0.02 0.04 0.06
Temps t (s) Intensité i (A)
— Remarque —
Les graphiques précédents ont été tracés grâce au programme RLC2.py que vous trouverez en fin de chapitre.
6
Demarrage des oscillations 6
Portrait de phase réduit
4 4
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
2 2
0 0
−2 −2
−4 −4
−6 −6
0.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 −5 0 5
temps t (s) Entrée ve (V)
5
Sortie vs (V)
0 0
−5 −5
−10
−10
−15
−15 −20
0.000 0.002 0.004 0.006 0.008 0.010 0.012 0.014 −30 −20 −10 0 10 20 30
temps t (s) Sortie vs (V)
Mêmes remarques que pour l’oscillateur à pont de Wien. On peut assimiler l’oscillateur à résistance négative
à un oscillateur de Van Der Pol et construire le portrait de phase (obtenus grâce au programme Rnegatif2.py)
suivant :
15 15
Intensité i(t)
10 10
Dérivée de l'intensité di(t)/ω
5 5
Intensité i(t)
0 0
−5 −5
−10 −10
−15
−20 −10 0 10 20
−15
0 2 4 6 8 10 12 14
3.6.1 Réalisation
R2
R1
+ ⊲∞
− b
B
uC
C R
s1 (t)
s2 (t)
b
− A
⊲∞ +
v+ > v− = 0
R1
c’est-à-dire lorsque ve > Vsat = E+ = V0 .
R2
C’est le seuil haut.
R1
E− = − Vsat = −V0
R2
R1
Cela signifie que s2 (t) = +Vsat tant que s1 (t) > − Vsat = −V0 et que s2 (t) = −Vsat tant que
R2
R1
s1 (t) < Vsat = V0 .
R2
Supposons que le comparateur à Hystérésis soit initialement dans l’état s2 (t) = −Vsat .
Vsat
Dans ce cas, ds1 (t) = dt > 0 et s1 (t) croît linéairement jusqu’à atteindre la valeur V0 , valeur pour
RC
laquelle s2 (t) bascule à +Vsat .
Vsat
On a alors ds1 (t) = − dt < 0 : s1 (t) décroît linéairement jusqu’à atteindre la valeur −V0 , valeur pour
RC
laquelle s2 (t) bascule à −Vsat .
uC (0− ) = uC (0+ ) = V0
Vsat
uC (t) = E+ − t
RC
Cet état de saturation positive du comparateur à Hystérésis a lieu tant que uC (t) > −V0 , c’est-à-dire tant
que :
V0 R1
0 < t < t1 = 2 R C = 2RC
Vsat R2
V0 R1
t1 < t < t2 = 2 R C = 2RC
Vsat R2
R1
T = 4RC
R2
s1 , s2
+Vsat
t1 t2 t1
V0
−V0
−Vsat
Une des améliorations classiques d’un oscillateur à relaxation consiste à rendre les deux états dissymé-
triques : on peut alors les noter t+ (saturation positive) et t− (saturation négative).
— Rapport y lique —
Pratiquement, on utilise fréquemment une association de deux diodes, tête-bêches, placées en dérivation.
⇒ Activité 3. 3
Déterminer le rapport cyclique du montage étudié précédemment.
3.8 Conclusions
Le filtre de Wien est peu sélectif et on observe en fait, en plus du fondamental, les harmoniques de rang 3
et 5.
L’oscillateur à résistance négative permet d’obtenir des signaux plus purs mais il est coûteux et encombrant.
En pratique, on utilise de préférence des oscillateurs à quartz ou des montages à transistors.
Comme nous l’avons vu dans ce chapitre, un oscillateur sinusoïdal est souvent réalisé à partir d’un système
bouclé constitué d’une chaîne directe de fonction de transfert A (ω) et d’une chaîne de retour de fonction
de transfert B (ω) :
e v s
+ A (ω)
+
B (ω)
59
60 plt.clf()
61 plt.plot(y2[:,0],y2[:,1])
62 plt.title("Portrait de phase")
63 plt.xlabel(’Intensité i (A)’)
64 plt.ylabel(’Dérivée di/dt (A/s)’)
65 plt.axis([-0.04,0.04,-0.12,0.12])
66 plt.savefig("portrait-entretien.eps")
67 plt.show()
68
69 plt.clf()
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
70 plt.axis(’equal’)
71 plt.plot(y2[:,0],y2[:,1]/np.sqrt(8))
72 plt.title("Portrait de phase")
73 plt.xlabel(’Intensité i (A)’)
74 plt.ylabel(’1/$\omega$ di/dt (A/s)’)
75 plt.savefig("portrait-entretien-red.eps")
76 plt.show()
77
78 plt.clf()
79 t=np.linspace(30,70,1000)
80 y3=odeint(f,[0.035,0],t)
81 plt.plot(t,y3[:,0])
82 plt.title("Evolution temporelle")
83 plt.xlabel(’Temps t (s)’)
84 plt.ylabel(’Intensité i (A)’)
85 plt.axis([30,70,-0.04,0.04])
86 plt.savefig("RLC-extinction.eps")
87 plt.show()
88
89 plt.clf()
90 plt.plot(y3[:,0],y3[:,1])
91 plt.axis([-0.04,0.04,-0.12,0.12])
92 plt.title("Portrait de phase")
93 plt.xlabel(’Intensité i (A)’)
94 plt.ylabel(’Dérivée di/dt (A/s)’)
95 plt.savefig("portrait-extinction.eps")
96 plt.show()
97
98 plt.clf()
99 plt.axis(’equal’)
100 plt.plot(y3[:,0],y3[:,1]/np.sqrt(8))
101 plt.title("Portrait de phase réduit")
102 plt.xlabel(’Intensité i (A)’)
103 plt.ylabel(’1/$\omega$ di/dt (A/s)’)
104 plt.savefig("portrait-extinction-red.eps")
105 plt.show()
106
107 plt.clf()
108 t=np.linspace(0,70,1000)
109 y4=odeint(f,[0.01,0],t)
110 plt.plot(t,y4[:,0])
111 plt.title("Evolution temporelle")
112 plt.xlabel(’Temps t (s)’)
113 plt.ylabel(’Intensité i (A)’)
114 plt.axis([-2,70,-0.04,0.04])
115 plt.plot(0,0.01,’ro’)
116 plt.savefig("RLC-total.eps")
117 plt.show()
118
119 plt.clf()
120 plt.plot(y4[:,0],y4[:,1])
121 plt.axis([-0.04,0.04,-0.12,0.12])
122 plt.title("Portrait de phase")
123 plt.xlabel(’Intensité i (A)’)
124 plt.ylabel(’Dérivée di/dt (A/s)’)
125 plt.plot(0.01,0,’ro’)
126 plt.savefig("portrait-total.eps")
127 plt.show()
128
129 plt.clf()
130 plt.axis(’equal’)
131 plt.plot(y4[:,0],y4[:,1]/np.sqrt(8))
132 plt.title("Portrait de phase réduit")
133 plt.xlabel(’Intensité i (A)’)
134 plt.ylabel(’1/$\omega$ di/dt (A/s)’)
135 plt.plot(0.01,0,’ro’)
136 plt.savefig("portrait-total-red.eps")
137 plt.show()
Programme wien.py :
1 # -*- coding: utf-8 -*-
2
3 import numpy as np
4 import matplotlib.pyplot as plt # Outils graphiques
5
6 R=1e3 # Resistance du Pont de Wien
7 C=100e-9 # Capacite du Pont de Wien
8 K=3.2 # Gain de l’etage d’amplification
9 tfin=15e-3 # instant final de la simulation
10 dt=0.01e-3 # pas
11 vsat=15 # tension de saturation de l’AO
12
13 # Conditions Initiales
14 t=[0.0]
15 e=[0.01]
16 s=[0.0]
17 ds=[0.0]
18 de=[0.01]
19
20
21 while t[-1]<tfin:
22 de.append((1/(R*C)*ds[-1]-3/(R*C)*de[-1]-e[-1]/(R*R*C*C))*dt+de[-1])
23 e.append(de[-1]*dt+e[-1])
24 if e[-1]<-vsat/K:
25 s.append(-vsat)
26 elif e[-1]>vsat/K:
27 s.append(vsat)
28 else:
29 s.append(K*e[-1])
30 ds.append((s[-1]-s[-2])/dt)
31 t.append(t[-1]+dt)
32
33 plt.clf()
34 plt.plot(t,e)
35 plt.xlabel("temps t (s)")
36 plt.ylabel("Entrée $v_e$ (V)")
37 plt.title("Demarrage des oscillations")
38 plt.plot(0,0.01,’ro’)
39 plt.axis([-0.0003,0.015,-6,6])
40 plt.savefig("wien-demarrage-ve.eps")
41 plt.show()
42
43 plt.clf()
44 plt.plot(e,de)
45 plt.xlabel("Entrée $v_e$ (V)")
46 plt.ylabel("Dérivée d$v_e$/dt (V/s)")
47 plt.title("Portrait de phase")
48 plt.plot(0.01,0.01,’ro’)
49 plt.savefig("wien-portrait-ve.eps")
50 plt.show()
51
52 de_ar=np.array(de,float)
53 de_red=de_ar*(R*C)
54 plt.axis(’equal’)
ellaSaL - hpesoJ tniaS tnemessilbatÉ - - IST EGPC - eimihC - euqisyhP
55 plt.plot(e,de_red)
56 plt.xlabel("Entrée $v_e$ (V)")
57 plt.ylabel("RC * d$v_e$/dt (V/s)")
58 plt.title("Portrait de phase réduit")
59 plt.plot(0.01,0.01,’ro’)
60 plt.savefig("wien-portrait-red-ve.eps")
61 plt.show()
62
63 plt.clf()
64 plt.plot(t,s)
65 plt.axis([-0.0003,0.015,-16,16])
66 plt.xlabel("temps t (s)")
67 plt.ylabel("Sortie $v_s$ (V)")
68 plt.title("Demarrage des oscillations")
69 plt.plot(0,0.01,’ro’)
70 plt.savefig("wien-demarrage-vs.eps")
71 plt.show()
72
73 plt.clf()
74 plt.plot(s,ds)
75 plt.axis([-16,16,-200000,200000])
76 plt.xlabel("Sortie $v_s$ (V)")
77 plt.ylabel("Dérivée d$v_s$/dt (V/s)")
78 plt.title("Portrait de phase")
79 plt.plot(0.01,0.01,’ro’)
80 plt.savefig("wien-portrait-vs.eps")
81 plt.show()
82
83 ds_ar=np.array(ds,float)
84 ds_red=ds_ar*(R*C)
85 plt.axis(’equal’)
86 plt.plot(s,ds_red)
87 plt.xlabel("Sortie $v_s$ (V)")
88 plt.ylabel("RC * d$v_s$/dt (V/s)")
89 plt.title("Portrait de phase réduit")
90 plt.plot(0.01,0.01,’ro’)
91 plt.savefig("wien-portrait-red-vs.eps")
92 plt.show()
Programme Rnegatif2.py :
1 # -*- coding: utf-8 -*-
2
3 import numpy as np
4 import matplotlib.pyplot as plt
5 from scipy.integrate import odeint
6
7 tau = 0.5
8 Q = - 5
9 omega = 2*np.pi/tau
10
11 def f(y,t):
12 if abs(y[0])<5:
13 return [y[1],-omega**2*y[0]-(omega/Q)*y[1]]
14 if abs(y[0])>5:
15 return [y[1],-omega**2*y[0]-(1/tau)*y[1]]
16
17 t=np.linspace(0,15,10000)
18 # Calcul en partant de y=0.01, y’=0
19 y1=odeint(f,[0.01,0],t)
20