Introduzione ai Simulatori Spice
I
simulatori Spice sono programmi per computer che simulano il
funzionamento di circuiti analogici, permettendo di verificare il
funzionamento dei circuiti progettati e predirne il comportamento.
Gli
strumenti di simulazione non sostituiscono la conoscenza dei fenomeni
durante la progettazione, sono un ausilio che può dare utili
indicazioni e fare risparmiare un sacco di tempo e di prove sui
circuiti.
I
risultati della simulazione non sono la verità assoluta (che per
fortuna non esiste o, se anche esiste, è al di fuori della
nostra comprensione) e l’attendibilità dei risultati deve
essere valutata con un minimo di cognizione di causa: ripeto
“deve essere valutata”, perché dipende dalle
condizioni in cui viene eseguita e dalla bontà del modello che
si usa.
A queste condizioni la simulazione vi dice cosa potete aspettarvi, dove
ha senso mettere le mani e quali strade è meglio evitare; il
tutto in pochi minuti al computer anziché ore in laboratorio.
Il
simulatore è uno strumento
Come tale ha dei limiti, o meglio delle caratteristiche funzionali che
bisogna capire, come pure bisogna conoscere i fondamenti fisici e
tecnici degli oggetti che si stanno simulando, altrimenti i risultati
che ci dà vengono interpretati in modo errato (attenzione: non
è errato il risultato, è errata l’interpretazione a
causa della non conoscenza dello strumento o delle leggi fisiche).

Mi spiego con un esempio semplice: nel circuito di fig 1 sappiamo a
priori che la tensione fra il nodo 3 e il nodo 2 è esattamente
50 volts, ma se fra il nodo 2 ed il nodo 3 applichiamo un voltmetro,
supponiamo un tester analogico da 20 kohm/Volt sulla scala 50 Volt, non
leggeremo 50 volts bensì circa 33 volts.
Significa che il voltmetro non funziona o che la legge di Ohm non vale?
Certamente no, significa solo che la resistenza propria del voltmetro
su quella scala, pari a 1 Meg, in parallelo con R2 ( 1 Meg ) dà
come risultato 500 kOhm, quindi la tensione sul nodo 3, con il
voltmetro collegato, è esattamente 33,333…. Volts.
Per leggere 50 volts dovremmo avere un voltmetro con resistenza interna
infinita.
Ma un voltmetro del genere non esiste, rinunciamo quindi ad usare il
voltmetro, perché non ci dà misure esatte? No certamente,
piuttosto impariamo la legge di Ohm e impariamo ad usare il voltmetro
cercando di capire come funziona, così saremo in grado di fare
misure più esatte e di interpretarne correttamente i risultati.
È importante capire i fondamenti dell’elettrodinamica (la
legge di Ohm, tensione e corrente e poche altri concetti, non cose
molto complicate) per costruire oggetti a valvole o semiconduttori,
altrimenti, al di là di qualsiasi altra considerazione, non si
sa perché funzionano e se non funzionano non si sa perché
e non si capisce dove mettere le mani.
SPICE
e Simulatori Spice.
Esistono vari simulatori che utilizzano un “motore” comune,
il programma Spice: cito solo MicroCap, Orcad, Pspice, Lspice,
disponibili per sistemi diversi (Windows e Unix).
Gli esempi di questo testo sono ricavati con MicroCap, ma le
considerazioni (a parte i dettagli tecnici come i nomi delle librerie
ecc.) valgono per qualsiasi Simulatore basato su Spice, in quanto il
“motore” è comune e il calcolo è basato, come
vedremo, su modelli matematici esterni al simulatore.
Spice è un programma generale di simulazione realizzato
dall’Università di California, Berkeley per
verificare il progetto di circuiti e predirne il funzionamento.
E’ nato per progettare circuiti integrati, dove sviluppare
prototipi e migliorarli per tentativi è impraticabile
tecnicamente e comunque troppo costoso: il circuito integrato deve
funzionare da subito ad un elevato livello (cioè corrispondente
agli obiettivi del progetto) e richiedere pochissime modifiche per
andare in produzione.
Il nome infatti significa:
Simulation Program for Integrated Circuits Emphasis
E’ uno strumento, quindi per Spice vale quanto detto prima, e per
giunta di simulazione, cioè lavora non con gli oggetti reali ma
sulla teoria, cioè su modelli matematici degli oggetti reali.
Il primo modello matematico del triodo, sviluppato quando non esisteva
Spice e nemmeno i computer, è quello di Reynolds e Leach,
ricavato da considerazioni teoriche sulle cariche spaziali che si
sviluppano fra gli elettrodi in funzione delle tensioni applicate.
Nel modello la valvola è trattata come un generatore di corrente
pilotato da una tensione:
ip
= G * ( vg +
vp/μ)^n
dove:
ip
= corrente di placca
vg = tensione di griglia (rispetto
al catodo)
vp = tensione di placca (rispetto
al catodo)
μ = fattore di amplificazione
G è un fattore chiamato
“perveanza” e l’esponente n vale circa 1,5.
Il modello è semplice, ed essendo basato su considerazioni
teoriche funziona abbastanza bene dal punto di vista qualitativo, ma
non dà risultati esatti per valvole reali.
Ciò avviene in quanto le considerazioni teoriche non tengono
conto dei seguenti fattori, troppo complessi per essere espressi
matematicamente:
1. presenza di impurità gassosa nel bulbo
2. la struttura fisica degli elettrodi (il modello vale per elettrodi
piani infiniti)
3. la velocità iniziale degli elettroni
4. il potenziale di contatto
5. ……
Pertanto al modello precedente, semplice e maneggevole ma inadatto a
precise valutazioni quantitative, modello strettamente derivato dalla
teoria fisica, si sono sostituiti modelli più complessi, che
tenessero conto dei fattori di cui sopra.
Detti modelli sono definiti fenomenologici in quanto i fattori
correttivi aggiunti non derivano da una analisi teorica ma sono un
adattamento del modello per tentativi successivi, in base ai risultati
raggiunti.
Il modello è una rappresentazione simbolica di una realtà
complessa, necessariamente semplice per essere utilizzabile in pratica:
è pertanto un compromesso, la cui bontà è valutata
in funzione della approssimazione tollerata.
C’è una semplice considerazione che suggerisce di non
cercare la luna nei modelli, ed è che la tolleranza di
costruzione dei dispositivi dà origine ad una dispersione delle
caratteristiche tecniche che può arrivare al 20% (venti per
cento): a questo punto pensare ad un modello perfetto evidentemente non
ha senso.
Si
possono agevolmente trovare più simili fra loro due esemplari di
produttori diversi della stessa valvola che non due esemplari della
stessa valvola dello stesso produttore dello stesso lotto (con buona
pace di chi cerca di ottimizzare un circuito cambiando le valvole:
tanto vale sceglierle a caso).
Brevi
cenni sul funzionamento di Spice
Senza entrare nei dettagli della teoria di Spice, credo sia
interessante avere almeno una conoscenza qualitativa del suo
funzionamento.
Spice è un programma che elabora la descrizione di un circuito e
la descrizione del segnale applicato per produrre il risultato
richiesto (cioè la forma d’onda in uscita, la distorsione,
le curve ecc.).
Spice contiene le funzioni primitive per trattare componenti come:
- generatori
di tensione e di corrente indipendenti (cioè fissi) e dipendenti
(cioè pilotati, in cui la corrente o la tensione dipende a sua
volta da una tensione o da una corrente)
- resistenze
- condensatori
- induttanze
- induttanze mutue
- amplificatori operazionali
- transistor bipolari
- JFet
- MOS
- MosFet
Ed alcune altre; non contiene, dato lo scopo per cui fu creato, le
primitive per trattare le valvole ed anche i trasformatori, almeno
quelli che interessano a noi.
Allora, cosa ce ne facciamo? Ci
torneremo dopo alcuni cenni a come si descrivono gli oggetti di base.
Torniamo al circuito di fig. 1: il circuito contiene tre componenti,
che si uniscono in punti detti nodi.
La descrizione del circuito è costituita dall’elenco dei
componenti, indicandone il tipo, il valore e i nodi che unisce:
R1 1 3 1Meg
R2 3 2 1Meg
V1 1 2 DC 100
La prima istruzione dice che fra i nodi 1 e 3 c’è una
resistenza (Rnome = R1) di valore 1 Megaohm ( che si potrebbe anche e
indifferentemente scrivere come: 1000000, 1e6, 1000k).
La seconda istruzione dice che fra i nodi 3 e 2 c’è una resistenza
(Rnome = R2) di valore 1 Megaohm .
La terza istruzione dice che fra i nodi 1 e 2 c’è un
generatore indipendente (Vnome = V1) di tensione continua (DC) di
valore 100 V.
Per un circuito generico si deve fornire a Spice una lista coì composta:
TITOLO
Lista dei componenti, come dall’esempio sopra
..
..
SPECIFICHE DI CONTROLLO (cioè che tipo di analisi vogliamo fare)
..
SPECIFICHE DI USCITA (cioè che cosa vogliamo ottenere)
..
FINE
Ovviamente le specifiche di uscita e quelle di controllo devono essere
coerenti: non posso chiedere come uscita la distorsione se ho chiesto
una analisi in corrente continua.
Concettualmente è molto semplice, ma per un circuito reale i
nodi ed i componenti sono tanti, e generalmente in ogni nodo
confluiscono più componenti, per cui alla fine il numero delle
specifiche cresce enormemente e diventa facile commettere errori.
Qui
ci vengono in aiuto le interfacce grafiche come quella di MicroCap: si
disegna il circuito e ci pensa l’interfaccia a tradurla nella
lista delle specifiche, e siamo sicuri che le specifiche, per quanto
numerose siano, corrispondono esattamente al circuito disegnato, non
una di più né una di meno.
Ovviamente
ciò non ci dispensa dal conoscere il funzionamento dei
componenti, è nostra responsabilità sapere dove mettere
una resistenza o un condensatore.

Ad esempio, in MicroCap il
circuito di fig 2 produce, cliccando su File/Translate/Schematic to
SPICE Text File la lista che segue:
D:\Temp\Data and
theory\MicroCap\DATA\GroundCat\Tx6SN7.cir AC Analysis
* Converted From Micro Cap Source file to PSPICE
*
C1 3 out .1U
R1 1 0 1MEG
R2 1 2 330
R3 3 4 22K
R4 0 5 390
R5 0 out 1MEG
V1 4 0 300
V2 INTERIOR_NONE1 0 AC 1 SIN (0 1 1e+006 0 0 0)
RV2 1 INTERIOR_NONE1 0.001 ;added by V2
X1 3 2 5 6SN7GTB
*
.LIB "D:\Temp\Data and theory\MicroCap\library\NOM.LIB"
*
.TEMP 27
.AC LIN 50 10 1E6
.PRINT AC VDB([OUT])
.PLOT AC VDB([OUT]) 0,30
.PRINT AC V([OUT])
.PLOT AC V([OUT]) 0,30
.PROBE
.END
Il nodo 0 è per definizione la massa, il nodo detto
“out”, come si vede in fig. 2 coincide con il 6, anche i
nodi possono avere un nome.
E’ chiaro che scrivere a mano queste specifiche richiede sia una
approfondita conoscenza della sintassi di Spice sia una estrema
attenzione nella codifica; se scrivere le specifiche per questo
circuito è ancora ragionevolmente possibile, per un circuito
reale diventa una fatica improba, soprattutto per l’attenzione
richiesta per non dimenticare nessuna specifica, e per la
facilità di confondere i nomi dei nodi, quindi ben vengano le
interfacce grafiche.
Qui vediamo finalmente come Spice permette di trattare le valvole: le
specifiche
X1 3 2 5 6SN7GTB
*
.LIB "D:\Temp\Data and theory\MicroCap\library\NOM.LIB"
*
ci dicono che il “SUBCIRCUIT” X1, che connette
i nodi 3 2 5, è descritto sotto il nome 6SN7GTB in una delle
librerie citate in NOM.LIB.
Quando Spice elabora la lista di specifiche, seguendo i riferimenti
sviluppa il “subcircuit” nelle specifiche dettagliate che
lo compongono.
Il “subcircuit” (SUBCKT, per Spice) è un
sottomodello, che noi possiamo archiviare in una libreria associandolo
ad un tipo di componente (ricordate quanto ho detto la volta scorsa
relativamente all’aggiunta di modelli), ed è descritto con
lo stesso tipo di specifiche che si usano per descrivere qualsiasi tipo
di circuito.
In altre parole, ed è qui che si rivela tutta la potenza di
Spice, possiamo creare tramite i Subckt le pseudo primitive per
trattare qualsiasi oggetto, ed archiviarle per usarle quando servono (a
sua volta un subckt può contenere al suo interno altri subckt,
semplificando la gestione di “famiglie” di oggetti).
L’esempio che segue ci permette sia di chiarire in pratica il
concetto di subckt, sia di sviluppare alcune considerazioni sulla
validità dei modelli.
Prima di procedere dobbiamo però verificare i risultati delle
simulazioni confrontandoli con qualche cosa che sappiamo affidabile.
Come fare per verificare ciò (in altre parole, un criterio per valutare
la validità della simulazione):
come è noto il comportamento statico delle valvole è
descritto sostanzialmente dalle curve caratteristiche della corrente di
placca in funzione della tensione di griglia, bisogna quindi verificare
quali curve produce MicroCap con i modelli inseriti e paragonarle con
le curve fornite dai costruttori (anche queste si trovano su internet,
ad esempio www.duncanamps.com oppure
www.mif.pg.gda.pl/homepages/frank/ per citare i più
noti; il nucleo dei modelli forniti in tube.lib proviene da duncanamps).
Costruitevi questi circuiti:

Li utilizziamo per tracciare le curve caratteristiche delle valvole,
sostituendo di volta in volta a X1 la valvola che ci interessa.
V1 e Vcc sono voltage sources dal menu Component/Analog
Primitives/Voltage sources, l’analisi è Analysysis/DC
I valori debbono ovviamente essere adattati alla valvola sotto test.
Una
valvola speciale, il doppio triodo 12BH7
La 12BH7 è uno dei tanti tubi che, nati specificamente per
l’uso Tv (amplificatore di deflessione verticale), ha
caratteristiche ottime per l’uso audio.
Le curve caratteristiche sono rappresentate in fig 3.

Il primo modello che trovai in rete, per inserirlo in MicroCap, era il
seguente:
**********************************************************************
* 12BH7A Triode PSpice
Model
9/96, Rev. 1.0 (fp)
*
* -------------------------------------------------------------------
* This model is provided "as is", with no warranty of any kind,
* either expressed or implied, about the suitability or fitness
* of this model for any particular purpose. Use of this
model
* shall be entirely at the user's own risk.
*
* For a discussion about vacuum tube modeling please refer to:
* W. Marshall Leach, jr: "SPICE Models for Vacuum-Tube
Amplifiers";
* J. Audio Eng. Soc., Vol 43, No 3, March 1995.
* -------------------------------------------------------------------
*
* This model is valid for the following tubes:
* 12BH7 ;
* at the following conditions:
* Plate voltage : 0..600V
* Grid voltage : 0..-35V
* Cathode current: 0..50mA
*
*
* Connections: Plate
*
| Grid
*
| | Cathode
*
|
| |
.SUBCKT 12BH7 P G K
E1 2 0 VALUE={V(P,K)+16.64*V(G,K)}
R1 2 0 1.0K
Gp P K
VALUE={29.3E-6*(PWR(V(2),1.33)+PWRS(V(2),1.5))/2}
Cgk G K 3.2P
Cgp G P 2.6P
Cpk P K 0.5P
.ENDS 12BH7
la specifica
.SUBCKT 12BH7 P G K
ci dice che questo è il modello del dispositivo di nome 12BH7 che ha
come nodi P, G, K.
La specifica
Gp P K
VALUE={29.3E-6*(PWR(V(2),1.33)+PWRS(V(2),1.5))/2}
ci dice che la valvola è trattata come un generatore di corrente
(la corrente fra i nodi P e K) pilotato in tensione (Gp), la tensione
di controllo ( V(2) ) è definita in
E1 2 0
VALUE={V(P,K)+16.64*V(G,K)}
ed la legge risultante è molto semplice, corrisponde al modello base di
Reynolds e Leach.
Le curve generate sono quelle di Fig 4.

Successivamente in rete ho trovato un modello diverso:
* model triode 12BH7 *
* heater not included
* parameters based on values from actual tube sn001, measured 25 June
2005
* Connections: Plate
*
|
Grid
*
|
| Cathode
*
|
| |
.SUBCKT 12BH7 A G K
+ PARAMS: EX=1.48223054785181 MU=22.522567847687 KG1=995.714361188371
+ KP=77.5229158440023 KVB=104.666637159648
+ Go=-0.836752888547946 KG=2.24862182207334E-07 AG=6505.28230714881
+ BG=638.003346507087
+ CCG=3.2P CGP=2.6P CCP=4.5P
E1 4 0
VALUE={V(A,K)/KP*LN(1+EXP(KP*(1/MU+(V(G,K)-Go)/SQRT(KVB+V(A,K)*V(A,K)))))}
G1 A K VALUE={ (PWR(V(4),EX)+PWRS(V(4), EX))/(KG1) }
RCP A K 1G
G2 G K VALUE
={IF(V(G,K)>0,{Kg}*((({Ag}+V(A,K))/({Bg}+V(A,K)))**4)*V(G,K)**1.5,0)}
C1 G K {CCG} ; CATHODE GRID
C2 G A {CGP} ; GRID-PLATE
C3 A K {CCP} ; CATHODE-PLATE
.ENDS 12BH7
La specifica E1 riporta una serie di fattori correttivi, che tengono
conto del potenziale di contatto, della velocità iniziale degli
elettroni e della costituzione fisica della valvola (compare mu, che
dipende direttamente dalle distanze reciproche fra catodo, griglia e
placca).
Il modello è decisamente complesso ma funziona e le curve risultanti
sono in fig. 5, finalmente adeguate.

Altri esempi
Valvola 845:

un rapido confronto con le curve fornite da RCA ci dice che le aree A e
B non sono simulate correttamente, ma d'altra parte le nostre rette di
carico sicuramente staranno nella area C, che invece va bene.
Valvola 6550

Ci piglia abbastanza, dopo alcune piccole modifiche per tentativi ai
parametri Pspice, tranne comunque nella zona del
“ginocchio”, soprattutto a basse correnti.
Questo è comunque il punto debole, in verità noto e dichiarato, dei
modelli Pspice esistenti.
KT88:

Dire “rozza” è poco, bisognerebbe lavorare un bel
po’ sui parametri Pspice, probabilmente conviene usare il modello
6550, anche se le due valvole non sono equivalenti al 100%.
Generalmente, come dice per altro la teoria, i modelli sono carenti a
tensioni e correnti basse e tensioni alte e correnti basse; ho comunque
verificato molti altri tipi e devo dire che i modelli sono in genere
abbastanza buoni; ripeto: “in genere” e
“abbastanza”.
Conclusioni
sui modelli.
Torno su quanto detto all’inizio, Spice è uno strumento,
ed è basato su modelli, la simulazione risultante non può
essere migliore dei modelli usati.
Non
è difficile verificare i modelli prima di usarli,
dopodiché Spice vi permette di sapere a priori come si
comporterà un circuito complesso e di ottimizzarlo, prima di
costruirlo.
Tenete conto inoltre che nessun modello sarà mai perfetto, e che le
approssimazioni sono inevitabili.
D’altra parte, cosa sono le curve caratteristiche e le specifiche
tecniche che usiamo per progettare i circuiti, se non modelli, grafici
anziché matematici, ma comunque modelli?
In testa alla fig. 3 sta scritto in chiaro “AVERAGE PLATE
CHARACTERISTIC” e nelle specifiche di altre valvole (vedi le
specifiche General Electric, per fare solo un esempio, della 6550) si
parla chiaramente di “bogey tube”, cioè la valvola
“standard”, nella quale ciascuna delle caratteristiche ha
il valore di progetto: in altre parole le specifiche tecniche ci
parlano una valvola che non esiste (rivedi nota (3)), ciononostante noi
ci guardiamo bene dal buttare nel cestino le specifiche (almeno
spero!!!) ma le usiamo correntemente per progettare i punti di lavoro e
definite le prestazioni attese del circuito.
Quando si parla di modelli (tutti i
modelli) si possono fare due considerazioni.
La prima: tutti i modelli sono
perfetti, almeno nel senso che sono comunque più lineari della realtà.
La
seconda: tutti i modelli sono sbagliati, esattamente per lo stesso
motivo: i condensatori di Spice non si comportano come elettrolitici e
per Spice una resistenza è una resistenza, mentre nella
realtà una resistenza a strato di carbone si comporta
diversamente da una a strato metallico, per lo meno per quanto riguarda
il rumore, e comunque le resistenze reali, se sottoposte a tensioni
molto elevate cambiano valore (poco, per fortuna).
E
poi, se nello stesso circuito usate due valvole, per Spice sono uguali,
nella realtà no: pensate cosa ciò significa nel caso di
un push-pull.
Però
ottimizzare l’eliminazione armonica con Spice è un gioco
da ragazzi, provate a farlo con il calcolo manuale o con una
elaborazione grafica sulle curve caratteristiche!
Quindi usate Spice, risparmierete tempo (molto) e soldi (comprate solo
quello che vi serve realmente, senza ottimizzare il circuito per
tentativi cambiando componenti), solo ricordatevi che è come il
voltmetro, con cui ho introdotto il discorso: i risultati debbono
essere interpretati.
Per concludere, dato che si debbono accettare le approssimazioni, tanto
vale approfittarne.
Cioè,
non inserite nella simulazione tutti i dettagli inutili e poco
influenti sul risultato, ad esempio se usate la polarizzazione fissa
sostituite la rete di resistenze e condensatori di cui è
composta con una unica sorgente di tensione del valore giusto, non
mettete condensatori di filtro sull’alimentazione, le sorgenti di
tensione di Spice sono perfette, se dovete usare più componenti
in parallelo mettetene uno solo del valore giusto (direi, anche a costo
di crearvi un modello di valvola specifico con Rp e Gm ecc calcolati di
conseguenza).
In
questo modo guadagnate nodi e componenti disponibili per la parte
significativa del circuito e non disperdete l’attenzione su
elementi che hanno importanza solo costruttiva.
Mettere
il massimo dettaglio in una simulazione è utile e maneggevole
come una mappa della vostra città in scala 1:1 … (questa
splendida metafora viene da John Broskie, il mitico regista di
www.tubecad.com un sito che è caldamente consigliabile visitare).
|