Le moteur provient de l'université de berkeley : spice3f5.
Plusieurs interfaces existent autour de ce simulateur.
PSPICE est une version commercialisée par Orcad/Cadence.
Protel permet aussi la simulation analogique à partir du schéma.
Simulation aussi basée sur le moteur spice. (netlist de l'ampli op issue de Protel/spice).
L'utilisation d'Opus Spice est présentée ici.
Ce logiciel est libre de droit, sans restrictions apparentes et disponible sous Linux ou Zindow$.
Il est possible d'interfacer le simulateur avec le logiciel bien connu de CAO Eagle,
ici l'entrée se fera par un script, la sortie en mode graphique.
Exemple 1 : simulation de la fonction de transfert d'un filtre RC.
objectif : représenter une fonction de transfert en gain & phase.
mots clefs : plot db, plot ph, ac dec
Filtre RC simple
.control
set units=degree
ac dec 50 1 10k
plot db(v(Vout))
plot ph(v(Vout))
.endc
* Filtre RC d'ordre 1
* Fréquence d coupure à 3dB = 1/2*pi*R*C
* soit ici, pour R=10k et C=100n fc=162Hz
* pente de 20dB par décades
R1 N1 Vout 10K
C1 Vout 0 100N
Ve N1 0 0V
+AC 1 0 PULSE 0 -1 0 1US
* note : pulse ne sert pas ici
.end
Résultat de simulation. fréquence de coupure à 3dB de 162Hz, pente 20dB/décade (ordre 1)
Exemple 2 : fonction de transfert à partir de la transformée de Laplace.
Exemple 3 : Amplificateur opérationnel inverseur.
objectif : utiliser un composant dans la description, représentation temporelle.
mots clefs : SUBCKT, include, model, tran
La fonction subckt est utilisée pour définir le composant amplificateur ua741.
Le modèle utilisé ici est fournit à la fin du document. (annexe 1)
Le rapport gain bande/passante est constant (faire plusieurs simulations).
La saturation peut aussi être observée avec une entrée suffisemment importante.
Amplificateur inverseur
.control
set units=degree
ac dec 50 0.1 1000k
plot db(v(Vs))
plot ph(v(Vs))
tran 50us 200us 0 50us
plot v(N1) v(Vs)
.endc
* Amplificateur inverseur
* gain de -R2/R1
* ici, 20*log(100k/10k) = 20dB
* déphasage de 180 degrès.
.SUBCKT ua741 VPLUS VMINUS VOUT VCC VEE
.INCLUDE ua741.cir
.MODEL BC107 NPN (BF=150 RB=100 VA=200 CCS=2PF CJE=3PF CJC=2PF TF=0.3NS TR=6NS)
.MODEL BC177 PNP (BF=80 RB=20 VA=200 CJE=6PF CJC=4PF TF=1NS TR=20NS)
.ends
R1 N1 Vm 10K
R2 Vm Vs 100K
Ve N1 0 0.5V
*+AC 1 0 PULSE 0 -1 0 30US
+AC 1 0 SIN 0.1 0.1 10k 0 0 0
VCC VCC 0 15V
VEE 0 VEE 15V
X1 0 Vm Vs VCC VEE ua741
.end
Résultat de simulation. Observation de la bande passante du modèle pour un gain donné.
Exemple 4 : Filtre de boucel actif.
L'objectif cette fois est de visualiser les diagrammes de Bode.
On notera le pole et le zéro de la fonction de transfert.
Ils correspondent aux deux points d'inflexion de la courbe de gain.
respectivement 0.1Hz et 10Hz.
Filtre de boucle actif n/p
.control
set units=degree
ac dec 50 0.01 100
plot db(v(OUT))
plot ph(v(OUT))
*tran 50us 200us 0 50us
*plot v(N1) v(OUT)
.endc
* Amplificateur inverseur
* gain de -R2/R1
* ici, 20*log(100k/10k) = 20dB
* déphasage de 180 degrès.
.SUBCKT LF411C 1 2 3 4 5
.INCLUDE LF411C.cir
.ends
C1 NetC1_1 Netrinb_2 100nF
C2 OUT NetC1_1 10uF
C3 0 NetC4_1 10uF
C4 NetC4_1 NetRina_2 100nF
R1 Netrinb_2 NetC1_1 159K
R3 NetRina_2 NetC4_1 159K
RINA INP NetRina_2 15.9K
RRINB INM Netrinb_2 15.9K
XU1 NetRina_2 Netrinb_2 VCC VEE OUT LF411C
VCC VCC 0 15V
VEE 0 VEE 15V
VIN INP INM 0
+AC 1 0 SIN 0 5 50k 0 0 0
.end
Résultat de simulation.
Exemple 5 : Filtre de boucel actif.
Le circuit est similaire au précédent, il présente une cellule de pré-filtrage en T
sur chacune des entrées différentielles de l'amplificateur opérationnel.
Filtre de boucle actif n/p avec pré-filtrage en T
.control
set units=degree
ac dec 50 1 10k
plot db(v(OUT))
plot ph(v(OUT))
.endc
.SUBCKT LF411C 1 2 3 4 5
.INCLUDE LF411C.cir
.ends
R2m NetC1_1 Vm 33k
C2m OUT NetC1_1 2.2uF
Rcr Vm OUT 1000K
R2p Vp NetC4_1 33K
C2p 0 NetC4_1 2.2uF
R1a INP N1p 4.7K
C1a N1p 0 100nF
R1b N1p Vp 4.7K
R1c INM N1m 4.7K
C1b N1m 0 100nF
R1d N1m Vm 4.7K
XU1 Vp Vm VCC VEE OUT LF411C
VCC VCC 0 15V
VEE 0 VEE 15V
VIN INP INM 0
+AC 1 0 SIN 0 1 1k 0 0 0
.end
Résultat de simulation.
Annexe 1 :
Exemple de modèle pour ua741.
Peu performent, difficile d'utilisation.
*Autogenerated from schematic ua741.sch
*Do not edit anything except lines starting with '+'
*TP1 ? VEE B1,27
*TP2 ? VPLUS B1,27
*TP3 ? VMINUS B1,27
*TP4 ? VOUT B1,27
*TP5 ? VCC B1,27
C1 N21 N20 30P
Q16 N12 NI21 NI22 BC107
QI1 N1 VPLUS N4 BC107
QI2 N1 VMINUS N6 BC107
QI3 N2 N17 N4 BC177
QI4 N20 N17 N6 BC177
QI5 N2 NI12 NI13 BC107
QI6 N20 NI12 NI14 BC107
QI7 VCC N2 NI12 BC107
QI8 N1 N1 VCC BC177
QI9 N17 N1 VCC BC177
QI10 N17 NI16 NI15 BC107
QI11 NI16 NI16 VEE BC107
QI12 NI17 NI17 VCC BC177
QI13 N21 NI17 VCC BC177
QI14 N21 N16 N12 BC107
QI15 N12 N20 NI21 BC107
QI17 N20 N27 VEE BC107
QI18 N21 N26 VOUT BC107
QI19 N27 N24 VOUT BC177
QI20 N27 N27 VEE BC107
QI21 VCC N21 N26 BC107
QI22 VEE N12 N24 BC177
R1 VEE NI13 1K
R2 VEE NI12 50K
R3 VEE NI14 1K
R4 VEE NI15 5K
R5 VEE NI21 50K
R6 VEE NI22 100
R7 NI16 NI17 39K
R8 N16 N21 4.5K
R9 N12 N16 7.5K
R10 VOUT N26 50
R11 N24 VOUT 25
Annexe 2 :
Exemple de modèle pour LF411C.
*.SUBCKT LF411C 1 2 3 4 5
C1 11 12 3.498E-12
C2 6 7 15E-12
DC 5 53 DX
DE 54 5 DX
DLP 90 91 DX
DLN 92 90 DX
DP 4 3 DX
BGND 99 0 V=V(3)*.5 + V(4)*.5
BB 7 99 I=I(VB)*28.29E6 - I(VC)*30E6 + I(VE)*30E6 + I(VLP)*30E6 - I(VLN)*30E6
GA 6 0 11 12 282.8E-6
GCM 0 6 10 99 1.59E-9
ISS 3 10 DC 195E-6
HLIM 90 0 VLIM 1K
J1 11 2 10 JX
J2 12 1 10 JX
R2 6 9 100E3
RD1 4 11 3.536E3
RD2 4 12 3.536E3
RO1 8 5 50
RO2 7 99 25
RP 3 4 15E3
RSS 10 99 1.026E6
VB 9 0 DC 0
VC 3 53 DC 2.2
VE 54 4 DC 2.2
VLIM 7 8 DC 0
VLP 91 0 DC 30
VLN 0 92 DC 30
.MODEL DX D(IS=800E-18)
.MODEL JX PJF(IS=12.5E-12 BETA=250.1E-6 VTO=-1)
*.ENDS LF411C