Sunteți pe pagina 1din 14

Aprendiendo

Primitivas Spice:

Se denominan así a los elementos básicos esenciales en función de los cuales es posible expresar cualquier
tipo de circuito, por complejo que éste sea.
Entre las mencionadas primitivas se agrupan todos los elementos de circuito pasivos, como ser resistores,
capacitores e inductores. Spice emplea una notación de texto para designar a los elementos y como éstos se
interconectan para conformar un circuito cualquiera; dicha descripción textual, se guarda en un archivo
llamado netlist .
Otras primitivas spice, son las fuentes o generadores ( tanto de tensión, como de corriente ) y algunos
elementos semiconductores, como diodos, transistores, fets y mosfets.
Un archivo que contiene las descripciones de las interconexiones entre diversos elementos de circuito y que
también especifica el tipo y valor de estos últimos es pues un archivo de netlist La forma de describir las
diversas conexiones inter elementales, es mediante una enunciación nodal; en todo circuito spice el nodo cero o
0, corresponde al nodo común o de masa y es obligatorio declararlo, ya que sin este nodo referencial de masa,
la simulación es imposible o incierta.
De aquí en adelante es necesario conocer el manejo básico de Ltspice o cualquier otro simulador compatible
con Spice, que cuente con entrada para circuitos esquemáticos, como Qucs. Para el caso de usar Spice Opus,
será preciso ingresar el circuito mediante el uso previo de algún otro programa con capacidad de edición de
esquemas y generación de netlist compatible con Spice como Kicad o Eagle.

Para empezar, vamos a ver un caso muy simple, se trata de un divisor resistivo de tensión,
formado por dos resistores y una fuente de tensión:

Como se ve, el nodo común o de masa se asignó a la red conectada al borne negativo del generador de tensión
de 10v Vcc. Si bien esta representación es muy útil para el entendimiento humano, no lo es para los
simuladores circuitales derivados de Spice, que como anticipamos necesitan de una descripción textual estricta,
algo como esto:

Vcc 1 0 10v
R1 1 Div 820
R2 Div 0 820
.end

Y con esto el programa de simulación, tendrá una forma cabal para procesar el circuito... Como se ve, la letra V
o v, denota a las fuentes de tensión ( en este ejemplo Vcc ), luego de un espacio o separador, se declara que su
borne positivo se conecta al nodo 1 y luego de otro espacio declaramos que su borne negativo se conecta al
nodo 0 o de masa, por último se declara después de un espacio el valor de tensión del generador en particular,
10 v en este caso. Para denotar las resistencias se usa la letra R o r, así por ejemplo con R1 1 Div 820,
significamos al simulador, para que interprete que el resistor R1, tiene su borne superior conectado al nodo 1
( recordemos que a este mismo nodo se conecta el polo positivo de Vcc ), su borne inferior conectado al nodo
Div y su valor es de 820 ohmios. La directiva ".end", le indica al simulador que el circuito ha concluido.
Ltspice traduce automáticamente la información ingresada mediante su editor de circuitos esquemáticos, al
lenguaje de netlist compatible con Spice, sin embargo antepone antes de cada nodo la letra N, esto no es
ninguna incompatibilidad con Spice y sirve para volver mas entendible la netlist, cuendo es ojeada por alguna
persona, un ejemplo de la netlist generada por Ltspice del divisor es este:

Vcc N001 0 10v


R1 N001 Div 820
R2 Div 0 820
.end

Una característica destacable de esta forma de describir un circuito es que el orden en el que se dispongan las
diversas líneas o renglones es irrelevante, así por ejemplo la siguiente netlist es funcionalmente idéntica a las
dos precedentes:

R2 Div 0 820
Vcc 1 0 10v
R1 1 Div 820
.end

La directiva ".end" debe colocarse siempre al final de la descripción de un circuito.

Así como los resistores se declaran en la netlist mediante R o r, los capacitores con C o c y los inductores con L
o l.

A lo largo de este aprendizaje, vamos a ir descubriendo - de acuerdo a nuestras necesidades - diversas


herramientas del lenguaje Spice y el subset de herramientas únicas de Ltspice.

Subcircuitos:

Como su nombre expresa un subcircuito es un fragmento de código Spice muy empleado cuando se necesita
repetir muchas veces una parte de un determinado circuito, esto es algo muy frecuente por ejemplo en partes
de circuitos integrados; además gracias al empleo de subcircuitos es posible modelar componentes que no son
primitivas de Spice, encapsulando dentro del mismo una definición funcionalmente equivalente al componente
modelado, pero en términos de primitivas Spice.
En primer lugar desarrollaremos el subcircuito correspondiente a una llave, switch o interruptor que se cierra y
se abre de acuerdo a parámetros de tiempo de encendido (Ton) y de apagado (Toff). para ello emplearemos la
primitiva Spice correspondiente a un interruptor controlado por tensión o Vswitch y dos fuentes de pulsos de
tensión Von y Voff; el esquema final es este;
Como se ve, la fuente Von es la encargada de activar a partir del tiempo asignado al parámetro de encendido
Ton y mediante un pulso de 1 voltio a los terminales de control del switch S1 y la fuente Voff se encarga de
desactivarlo luego del tiempo Toff, puesto que se halla en oposición a la fuente Ton, anulando su efecto cuando
se activa; para obtener resultados coherentes con este subcircuito es menester que el tiempo de activación sea
anterior o menor al de apagado o sea Ton < Toff; la sentencia Spice que define al modelo de la llave asigna
como tensión de disparo Vt=1 mv; la resistencia de la llave encendida será de 1 miliohmio y su resistencia
cuando esté abierta será de 1 x 10 ^ 7 ohmios o sea 10 Megaohmios. Los terminales numerados 1 y 2 serán los
asignados al símbolo de esta llave accionada temporalmente y que realizaremos con el editor de símbolos de
Ltspice:

Finalmente veamos un ejemplo con su uso:


Ahora veamos otro sencillo ejemplo, desarrollado para expresar un amplificador operacional ideal básico:

* Copyright © Linear Technology Corp. 1998, 1999, 2000. All rights reserved.
.subckt opamp 1 2 3
G1 0 3 2 1 {Aol}
R3 3 0 1.
C3 3 0 {Aol/GBW/6.28318530717959}
.ends opamp

En primer lugar se ve un comentario acerca de los derechos de copia, del autor del subcircuito, en una netlist,
todo lo que vaya en un renglón cuyo primer caracter es el signo de multiplicación o " * ", es considerado un
comentario y no es procesado por el simulador, el mismo efecto de considerar un comentario a todo lo que
sucede a un signo, pero no solo al pricipio de un renglón sino en cualquier parte de éste, se logra con el empleo
del signo de punto y coma o " ; " .

Luego tenemos la directiva ".subckt", empleada para declarar el inicio de un subcircuito, a continuación y luego
de un espacio, se consigna el nombre particular del subcircuito recién declarado ( opamp ), después y siempre
separados por espacios, los nombres de los nodos con los cuales el subcircuito se relaciona con otros circuitos,
en este caso 1 2 3, estos nodos se usan también para relacionar al subcircuito con un símbolo gráfico que lo
represente; ahora viene una primitiva Spice nueva, denotada por la letra G o g y que hace referencia a una
fuente de corriente, controlada por tensión, siendo su corriente de salida gobernada mediante los terminales de
control de tensión, es lógico que se haya empleado la letra G para nombrarla, puesto que es la misma letra que
se usa para significar la inversa de la resistencia o conductancia (G=I/V), las salidas de esta fuente "sintética"
de corriente se conectan a masa o nodo 0 y al nodo 3 y si ojeamos el renglón siguiente, concluimos
que R3 está en paralelo con las salidas de la fuente G1 y que el valor de R3 es 1 ohmio, este resistor es
necesario para modelar la resistencia de salida del opamp, ya que la fuente de corriente ideal gobernada por
tensión tiene resistencia infinita y para convertir en tensión entre sus bornes la corriente suministrada por la
fuente de corriente; volviendo hacia el final de la declaración de G1, se observa el término {Aol}, las llaves
indican al simulador de que se trata de un valor externo o parámetro y que en este caso viene a significar la
amplificación de este subcircuito de amplificador operacional idealizado; para finalizar está C3, conectado
también en paralelo a la salida de la fuente de tensión y cuya inclusión es imprescindible para expresar el polo
que determina el funcionamiento del subcircuito en el dominio de frecuencia, en este caso se ha elegido una
expresión del tipo C=Aol / GBW / 2 * Pi, donde GBW es el producto ganancia vs ancho de banda y por fin la
directiva .ends, para indicar el final del subcircuito opamp...a propósito: es mandatorio finalizar cualquier
subcircuito con .ends, mas poner luego el nombre del mismo es opcional.

¿ Cómo se vería este subcircito dibujado como un diagrama esquemático ? Si bien la traducción de diagramas
esquemáticos a su correpondiente netlist es algo automático e invisible normalmente para un usuario, el proceso
inverso no existe; pero lo podemos hacer nosotros mismos, basándonos en la netlist y nos quedaría algo como
esto:

Note que la expresión {Aol/GBW/6.28318530717959} es el valor dado a la capacidad del condensador C3.

El siguiente paso es simular este modelo y constatar su funcionalidad, para ello vamos a añadir una directiva de
simulación y una fuente de señal, como lo que primero vamos a hacer es visualizar el comportamiento en el
domino frecuencial, precisaremos del tipo de análisis AC y como GBW=10Meg (10 Mhz), el rango de análisis de
frecuencia se fijará entre 1Hz y 100Mhz, que es un marco suficiente para ver el desempeño de este dispositivo
por encima de su frecuencia de transición, el esquema al colocar una fuente que provea la señal a los
terminales de entrada 1 y 2, quedará así :
Escudriñemos un poco en la directiva de simulación: .ac dec 100 1 100meg .ac indica el tipo de análisis o
simulación que se hará, dec le dice que despliegue los resultados en décadas o exponentes de 10, el 100
indica al simulador que tome esa cantidad de puntos por cada década de frecuencias, para construir la
gráfica, 1 es la frecuencia mas baja y 100meg es la mas alta.
Otro detalle a observar es que al conectar la fuente de señal, deliberadamente se ha conectado a masa la
entrada 1, esto es necesario, ya que si no lo hacemos el programa no puede simular el circuito, ya que en tal
caso los nodos 1 y 2 están flotantes, pero si queremos hacer análisis de ganancia diferencial, deberemos
desconectar la masa de la red conectada a 1 y colocar entre ésta y masa un resistor de alto valor, para que no
quede flotando, se estila colocar un resistor de 1G o gigaohmio. Note que al estar 1 y 2 interconectados por una
fuente de tensión ideal, cuya resistencia es nula si cualquiera de ambos deja de estar flotante, el otro también.
Veamos los resultados gráficos de la simulación:

La curva superior es la correspondiente a ganancia vs frecuencia y la inferior grafica la fase vs frecuencia.

Entre otras cosas se puede ver como la ganancia es nula a 10 Mhz y se torna negativa para frecuencias mayores,
puede probar a cambiar el valor del parámetro GBW y también la fórmula paramétrica asignada para determinar la
capacidad de C3 y ver como afectan estos cambios en el desempeño del subcircuito. Lo cierto es que con solo
tres primitivas Spice: una fuente de corriente controlada por tensión, un resistor y un capacitor se ha modelado un
amplificador operacional que es un dispositivo bastante complejo.

Para utilizar este subcircuito en diversos proyectos, deberemos crear un símbolo para el mismo, con el editor de
símbolos de Ltspice y asignarle al mismo tres pines ( 1 y 2 para las entradas y 3 para la salida ) y luego indicar en
el editor de propiedades del símbolo, de que se trata de un subcircuito; esto se hace con la letra X, deberemos
grabar en un archivo de texto opamp.sub esto:

.subckt opamp 1 2 3
G1 0 3 2 1 {Aol}
R3 3 0 1.
C3 3 0 {Aol/GBW/6.28318530717959}
.ends opamp

Y también debemos indicar el nombre y la ubicación del archivo, si lo ponemos en la subcarpeta Sub, del
directorio de instalación de Ltspice, solo debemos dar el nombre:

Como vemos, también ponemos los valores de los parámetros de ganancia y ancho de banda.
Ya teniendo el símbolo, podemos probarlo y usarlo en diversos proyectos:
El resultado gráfico de la simulación, con el ploteo de out1 y out2 es este:

Observe como dentro de los márgenes de utilización, mientras que las curvas de ganancia son prácticamente
iguales y se yuxtaponen, el circuito con out1 invierte 180 grados la fase, ya que se trata de una configuración
inversora, cosa que no sucede en el circuito con out2, que es un amplificador seguidor.

El tipo de subcircuito empleado en este ejemplo, pertenece a los llamados subcircuitos modelados en base al
comportamiento y no necesitan del conocimiento de como y cuales elementos se integran dentro de él para
producir el efecto deseado. Algunas de sus ventajas son la claridad, sencillez y velocidad de simulación, en
contra tienen que no reflejan exactamente el comportamiento de un dispositivo real y que si los criterios
empleados para desarrollar el modelo son insuficientes o incorrectos para una descripción bien acotada del
desenvolvimiento, los resultados obtenidos son erróneos.

En el otro extremo se hallan los subcircuitos de modelos de dispositivos realizados en base al esquema del
dispositivo real a simular, en el caso de circuitos integrados es imprescindible contar con el diagrama de circuito
esquemático y el subcircuito con el modelo equivalente es una copia exacta del esquema publicado por su
fabricante. Esta forma de modelar tiene a su favor el reflejar con precisión el desempeño del componente real a
costa de tiempos de simulación de hasta varios órdenes de magnitud mayores a un subcircuito modelado en
base a su comportamiento.

En el medio están los subcircuitos que contienen modelos híbridos, es decir que en parte reflejan exactamente
al dispositivo real, siguiendo su descripción esquemática y en parte cuentan con porciones sintetizadas, de
acuerdo a su comportamiento.

Ahora bien, como no siempre el fabricante proporciona el diagrama de circuito, o éste no refleja todo el
dispositivo, lo mas común es desarrollar el modelado híbrido o también uno completamente referido a su
comportamiento o modelado de síntesis; otra contra que impide el modelado en base a esquemas es la
cantidad de componentes a incluir en la simulación de circuitos integrados complejos.

El LM386, otro ejemplo:

Vamos ahora a modelar, a partir de sus hojas de datos al bien conocido amplificador de audio de baja potencia
LM386, una vez bajada la datasheet del sitio web de National o de algún otro fabricante de este circuito
integrado vemos:

La única duda acá es el valor de la fuente de corriente ( entre colector y base del transistor de salida superior),
opté con un valor tentativo inicial de 1 mA y luego usé la pista de las hojas de datos acerca de la " Quiescent
current " o corriente de reposo que es tipicamente algo mayor a 5 mA @ 9 Vcc ( pudiendo desviarse hasta el
doble ),, otro detalle son los diodos de polarización en la salidas, en los circuitos integrados es frecuente realizar
un diodo juntando o cortocircuitando las junturas de base y colector, como se muestra en el espejo de corriente
construido con el transistor Q1 conectado como diodo y Q2, esto posibilita que las entradas de este amplificador
sean diferenciales del tipo Norton, sin embargo los dos diodos en serie pueden modelarse como uno solo, con
el consiguiente ahorro de elementos y la mayor velocidad de simulación opté finalmente por dejar este esquema
de circuito en el Ltspice:
Como puede observarse, el circuito es casi un calco del esquema y los datos proporcionados por National, lo
único comentable son los parámetros de los transistores NPN y PNP en la parte inferior...los mismos son
típicos. Vea al final del esquema el agregado del parámetro Vfwd=1.45, al modelo de diodo que reemplaza a los
dibujados en serie en el circuito original. (Vfwd por V forward, o sea la tensión de caída en el diodo cuando es
polarizado en su sentido de conducción o en directo).

Veamos ahora la netlist correspondiente:

.subckt lm386 1 -in_2 +in_3 4 5 V+_6 Cbp_7 8


Q1 N6 N6 4 NP
Q2 N7 N6 4 NP
Q5 4 -in_2 N3 PN
Q4 N7 N4 1 PN
Q6 4 +in_3 N4 PN
Q3 N6 N3 N2 PN
ibias V+_6 N1 2m
R2 +in_3 4 51K
R3 5 1 15K
R4 1 8 1.35K
R5 8 N2 150
R6 Cbp_7 N2 15K
R7 V+_6 Cbp_7 15K
R1 4 -in_2 51K
Q7 N5 N7 4 NP
Q8 N8 N5 5 PN
Q10 5 N8 4 NP
Q9 V+_6 N1 5 NP
Dbias N1 N5 D
.model NP NPN(BF=500 Cje=.5p Cjc=.5p Rb=500)
.model PN LPNP(BF=250 Cje=.3p Cjc=1.5p Rb=250)
.model D D(Vfwd=1.45)
.ends lm386
Note como se declaran los transistores en la netlist : Qn C B E Tipo, el tipo en este caso se denota como NP o
PN, pero puede ser cualquier otro como uno comercial, siempre que los modelos declarados por tipo se añadan
al final del listado.

Otra aclaracion necesaria es el error en la corriente de reposo, que se consiguió solucionar ajustando la
corriente de ibias a 2 mA, con lo que al simular el circuito en reposo y con 9 v de alimentación, se obtiene un
consumo de 5.5 mA, lo cual está dentro del margen declarado por el fabricante.

El paso restante consiste en crear un símbolo para el subcircuito y usarlo cuando lo necesitemos... para evitar
esta labor, adjunto al pie, los archivos necesarios para ensayar al LM386 y usarlo en los diseños que
necesitemos, como así también algunos ejemplos de empleo, un sistema minimalista y otro completo y en
versión estereofónica, también se incluye el modelo de subcircuito esquemático jerárquico de un altavoz, si
quieren verlo, abran el proyecto estereofónico y pulsen con el botón secundario sobre el parlante, en la ventana
emergente que se abrirá pulsen en el botón ver esquema y listo...Se proveen necesariamente el símbolo y la
librería para el potenciómetro. Todo esto se halla en un solo archivo comprimido, al cual deben descomprimir
para correr en Ltspice, si desean pueden copiar los archivos de extensión sub al correspondiente subdirectorio
de Ltspice y otro tanto con los archivos sym. Que les sea de provecho! Nota: los nombres de los archivos para
abrir y correr en Ltspice son: A_LM386_St_Amp.asc y Lm386min.asc; este último es el que he usado, para
comprobar el funcionamiento correcto del subcircuito, como ya verán.

Ahora revisaremos la performance del subcircuito en el que modelamos al LM386, usaremos para ello el
siguiente esquema:

Observe el uso del capacitor Cin de 500 pF, que viene a expresar la capacidad parásita de entrada del circuito,
a la que contribuyen las capacidades interelectródicas del potenciómetro, el cableado y el propio integrado con
su encapsulado y con un modelo que no la ha tenido en cuenta... En primer lugar correremos la simulación para
un análisis de barrido de frecuencias, con los siguientes requisitos:
.AC dec 100 1e2 1e6 Análisis AC, presentación en décadas de valores frecuenciales, con 100 puntos de
muestra por cada una y desde 100 Hz hasta 1 Mhz. Para ello se ha seteado en la configuración de la fuente de
entrada de señal Vin, AC=1.
.MEAS AC amp max mag(V(out))
.MEAS AC BW trig mag(V(out))=amp/sqrt(2) rise=1
+ targ mag(V(out))=amp/sqrt(2) fall=last

Las directivas .MEAS, hacen referencia a medidas (Measure), que deben hacerse luego de corrido el análisis,
puesto que usan los datos de la simulación para llevar a cabo los cálculos. En este caso el AC que sigue a
.MEAS indica que solo debe calcularse después de correr un análisis de barrido de frecuencias o AC, con amp
creamos una variable para registrar la máxima amplitud en la salida del amplificador; la siguiente .MEAS hace
uso de la variable amp para calcular el ancho de banda del amplificador en cuestión y para ello se dispara (trig)
cuando la magnitud instantánea de la tensión en la salida llega a ser igual a amp*0.707, el otro extremo de la
banda pasante se calcula de manera similar, pero cuando va cayendo (fall), observe que el renglón que
comienza con el signo + es solo una continuación del anterior y se emplea en Spice para no generar línea muy
largas, de hecho equivale a:
.MEAS AC BW trig mag(V(out))=amp/sqrt(2) rise=1 targ mag(V(out))=amp/sqrt(2) fall=last

Para ver los resultados de estas mediciones, debemos esperar a que la simulación culmine y estando activa la
ventana del editor de esquemas, pulsar en la barra de menús View y dentro de ella pulsar SPICE Error Log,
adentro de la nueva ventana que se abre veremos - entre otras cosas- esto:

Cada step, se corresponde con un paso del potenciómetro de volumen desde 0% a 100% en incrementos de
20%, como vemos amp está dada en dB, y va aumentando paulatinamente desde valores negativos con el
potenciómetro al mínimo, hasta llegar a mas de 25 dB en la posición de máximo volumen, si vemos la hoja de
datos del fabricante ( 26 dB de amplificación en esta configuración) hallaremos una muy leve discrepancia,
menor a 1 dB !, para confrontar el ancho de banda con el dado por el fabricante solo debemos ver el último
paso o sea el de máximo volumen, en el cual se consigna un ancho de banda de 323 Khz, cifra muy cercana a
la dada por National (300 Khz).

A continuación el resultado gráfico dado por Ltspice de las curvas de respuesta en frecuencia y fase:

.param Fin=1e5 Con esto le decimos cual es la frecuencia del generador de entrada Vin, esta orden no influye
en el análisis de AC, pero debe ser pasada, para que Vin tenga una declaración consistente, al igual que la
siguiente directiva de simulación, su uso es para el análisis transistorio.
.step param cursor 0 1 .2 Con esto movemos el cursor del potenciómetro de volumen de un extremo a otro,
esta orden en realidad no es de gran uso en el análisis de AC, pero ha quedado legada por el análisis
transistorio que luego realizaremos al mismo circuito.
.four {Fin} V(out) Esta directiva también es ignorada durante el análisis de AC, pero se usa en el análisis
transistorio para encontrar la distorsión armónica del amplificador, en su salida V(out), versus la frecuencia de
entrada (Fin).
Ahora vamos a correr el análisis transistorio, para ello pulsamos con el botón secundario del ratón en el texto
que reza:
;tran 0 {50/Fin} {10/Fin} y cambiamos el signo de ";" inicial ( implica cometario ) por un "." ( significa
directiva)...hecho esto al correr la simulación el software nos dirá que hay dos posibles tipos de análisis a correr,
el de AC y el Tran, pinchamos en este último y tenemos el siguiente resultado gráfico:

Si estando activa la ventana del editor de esquemas de Ltspice, pulsamos en el menú View y luego en SPICE
Error Log, podremos ver los resultados del análisis armónico o de Fourier que por defecto en Ltspice computa
las primeras nueve armónicas ( fundamental incluída por supuesto); en este ejemplo para cada paso de avance
en el parámetro cursor que rige al potenciómetro, acá solo mostraré los dos últimos o los de mayor potencia en
la salida, observe el aumento en la distorsión armónica calculada, si quiere pruebe a aumentar el valor de la
amplitud del generador de 200mV a 250 mv o más y vuelva a ver como aumenta dramáticamente la distorsión
del amplificador; si quiere obtener mas potencia sin distorsión ensaye el amplificador con 250 mV de excitación
pero aumente a 12 v o mas la tensión de alimentación. Para ir terminando, el fabricante alega que si colocamos
un capacitor de al menos 10 uF, entre los terminales 1 y 8 de ganancia, ésta sube al máximo de 46 dB, si
copiamos el capacitor de acoplamiento Cac en la entrada y lo " cableamos" sobre los terminales de ganancia, y
lo renombramos Cgan el esquema nos queda así:
Si ahora descomentamos la línea de anális AC, es decir reemplazamos el punto y coma inicial (;) por un punto
(.) y luego corremos el simulador y elegimos que haga el análisis AC tenemos resultados de ganancia cercanos
a 45 dB, con lo cual concluimos que este modelado del LM386 en un subcircuito se ajusta bastante a la
datasheet del fabricante, podemos ahora mejorarlo o probarlo desarrollando los ejemplos de uso del fabricante,
como por ejemplo un oscilador puente de Wien de potencia y buen rango de frecuencias, etc ,etc. Para ello les
dejo también sus hojas de datos.

Ahora pueden profundizar en el desarrollo de modelos subcircuitales de componentes complejos


acá: Aprendiendo +

Y pueden además enviar sus comentarios a mi casilla de correo electrónico:

precisionorte@gmail.com

S-ar putea să vă placă și