asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Projet : asservissement num´ erique d’un oscillateur ` a quartz
E. Carry, J.-M Friedt´
jmfriedt@femto-st.fr transparents `ajmfriedt.free.fr
5 mars 2021
1 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al
D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Programmation du circuit
• Divers protocoles de communication pour flasher le microcontrˆoleur
• Carte Olimex Atmega32U4 : protocole AVR 1091
• Par d´efaut, Atmel commercialise ses Atmega32U4 avec le
bootloader DFU (Device Firmware Upgrade)2qui communique par le port USB
• Nouvel outil de configuration du microcontrˆoleur en replacement de avrdude:
MCU=atmega32u4 DFU=dfu-programmer install: $(EXEC).hex
$(DFU) $(MCU) erase
$(DFU) $(MCU) flash $(EXEC).hex
$(DFU) $(MCU) reset
1. www.atmel.com/images/doc1644.pdf 2. http://www.atmel.com/Images/doc7618.pdf
2 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al
D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
D´ ecoupage du programme : communiquer
r´ ecepteur GPS
1.57 GHz Atmega
projet
1 PPS
1 s
32u{2,4}
(Thal`es AC12, Motorola Oncore) IC
PWM USB
RS232
correction fr´ equence
• Communication : bus USB v.s RS232
• RS232 est simple (protocole asynchrone sym´etrique) mais lent et n’est plus support´e sur PC
• USB est asym´etrique et n´ecessite des transactions complexes : LUFA3
3. http://jmfriedt.free.fr/LUFA_light_EEA.tar.gz
3 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al
D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
D´ ecoupage du programme : compter
• Fonctioninput-capturedu compteur
• M´emorisation du compteur `a chaque front montant de 1 PPS
• Oscillateur 16 MHz : 16·106216 donc le compteuroverflow
• L’oscillateur pr´esente une d´erive maximum de 100 ppm ...
• `a 16 MHz, 1600 Hz qui tiennent sur 11 bits donc un compteur 16 bits suffit
⇒second programme de d´emonstration : mesurer la fr´equence du quartzet observer sa d´erive en le chauffant.
4 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al
D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
D´ ecoupage du programme : compter
• Fonctioninput-capturedu compteur
• M´emorisation du compteur `a chaque front montant de 1 PPS
• Oscillateur 16 MHz : 16·106216 donc le compteuroverflow
• L’oscillateur pr´esente une d´erive maximum de 100 ppm ...
• `a 16 MHz, 1600 Hz qui tiennent sur 11 bits donc un compteur 16 bits suffit
9700 9800 9900 10000 10100 10200
0 100 200 300 400 500 600 700
ecart de frequence (Hz)
temps (s)
’temperature_mode_normal.dat’ u 4
fer a souder
bombe givrante
⇒second programme de d´emonstration : mesurer la fr´equence du quartzet observer sa d´erive en le chauffant.
5 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
D´ ecoupage du programme : commander
• Utilisation de la PWM pour g´en´erer un signal p´eriodique de rapport cyclique ajustable
• Fr´equence de PWM d´etermin´ee en accord avec filtre passe bas de lissage (fr´equence ´elev´ee⇒temps de r´eaction court)
• Mesurer la gamme de tensionspour lesquelles le quartz continue
`
a osciller et la fr´equence du quartz en fonction de la tension Bonus: impl´ementer lewatchdog pour r´einitialiser le microcontrˆoleur en cas de perte de l’oscillation du quartz
6 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
D´ ecoupage du programme : commander
Analyse statique et dynamique en boucle ouverte
• d´eterminer la plage de tensions de fr´equences command´ees par la tension de PWM
• d´eterminer la constante de temps et gain de la commande
x1
Xout
10 pF
Xin
20 pF
16 MHz
440 nF
PWM
33 k 33 k
Ω Ω 1 nF 82 kΩ mesure
commande localement lineaire
0 9900+/−0
9400 9600 9800 10000 10200 10400 10600
0 200 400 600 800 1000
variation frequence (Hz)
PWM (x100/1024 %) 7 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
D´ ecoupage du programme : asservir (1)
• Mise en œuvre d’une PID num´erique en temps discret (quantification) : dxdt → xn−xTn−1
e etX =R
x·dt →X+ =xn·Te
• c(t) =Kp·e(t) +KiR
e(t) +Kdde(t)
• choix des param`etres :Kd etKi nuls,dt Kp croˆıt jusqu’`a osciller.
• Ki pour rendre l’erreur statique nulle
• Kd pour augmenter la dynamique et r´eduire les d´epassements `a la consigne
erreur=0;
integrale=0;
erreur_avant=0;
while(1) {
mesure(&freq_mesure); // prend un temps dt erreur=consigne-freq_mesure;
integrale+=erreur; // *dt
sature_integrale(&integrale); // anti-windup derivee=(erreur-erreur_avant); // /dt
commande_pwm=Kp*erreur+Ki*integrale+Kd*derivee; // PID
sature_commande(commande_pwm); // rester dans la gamme erreur_avant=erreur;
} 8 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
D´ ecoupage du programme : asservir (2)
• ´evolution dec(t) et en consid´erant (temps discret) la diff´erence cn+1−cn
• loi r´ecursive de commande ...
• ... la somme infinie de l’int´egrale se r´eduit `aKi·εn+1
• les termes proportionnel et int´egral sont Kp·(εn+1−εn)·Te et Kd· (εn+1−εn)−(εT n−εn−1)
e =Kd· (εn+1−2εTn+εn−1)
e .
• ´equation r´ecursive qui exprime la transform´ee en Z de la PID :
C(z)(z−1)
| {z }
cn+1−cn
=E(z)
Kp·(z−1) +Ki·Te+Kd
z−2 +z−1 Te
⇔C(z)
E(z)= αz+β+γz−1
z−1 = α+βz−1+γz−2 1−z−1 err=0;
err_1=0;
err_2=0;
commande_pwm=0;
while(1) {
mesure(&freq_mesure); // prend un temps dt err_2=err_1;
err_1=err;
err=consigne-freq_mesure;
commande_pwm+=Kp*(err-err_1)+Ki*err+Kd*(err+err_2-2*err_1);
sature_commande_et_integrale(&commande_pwm);
} 9 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
De la th´ eorie ` a la pratique
9000 9500 10000 10500 11000 11500 12000
0 50 100 150 200 250 300 350-200 -100 0 100 200 300 400 500
frequence % 65536 (Hz) error v.s 9500 (Hz)
time (s)
no PID control PID output frequency PID error signal no feedback
error v.s 9500
soldering iron controlled frequency
Fr´equence de l’oscillateur apr`es chauffe puis refroidissement du quartz.
• Saturation de la commande
• Divergence de l’int´egrale⇒saturation de l’int´egrateur ou strat´egie d’anti-windup
10 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Cas particulier de l’asservissement num´ erique
Caract´erisation en boucle ouverte (gainaet retardL) pour en d´eduire les coefficients de la boucle d’asservissement4
4. A. Besan¸con-Voda & S. Gentil,R´egulateurs PID analogiques et num´eriques, Tech. de l’ing´enieur R7416 (1999), ou sans les fautes, le cours de Gonzalo Cabodevila disponible `ahttp://jmfriedt.free.fr/Gonzalo_cours1A.pdf
11 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Simulation SPICE
• Composant sp´ecifique SPICE (Add→pspice→VSOURCE)
• D´efinition des propri´et´es de la source dans sa valeur
• D´esactiver les composants qui ne font pas partie de la simulation (Edit →Edit Spice Model →Disable symbol for simulation)
• Tools→Simulator→Simulation →Settings
• Run/Stop Simulation→Probe pour s´electionner le point de mesure
• Simulation→Show SPICE Netlist pour r´ecup´erer le fichier ngspice
12 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Mod´ elisation de l’amplificateur op´ erationnel
Utilisation de SPICE (Simulation Program with Integrated Circuit Emphasis – Univ. Berkeley, CA) et sa version opensourcengspice5
• filtre passe-bas : mod´elisation d’un amplificateur op´erationnel id´eal
• ampli-op id´eal : source de tension command´ee en tensionavec fort gain, suivi de passe bas pour une bande passante finie (´eviter oscillations)
* +in (=1) -in (=2) out (=3) -- 100k=gain, rbw.cbw=LPF, eout=suiveur .subckt opamp 1 2 3
e 3 0 1 2 100k .ends opamp
e1
-
+ OUT
β= 105
5. J.-M Friedt,Introduction `a SPICE3 : simulation de circuits ´electroniques, et au-del`a, OpenSilicum 1 (Janvier-Mars 2011) `ajmfriedt.free.fr/lm_spice.pdfet cours de R´emy Brendel `ahttp://jmfriedt.free.fr/Spice3.pdf
13 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Mod´ elisation de l’amplificateur op´ erationnel
Utilisation de SPICE (Simulation Program with Integrated Circuit Emphasis – Univ. Berkeley, CA) et sa version opensourcengspice6
• filtre passe-bas : mod´elisation d’un amplificateur op´erationnel id´eal
• ampli-op id´eal : source de tension command´ee en tensionavec fort gain, suivi de passe bas pour une bande passante finie (´eviter oscillations)
* +in (=1) -in (=2) out (=3) -- 100k=gain, rbw.cbw=LPF, eout=suiveur .subckt opamp 1 2 3
rin 1 2 2meg e 3 0 1 2 100k .ends opamp
e1
-
+ OUT
β= 105 Rin=2MΩ
6. J.-M Friedt,Introduction `a SPICE3 : simulation de circuits ´electroniques, et au-del`a, OpenSilicum 1 (Janvier-Mars 2011) `ajmfriedt.free.fr/lm_spice.pdfet cours de R´emy Brendel `ahttp://jmfriedt.free.fr/Spice3.pdf
14 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Mod´ elisation de l’amplificateur op´ erationnel
Utilisation de SPICE (Simulation Program with Integrated Circuit Emphasis – Univ. Berkeley, CA) et sa version opensourcengspice7
• filtre passe-bas : mod´elisation d’un amplificateur op´erationnel id´eal
• ampli-op id´eal : source de tension command´ee en tensionavec fort gain, suivi de passe bas pour une bande passante finie (´eviter oscillations)
* +in (=1) -in (=2) out (=3) -- 100k=gain, rbw.cbw=LPF, eout=suiveur .subckt opamp 1 2 3
rin 1 2 2meg e 4 0 1 2 100k rbw 4 3 0.5meg cbw 3 0 31.85nf .ends opamp
-
+ OUT
e1 β= 105 Rin=2MΩ
7. J.-M Friedt,Introduction `a SPICE3 : simulation de circuits ´electroniques, et au-del`a, OpenSilicum 1 (Janvier-Mars 2011) `ajmfriedt.free.fr/lm_spice.pdfet cours de R´emy Brendel `ahttp://jmfriedt.free.fr/Spice3.pdf
15 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Mod´ elisation de l’amplificateur op´ erationnel
Utilisation de SPICE (Simulation Program with Integrated Circuit Emphasis – Univ. Berkeley, CA) et sa version opensourcengspice8
• filtre passe-bas : mod´elisation d’un amplificateur op´erationnel id´eal
• ampli-op id´eal : source de tension command´ee en tensionavec fort gain, suivi de passe bas pour une bande passante finie (´eviter oscillations)
-
+ OUT
β= 1 e1
β= 105 Rin=2MΩ1
2
4 5 6 3
eout
XAlternate node sequence: 3 2 6 pour faire correspondre le mod`ele SPICE avec notre assignation de broches
8. J.-M Friedt,Introduction `a SPICE3 : simulation de circuits ´electroniques, et au-del`a, OpenSilicum 1 (Janvier-Mars 2011) `ajmfriedt.free.fr/lm_spice.pdfet cours de R´emy Brendel `ahttp://jmfriedt.free.fr/Spice3.pdf
16 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Simulation SPICE (ngspice)
• Charger un mod`ele :Edit Spice Model→Model→Libraryet charger fichier du sous-circuit (.libr´edig´e avec son ´editeur favori), s´electionner leModeletType=Subcircuit
• Possibilit´e de charger des mod`eles “complexes”, e.g. pour le TL081 (mais polynˆome de LTSpice)
http://www.ti.com/product/TL081/toolssoftware
• Alternate Node Sequence pour faire correspondre broches du mod`ele et du composant (3 2 7 4 6 avec mod`ele TL081, 3 2 6 avec mod`ele id´eal sans alim.)
• Tunepour balayer la valeur d’un composant et voir son impact sur la fonction de transfert
17 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Simulation SPICE (ngspice)
• Charger un mod`ele :Edit Spice Model→Model→Libraryet charger fichier du sous-circuit (.libr´edig´e avec son ´editeur favori), s´electionner leModeletType=Subcircuit
• Possibilit´e de charger des mod`eles “complexes”, e.g. pour le TL081 (mais polynˆome de LTSpice)
http://www.ti.com/product/TL081/toolssoftware
• Alternate Node Sequence pour faire correspondre broches du mod`ele et du composant (3 2 7 4 6 avec mod`ele TL081, 3 2 6 avec mod`ele id´eal sans alim.)
• Tunepour balayer la valeur d’un composant et voir son impact sur la fonction de transfert
18 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Passif command´ e en tension
* resistance
.subckt varres 1 2 CTRL r1 1 2 1e6
b1 1 2 I=V(1,2)/(V(CTRL)+1) .ends
V1 1 0 ac 1 dc 1 sin(1 1 100k) V2 6 0 sin(5 1 10k)
R1 1 2 1000 X1 2 0 6 varres .control tran 1u 200u plot v(2) .endc
• une r´esistance est d´etermin´ee par un courant variant lin´eairement avec la tension (I =U/R)
• facteur de proportionnalit´e d´etermin´e par une tension (sourceB n+ n-: Nonlinear dependent source)
2 1
X1 V2 V1
R1 6
0
0 0.002 0.004 0.006 0.008 0.01 0.012 0.014
0 5e-05 0.0001 0.00015 0.0002
tension2 (V)
temps (s) 19 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Mod´ elisation du comportement de l’oscillateur
• Mod´eliser le tirage en tension en faisant varier lavaricap(varactor)
• varactor9:VC(t) =C1 R
i(t)·dt⇔C = V1
C
Ri(t)·dt et R i est la charge d’un condensanteur de 1 F
* varactor demonstration
* (RC circuit with C: varactor)
* V=1/C \int i(t)dt
* => C=1/V \int i(t)dt .SUBCKT VARICAP 1 2 R1 1 3 1 VC 3 4
BC 4 2 V=(1/(v(1)*10e-9))*v(int) BINT 0 INT I=I(VC)
CINT INT 0 1 .ENDS
Ve 1 0 AC 1 DC 2 sin(1.5 1 1k) R1 1 2 1k
C1 2 0 20n X1 2 0 VARICAP Coff 2 4 1u Ro 4 0 100 .control destroy all set units = degrees
R1 3 4
2 1
VC
1F BINT
B2
INT
alter @ve[dc]=0 ac lin 10001 2k 100k alter @ve[dc]=1 ac lin 10001 2k 100k alter @ve[dc]=2 ac lin 10001 2k 100k alter @ve[dc]=3 ac lin 10001 2k 100k set hcopydevtype=postscript set hcopypscolor=1 set color0=rgb:0/0/0 set color1=rgb:f/f/f
plot db(ac1.v(4)) db(ac2.v(4)) db(ac3.v(4)) db(ac4.v(4)) xlabel f[Hz] ylabel |mag(V)|[dB]
plot ph(ac1.v(4)) ph(ac2.v(4)) ph(ac3.v(4)) ph(ac4.v(4)) xlabel f[Hz] ylabel phase[deg]
hardcopy varicap_abs.ps abs(ac1.v(4)) abs(ac2.v(4)) abs(ac3.v(4)) abs(ac4.v(4)) xlabel f[Hz]
hardcopy varicap_pha.ps ph(ac2.v(4)) ph(ac3.v(4)) ph(ac4.v(4)) xlabel f[Hz] ylabel phase[deg]
unset units .endc
9. C. Basso,SPICE Analog Behavioral Modeling of Variable Passives, Power Electronics Technology (April 2005)
20 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Mod´ elisation du comportement de l’oscillateur
• Validation du comportement de la varicap en l’ins´erant dans un filtreRC (τ= 1/(RC))
• variation de la valeur de la varicap en modifiant la polarisation DC
f[hz]
phase[deg]
0.0 20.0 40.0 60.0 80.0 100.0
kHz -1.4
-1.2 -1.0 -0.8 -0.6 -0.4 -0.2 0.0 0.2
V ph(ac3.v(4)) ph(ac2.v(4))
ph(ac4.v(4))
f[hz]
0.0 20.0 40.0 60.0 80.0 100.0
kHz 10.0
20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0
mV abs(ac2.v(4)) abs(ac1.v(4))
abs(ac3.v(4)) abs(ac4.v(4))
21 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Mod´ elisation du comportement de l’oscillateur
• Capacit´e de tirage d’un r´esonateur `a quartz : on peut aller de la r´esonance `a l’antir´esonance (diff´erence donn´ee par le coefficient de couplage ´electrom´ecanique du substrat pi´ezo´electrique)
• conditions de Barkhausen :ϕ= 2nπ,n∈N& gain>pertes,
• r´esonateur oscille sur sa condition de phase nulle, compte tenu des condensateurs dans la r´etroaction.
1 Statek CX-1-03 CRYSTAL 8 MHz to 160 MHz Miniature AT-Cut Quartz Crystal
2 J.R. Vig,Quartz Crystal Resonators and Oscillators, tutorial UFFC, New Orleans (2000),http://www.am1.us/
Local_Papers/U11625%20VIG- TUTORIAL.pdfslide 73
R1
L1
C0
C1
• fr =2π1q
1 L1·C1
• Q =2π·f1
r·R1·C1
• dϕ
df =360π ·Qf
r
• C1=C0ω2 a−ω2r
ω2r
=C0·k2
22 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Mod´ elisation du comportement de l’oscillateur
• Capacit´e de tirage d’un r´esonateur `a quartz : on peut aller de la r´esonance `a l’antir´esonance (diff´erence donn´ee par le coefficient de couplage ´electrom´ecanique du substrat pi´ezo´electrique)
• ⇒mod´eliser le signal oscillant, le filtre passe bas, la varicap et le tirage en tension
f[hz]
phase[deg]
15.9960 15.9970 15.9980 15.9990 16.0000
MHz -180.0
-160.0 -140.0 -120.0 -100.0 -80.0 -60.0 -40.0 -20.0 0.0
V ph(ac3.v(4)) ph(ac2.v(4))
ph(ac4.v(4)) ph(ac5.v(4))
ph(ac6.v(4))
f[hz]
15.9960 15.9970 15.9980 15.9990 16.0000
MHz 0.0
5.0 10.0 15.0 20.0 25.0
V abs(ac2.v(4)) abs(ac1.v(4))
abs(ac3.v(4)) abs(ac4.v(4))
abs(ac5.v(4)) abs(ac6.v(4))
23 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Exploitation de ngspice depuis octave
• ngspicepour la simulation de circuits
´
electroniques, mais peu de fonctions de
traitement
• octavepermet de traiter les fichiers textes (print) g´en´er´es parngspice
• ⇒g´en´erer lanetlist (fichier texte) depuis octave, simuler, puis exploiter les r´esultats (e.g. optimisation par fminsearch())
n =1;
f o r d = 1 : 1 : 2 0 m=1;
f o r c = 1 : 1 : 2 0
f=f o p e n(’ r c o c t a v e . cir ’,’ w ’) ; % n e t l i s t f p r i n t f( f ," * t i r a g e r e s o n a t e u r \ n ") ; f p r i n t f( f ," V1 99 0 1.0 ac 1 . 0 \ n ") ;% s o u r c e f p r i n t f( f ," rs 99 1 100 k \ n ") ; % s r c Z f p r i n t f( f ," R1 1 2 2 2 . 8 \ n ") ; % BVD m o t i o n a l f p r i n t f( f ," L1 2 3 7 0 . 3 m \ n ") ;
f p r i n t f( f ," C1 3 4 1.4 f \ n ") ;
f p r i n t f( f ," C0 1 4 0 . 6 5 p \ n ") ; % BVD e l e c f p r i n t f( f ," Cp1 1 0 % fp \ n ", d ) ; % c a p a f p r i n t f( f ," Cp2 4 0 % fp \ n ", c ) ; % c a p a f p r i n t f( f ," RL 4 0 100 k \ n ") ; % l o a d i m p e d a n c e f p r i n t f( f ," . c o n t r o l \ n ") ;
f p r i n t f( f ," ac lin 5 0 0 0 1 6 . 0 2 meg 1 6 . 0 8 meg \ n ") ; f p r i n t f( f ," p r i n t vdb (4) vp (4) > t \ n ") ;
f p r i n t f( f ," q u i t \ n ") ; % 1= l i n e , 2= f r e q , 3=dB , 4=ph f p r i n t f( f ," . e n d c \ n ") ;
f c l o s e( f ) ;
s y s t e m(’ n g s p i c e r c o c t a v e . cir > / dev / n u l l ’) ; s y s t e m(’ cat t | g r e p ^[0 -9] t > tt ’) ; s y s t e m(’ rm t ’) ;
l o a d t t
[ a , b ]=max( t t ( : , 3 ) ) ; % r e c h e r c h e max d ’ a d m i t t a n c e s o l u t i o n (m, n )=t t ( b , 2 ) ;% 2eme c o l o n n e = f r e q u e n c e m=m+1;
end n=n+1 end
24 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Exploitation de ngspice depuis octave
• ngspicepour la simulation de circuits ´electroniques, mais peu de fonctions de traitement
• octavepermet de traiter les fichiers textes (print) g´en´er´es parngspice
• ⇒g´en´erer lanetlist (fichier texte) depuis octave, simuler, puis exploiter les r´esultats (e.g. optimisation par fminsearch())
0 5 10 15 20
16.0495 16.05 16.0505 16.051 16.0515 16.052 16.0525 16.053
C1 (pF)
freq (MHz)
0 5 10 15 20
2500 3000 3500 4000 4500 5000 5500 6000
Cp1 (pF)
fmax-fmin (Hz)
Cp2 (pF)
Cp1 (pF) 16.042
16.044 16.046 f (MHz) 16.048 16.05 16.052 16.054 16.056
0 5 0
10 5
15 10
15 20
20
16.02 16.03 16.04 16.05 16.06 16.07 16.08 16.09
-120 -100 -80 -60 -40 -20 0
freq (MHz)
|Y| (a.u.)
16.02 16.03 16.04 16.05 16.06 16.07 16.08 16.09
-4 -2 0 2 4
freq (MHz)
ph(Y) (rad)
25 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Optimisation de filtre
• fonctionfminsearch()de Matlab/Octave pour la descente de gradient,
• fonction de coˆut exploite ngspicepour calculer la fonction de transfert d’un filtreLC coupe-bande dont on visefc= 500 kHz
0 200000 400000 600000 800000 1e+06
-200 -150 -100 -50 0
frequency (Hz)
|S21| (dB)
• Solution :L= 0.175µH, C= 0.579µH
⇒fc= 5.03e+ 05 Hz
L =.1 e−6;% c o n d i t i o n s i n i t i a l e s ( L , C g r o s s i e r s ) C=1e−6;
X0=[L C ] ;
Xopt=f m i n s e a r c h (’ c o u t _ f i l t r e ’, X0 ) ;
% o p t i m f i l t r e ( [ 1 e−6,1e−6])
p r i n t f(" s o l u t i o n =% f % f \ n ", Xopt ( 1 ) , Xopt ( 2 ) ) ; 1/2/p i/s q r t( L∗C )
1/2/p i/s q r t( Xopt ( 1 )∗Xopt ( 2 ) ) f u n c t i o n e r r e u r= c o u t f i l t r e ( param ) L=param ( 1 )
C=param ( 2 )
i f ( ( L<=0) | | ( C<=0)) e r r e u r =1e 9 ; e l s e
f=f o p e n(’ o p t i m _ f i l . cir ’,’ w ’) ; f p r i n t f( f ," * f i l t r e passe - b a n d e \ n ") ; f p r i n t f( f ," V1 99 0 1.0 ac 1 . 0 \ n ") ; f p r i n t f( f ," rs 99 1 10 k \ n ") ; f p r i n t f( f ," L1 1 2 % fu \ n ", L ) ; f p r i n t f( f ," C1 2 0 % fu \ n ", C ) ; f p r i n t f( f ," RL 1 0 10 k \ n ") ; f p r i n t f( f ," . c o n t r o l \ n ") ;
f p r i n t f( f ," ac lin 5 0 0 0 100 1 meg \ n ") ; f p r i n t f( f ," p r i n t vdb (1) vp (1) > t \ n ") ; f p r i n t f( f ," q u i t \ n ") ;
f p r i n t f( f ," . e n d c \ n ") ; f c l o s e( f ) ;
s y s t e m(’ n g s p i c e o p t i m _ f i l . cir > / dev / n u l l ’) ; s y s t e m(’ cat t | g r e p ^[0 -9] t > tt ’) ; s y s t e m(’ rm t ’) ;
l o a d t t ;
p l o t( t t ( : , 2 ) , t t ( : , 3 ) ) ;h o l d on [ a , b ]=min( t t ( : , 3 ) ) ; f r e q=t t ( b , 2 ) e r r e u r=a b s( f r e q−5e 5 ) ; end
end
26 / 27
asservissement num´erique d’un oscillateur `a
quartz J.-M Friedt & al D´eveloppement microcontroleur P.I.D.
Simulation SPICE Tirage de l’oscillateur SPICE pour l’optimisation
Conclusion (et questions)
1 Reproduire les simulations de la varicap,
2 Reproduire les simulation de tirage de fr´equence du r´esonateur, compte tenu des informations fournies dans la documentation d’un r´esonateur, par exemple
http://www.andhraelec.com/app_quartz_crystals.html.
3 Etendre la plage de fr´´ equences de simulation : commenter sur l’´evolution de la phase. Comment se compare-t-elle `a la phase d’un circuit RLC s´erie ?
4 Quel est le comportement asymptotique (en basse et haute fr´equence) d’un circuitRLC? d’un circuit Butterworth-van Dyke ? Est-ce coh´erent avec les simulations ?
27 / 27