Switchercad III è una realizzazione della linear technology (ora Analog Devices) che unisce alla potenza di s.p.i.c.e. la presenza di un efficace editor grafico per il progetto e la simulazione dei circuiti.
I programmi di simulazione circuitale rispondono alla sempre più evidente necessità dei progettisti hardware di avere a disposizione strumenti per il disegno e il successivo testing dei circuiti, in particolar modo quelli integrati. Dalla prima release di S.P.I.C.E., risalente circa alla metà degli anni Settanta, si è avuta una continua evoluzione dei simulatori, vista la sempre maggiore necessità di prototipare i circuiti. SwitcherCad III si colloca all’interno della “famiglia” S.P.I.C.E. ed è una proposta della Linear Technology Corporation, volta alla simulazione dei regolatori switching della stessa casa produttrice. Molte delle sue caratteristiche sono comuni ad altri simulatori della stessa famiglia, (Microcap, Pspice, Eldo …) che già hanno trovato ampia diffusione industriale SwitcherCad III contiene definizioni e i modelli di moltissimi componenti attivi e passivi (BJTs, FET, OpAmp, regolatori…), ma consente anche: la creazione di nuovi modelli, la gestione di librerie personalizzate e molti tipi di analisi circuitali (funzione di trasferimento, analisi dei transitori, risposta in frequenza, studio dei modelli linearizzati attorno al punto di lavoro). Il disegno circuitale è reso agevole dall’editor, le cui funzioni principali sono intuitive e non richiedono troppo tempo per essere assimilate. Nell’articolo vedremo la realizzazione di un semplice circuito e qualche esempio di analisi applicabile.
Realizzazione dello schematico
Per creare un nuovo foglio di lavoro selezionare New Schematic che permetterà di creare un nuovo schematico in un foglio di lavoro vuoto (figura 1).
E’ consigliabile salvare subito lo schematico appena creato nella cartella dove si vuole inserire il progetto (nella stessa cartella si dovranno salvare gli eventuali altri files collegati a questo e creati successivamente). In seguito, per salvare le modifiche che si apporteranno allo schematico basterà semplicemente utilizzare il comando Save che farà riferiemto al documento precedentemente salvato con il comando Save As.
Scelta ed editing dei componenti e dei nodi
Per inserire i componenti sul foglio di lavoro creato si potrà utilizzare la libreria di Switcher Cad o una creata appositamente (vedremo in seguito come fare per crearne una). Si aprirà una finestra tipo quella mostrata in figura 2.
E’ possibile continuare a posizionare componenti dello stesso tipo fino a che non si preme il tasto ESC. Una volta posizionato il componente sullo schematico, ad esso vengono assegnati di default nome e parametri, che potranno essere cambiati; per modificare il nome infatti basta posizionare il cursore sul nome stesso (D1 in questo caso) e premere il tasto destro del mouse. Per modificare i parametri, invece, il cursore va posizionato sul componente e premendo il tasto destro del mouse apparirà una finestra come quella di figura 3.
Nel caso del diodo, per esempio, si può selezionare la tensione di breakdown, la corrente inversa di saturazione, la casa costruttrice e molti altri parametri caratteristici del componente in analisi; si pensi che per altri componenti come i MOS, si possono addirittura impostare le caratteristiche geometriche (superfici trasversali delle giunzioni, larghezza del canale drain-source…). Dopo aver posizionato tutti i componenti andranno aggiunti i fili di interconnessione per connettere i vari componenti che abbiamo scelto per il nostro circuito. Per posizionare le interconnessioni si deve cliccare col tasto sinistro del mouse sul terminale del componente da cui si vuole far partire il filo (wire), questo potrà essere tracciato a nostro piacere, per esempio se si deve eseguire una curva a 90 gradi si preme nuovamente il tasto sinistro, mentre per chiudere un tratto di filo o si giunge a un altro terminale oppure può essere interrotto in un punto qualsiasi del nostro schematico semplicemente con una pressione del tasto destro del mouse. Ad ogni filo o nodo può essere inoltre assegnato un nome identificativo (Label Net) che potrà permetterci di individuare facilmente le forme d’onda generate dalla simulazione, dal momento che queste saranno denominate come il nodo stesso. Come si può notare in figura 4 oltre a impostare un nome arbitrario si possono posizionare i riferimenti di massa selezionando la casella GND e facendo quindi in modo che le misure di tensione siano poi riferite a questi punti (tale riferimento può comunque essere richiamato tramite il menù a discesa di Edit o tramite l’apposito pulsante della barra degli strumenti).
Tramite il controllo Port Type (figura 3) si possono assegnare i nodi di ingresso e di uscita, ovvero i punti in cui verrà alimentato il circuito e quelli in cui si preleverà il segnale che ci interessa. Gli ingressi saranno di tipo Input, le uscite di tipo Output e i generatori (di cui si parlerà più avanti) sono bidirezionali (Bi-Direct). I nodi interni, che non avranno altri collegamenti, possono non avere alcun nome (None). I terminali di ingresso e uscita saranno caratterizzati sullo schematico con una freccia entrante o uscente, per quelli definiti None comparirà solo il nome (se assegnato). Va notato il fatto che il collegamento tra due terminali si può realizzare in due modi: disegnando tutto il wire (connessione per wire), oppure, per non complicare troppo il disegno, assegnando lo stesso nome ai due terminali (connessione per nome). Come si può vedere in figura 5, a questo punto sullo schematico sono presenti tutti gli elementi attivi e passivi (con tipo,valore e nome) e i nodi con le rispettive connessioni (con nomi e i tipi che ci interessano).
Scelta ed editing dei generatori
Per simulare il funzionamento del circuito bisogna ora inserire dei generatori. Se nello schematico sono presenti elementi attivi (transistors, mosfets, OpAmps) ci vorranno uno o più generatori che forniscano l’alimentazione in continua a tali elementi; oltre a questi sarà necessario un generatore che fornisca lo stimolo in ingresso al circuito (da applicare al nodo di Input). In base al tipo di analisi che si vorrà effettuare, utilizzeremo uno stimolo in continua, per stimare i parametri statici del circuito (caratteristica Vin-Vout), o uno variabile nel tempo per valutare i parametri dinamici (funzione di trasferimento, analisi del transitorio). L’inserimento dei generatori avviene in modo analogo a quanto fatto per i componenti i generatori si possono prelevare dalla libreria di SwitcherCad o da una personalizzata. All’interno della libreria del programma i generatori di tensione sono chiamati voltage. Una volta posizionati sullo schematico vanno collegati alla massa da un lato e all’opportuno terminale (di alimentazione o di input) dall’altro. E’ opportuno rinominare i generatori con nomi più significativi (per esempio VDD per le alimentazioni e VIN per gli stimoli) ed effettuare le connessioni ai rispettivi terminali per nome (come spiegato prima), anzichè tracciare tutto il filo (per esempio chiamando i terminali dei generatori con lo stesso nome dei terminali del circuito cui vanno collegati). Ogni generatore è in continua di default, per impostarne il valore si deve premere il tasto destro del mouse quando il cursore è sopra il componente, apparirà la finestra mostrata nella parte a destra della figura 6, dove compare il campo in cui inserire il voltaggio desiderato.
Per cambiare il tipo di generatore bisogna cliccare il tasto Advanced, in tal modo si ottiene la finestra a sinistra della stessa figura 6. Essa permette di selezionare vari tipi di generatori, tra cui quello di onde quadre (come nell’esempio riportato) e i parametri che compaiono nella finestra definiscono il duty-cycle e il periodo dell’onda. Con l’aggiunta dei generatori lo schematico completo risulta come in figura 7 (il generatore è stato connesso per nome).
Il menù Edit fornisce la possibilità di cambiare lo schematico, con comandi di copia/incolla (Edit->Duplicate), di cancellazione (Edit->Delete) e di spostamento. In particolare esistono due tipi diversi di spostamento, il move e il drag. Il comando move sposta un componente eliminando tutti i suoi collegamenti, mentre il comando drag li lascia intatti. Quando si utilizza il comando Duplicate per generare una copia di tutto o parte dello schematico bisogna ricordare che i nomi dei componenti duplicati saranno aggiornati automaticamente, mentre i nomi dei nodi o dei terminali, andranno cambiati manualmente. Il foglio di lavoro e il circuito in esso presente possono poi ancora essere modificati nelle loro componenti cromatiche (sfondo, colore dei componenti o delle connessioni) scegliendo dal menù Tool la voce Color Preferences.
Simulazione:
analisi in continua, in transitorio e parametrica.
Una volta completato il circuito ed assegnati gli stimoli si può passare alla simulazione. Nel menù a tendina Simulation selezioniamo Edit Simlulation cmd in modo da far aprire la finestra mostrata in figura 8 che ci permette di impostare uno tra i vari tipi possibili di analisi (continua, transitorio, sinusoidale…). Nell’esempio mostrato è stata scelta un’analisi in continua (Dc-sweep) per stimare la caratteristica di trasferimento del circuito, ovvero il calcolo di tensioni o correnti ai vari nodi dello schema quando lo stimolo (assunto in continua) assume un certo intervallo di valori (0-5 volts nell’esempio). Nella riga in basso viene automaticamente generata la netlist Spice creata in corrispondenza del tipo di analisi scelta e dei valori impostati. Nel caso in cui il circuito fosse dotato di più generatori, sarebbe possibile farne variare più di uno (fino a un massimo di 3); per esempio, nel caso di due generatori si potrebbe far variare la tensione di uno di essi fra i suoi estremi mantenendo fisso l’altro, e vedere poi come variano le risposte ottenute modificando anche il secondo valore (modo per generare le caratteristiche corre nte/tensione dei MOS). Scegliendo OK si lancia la simulazione, e verrà visualizzato il grafico su cui però non è ancora visibile nulla in quanto non si è ancora scelto quali forme d’onda plottare. Con il comando Visibile Traces appare la finestra per la scelta delle forme d’onda da visualizzare (tale finestra si può anche aprire col comando View -> Visibile Traces se è attiva la finestra dello schematico e non quella del plot); da qui è possibile scegliere la forma d’onda desiderata e anche plottarne più di una, tenendo premuto Ctrl e cliccando sui nodi che ci interessano. Si possono anche costruire espressioni algebriche con i valori delle forme d’onda (Alt + doppio click sul nodo che ci interessa). Per vedere l’elenco completo delle espressioni algebriche si consulti il manuale del software: Help->Help Topics->Waveform Viewer ->Waveform Arithmetic. Una volta ottenuto il grafico si possono aggiungere nuove forme d’onda con la stessa modalità delle precedenti o cambiare i colori di visualizzazione delle tracce (col tasto destro sul nome della traccia). E’ inoltre possibile trovare sul grafico i punti di analisi col comando:
Plot settings -> Mark data points: essi sono i punti della traccia in cui Switchercad ha effettivamente calcolato iterativamente la soluzione (gli altri sono ricavati per interpolazione). Tra le varie opzioni del menù Plot settings, c’è anche quella di posizionare dei cursori (fino a un massimo di due) sulle tracce che ci interessano, in modo da calcolare per esempio intervalli o costanti di tempo (rise-falling time). Dopo l’analisi in continua (Dc sweep) scegliamo un tipo di analisi in transitorio (attraverso Transient nella scheda o trans nella netlist) con cui si può valutare l’evoluzione nel tempo dei segnali al variare dei segnali d’ingresso e quindi stimare i parametri dinamici del circuito. Rendendo attiva la finestra dello schematico e cliccando col destro sulla net-list precedentemente visualizzata apparirà nuovamente l’immagine di figura 8; se ora selezioniamo la scheda Transient si vedranno i campi relativi a questo tipo di analisi.
È obbligatorio compilare la riga Stop Time con cui si sceglie l’intervallo temporale in cui lo stimolo viene attivato, mentre gli altri campi sono opzionali: con il Maximum Timestep si può variare il tempo di campionamento dei segnali, tenendo conto che di default l’algoritmo di risoluzione di questo simulatore utilizza una logica adattativa per cui in presenza di segnali lentamente variabili gli intervalli di campionamento si allungano, mentre in caso contrario il tempo di integrazione si accorcia. In figura 9 è mostrato il risultato di un’analisi in transitorio del circuito, con una finestra temporale di 2 ms; in essa compaiono le tracce relative a Vin e a Vout (si possono aggiungere più plot per confrontare le varie forme d’onda, modificare gli intervalli sugli assi, zoomare su certe aree, scalare in modo automatico l’asse verticale per vedere i risultati più significativi).
Si riconoscerà l’uscita tipica di una pompa di carica, composta dalla cascata di un clamping e di un rivelatore a inviluppo (vedi lo schematico). Il simulatore permette anche di effettuare analisi parametriche per valutare come cambia il comportamento del circuito al variare di alcuni parametri. Per esempio nel nostro caso si può rendere parametrico il valore della resistenza R1. Per fare questo si usa il tasto destro del mouse sul simbolo del componente che si vuole parametrizzare e invece di inserire un numero esatto all’interno del campo relativo al valore del componente, si indica il nome di una variabile racchiusa tra parentesi graffe (per esempio {R}) (dichiarazione del parametro). Una volta definito un parametro nel circuito, questo si imposta con una direttiva Spice Se nella finestra che si apre si inserisce la direttiva .param R=50k tale valore risulterà attribuito a tutte le resistenze del circuito dichiarate parametriche col nome {R}. Inserendo invece una direttiva del tipo step param R 0k 500k 100k si esegue una simulazione parametrica in cui si varia il valore del parametro tra 0 e 500k a passi di 100k e, per ognuno di questi valori viene cioè eseguita un’analisi in continua o in transitorio come si è visto prima (figura 9). SwitcherCad III permette l’esecuzione di gran parte delle direttive SPICE con la stessa procedura vista, ovvero posizionandole direttamente sullo schematico. Per un approfondimento della sintassi di tali comandi si può consultare il manuale del software ( Help -> Help Topics -> LTspice -> DotCommands). Tra gli elementi che possono essere resiparametrici, oltre al valore dei singoli elementi circuitali, vi sono per esempio le caratteristiche fisiche di molti elementi attivi, come larghezza dei canali dei Mos, aree delle giunzioni, temperatura ecc. E’ inoltre possibile selezionare direttamente dal plot le tensioni o le correnti che vogliamo plottare. Se sono attive sia la finestra dello schematico che quella del plot, posizionando il cursore su un wire comparirà il puntale di un tester, e premendo il tasto sinistro del mouse ci visualizzerà la tensione associata. Muovendo invece il cursore su un elemento attivo o passivo comparirà il simbolo di una pinza amperometrica da cui si può plottare l’andamento della corrente che percorre quello specifico elemento. Dopo aver visualizzato la corrente, se si ritorna col cursore sul simbolo dell’elemento e si preme il tasto Alt della tastiera, apparirà il simbolo di un termometro; cliccando col sinistro verrà disegnato il grafico della potenza istantanea dissipata in quel punto del circuito.
Utilizzo della gerarchia
Il simulatore consente la gestione degli schematici secondo un approccio gerarchico; è cioè possibile scomporre un circuito complesso in moduli o sottocircuiti, riutilizzabili anche in altri schematici. Per fare questo è necessario definire la prima volta un certo sottocircuito in un file che può poi essere istanziato più volte. Il nostro schema, per esempio, benché estremamente semplice può essere suddiviso in due blocchi funzionalmente indipendenti come già accennato in precedenza. Osservando la figura 7 si vede che D1 e C1 costituiscono un clamp, mentre D2 e C2 un rivelatore ad inviluppo. E’ cosi possibile creare due moduli, associare a ciascuno di essi un proprio simbolo e poi istanziare tali simboli in qualsiasi schematico a più alto livello di gerarchia. Vediamo la procedura da seguire: bisogna innanzitutto creare un nuovo schematico con il sottocircuito che vogliamo isolare; per fare questo usiamo il comando Hierarchy -> Create a new Sheet. Disegniamo sul nuovo foglio di lavoro il modulo che ci interessa, dando nomi e valori a componenti e nodi e assegnando dei nodi di ingresso e di uscita. Se nel sottocircuito sono presenti nodi di alimentazione (per esempio un terminale collegato ad un generatore in continua) questi possono essere dichiarati globali, ovvero visibili a qualunque livello della gerarchia; per rendere globale un nodo basta anteporre al nome il prefisso $G_: per esempio se il nodo di alimentazione è Vdd il nodo globale nel sottocircuito sarà $G_Vdd (In tal caso, ovviamente, anche il terminale del generatore dovrà avere lo stesso nome). Se in un altro modulo è presente un nodo col nome $G_Vdd, esso sarà automaticamente cortocircuitato al terminale di alimentazione (non sarebbe così, invece, se il nome fosse semplicemente Vdd perché sarebbe una variabile locale). Una volta creato lo schematico si deve creare il simbolo associato ad esso, così che questo sarà poi utilizzabile come un qualsiasi altro componente in un altro progetto complesso. Col comando Hierarchy -> Create a new Symbol si aprirà un nuovo tipo di editor con alcuni comandi per il disegno, esso permette di disegnare cerchi, linee e altre figure geometriche. Quando si è disegnato il simbolo, bisogna associare a questo i terminali, ovvero le porte di ingresso e di uscita precedentemente definite nel sottocircuito; a tale scopo si usa Edit -> Add Pin Port: la finestra che si apre in questo modo permette di inserire oltre al nome del pin, che dovrà coincidere col no me dei terminali corrispondenti dello schematico, anche il numero d’ordine con cui tale componente comparirà nella Netlist Spice generata dal simbolo. Vanno in questo modo definiti solo i pin di ingresso e di uscita e non quelli globali, poiché questi, come già detto, sono direttamente visibili dall’esterno. Il simbolo va salvato nella stessa cartella in cui si è salvato lo schema del sottocircuito e deve avere gli stessi pin di quest’ultimo (a parte quelli globali). La figura 10 mostra nella sua parte alta come apparirebbe in uno schematico ad alto livello il circuito originale sottostante: ai due sottocircuiti Clamp e Rivelatore picco-picco sono associati i due simboli che compaiono come nuovi componenti, ovvero il rettangolo e l’ellisse. Il nuovo schematico ad alto livello dovrà necessariamente essere salvato nella stessa cartella in cui si sono salvati gli schematici dei due sottocircuiti e dei due nuovi simboli.
Creazione di una libreria personalizzata di componenti
Come si è visto, la gestione della gerarchia comporta l’inconveniente di salvare tutti i moduli e i simboli associati, nonché gli schematici che li utilizzano, nella stessa cartella. E’ però possibile creare una propria libreria di sottocircuiti o componenti un’unica volta per poi utilizzare gli elementi in essa presenti in qualsiasi altro schematico, presente anche in cartelle diverse. A tale scopo si deve creare con un editor di testo, per esempio Notepad, il file vuoto che chiameremo Libreria.lib (l’estensione deve necessariamente essere .lib e non .txt). A questo punto si sceglie quale sottocircuito includere nella nostra libreria, ci si porta nell’editor del simbolo associato e da qui si sceglie la voce Edit -> Attributes -> Edit Attributes. Nella finestra che si aprirà, nel campo Symbol Type scriveremo Cell, il Prefix deve essere X (la lettera che in Spice indica i sottocircuiti), lo Spice Model deve contenere il nome del sottocircuito (che è anche il nome del simbolo associato). Gli altri campi possono contenere la definizione di eventuali parametri, mentre nel campo Description si possono inserire commenti sull’utilizzo del modulo. Il campo Model File deve contenere il nome del file di libreria con il percorso completo racchiuso fra apici singoli: nel nostro caso .\Libreria.lib. A questo punto ci si porta sullo schematico del sottocircuito e da lì si sceglie View -> SPICE Netlist: verrà visualizzata la netlist del circuito, ovvero la sintassi Spice ad esso associata. Bisogna copiare e incollare nel file di libreria precedentemente creato (Libreria.lib) tutte le linee della netlist, eliminando quelle che iniziano con un punto (che servono per la simulazione) o che sono semplici commenti; le linee così copiate vanno racchiuse tra la linea iniziale .subckt -nome definito in Spice Modele quella finale .ends--nome definito in Spice Model-. Lo stesso procedimento va eseguito per tutti i sottocircuiti che vogliamo inserire nella libreria.
Per me il migliore, preciso, affidabile, gratuito programma SPICE di sempre.
Esegue le simulazioni alla grande ed è possibile, facilmente, prevedere componenti aggiuntivi, sia con direttiva .MODEL che con direttiva .SUBCKT
Ho scritto, tempo fa, anche il seguente articolo:
https://it.emcelettronica.com/approfondire-le-conoscenze-di-elettronica-con-le-simulazioni-di-ltspice
Grazie per l’approfondimento Giovanni!