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:

S
imulation Program for Integrated C
ircuits 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).


                              banner

Home Progetti