aprendiendo ltspice

46
Aprendiendo + Introducción a Aprendiendo+: Ahora que ya tenemos los conocimientos básicos para encarar la realización de modelos de dispositiivos que no son primitivas Spice, pero que pueden expresarse como una combinación finita de ellas y ser agrupadas conveniente y prácticamente dentro de un subcircuito, encararemos el desarrollo didáctico del modelado del 555 en subcircuitos diversos, cotejaremos sus pros y sus contras y en el devenir del camino aprenderemos mas sobre el lenguaje usado por Ltspice para trabajar con ellos, es decir Spice. ¿ Qué no se ha dicho ya del mas popular de todos los circuitos integrados de todos los tiempos ? Para quienes lo deseen pueden ir a este enlace, donde se detalla el origen y las características del 555: Wikipedia: El 555 En honor y reconocimiento a su autor, pueden visitar este otro enlace, desde donde se puede bajar gratuitamente un formidable libro sobre diseño de circuitos integrados analógicos: Camenzind Para los que quieran conocer ciertos detalles acerca de la invención del 555 y del 741, prueben este otro enlace: Inventando al 555 y al 741 Manos a la obra!: A diferencia de lo que vimos hasta ahora, el 555 es un circuito integrado mixto o un híbrido de partes analógicas y partes digitales, desde el punto de vista de quien va a encarar su modelado, se trata de una tarea mucho mas ardua y compleja aunque también mas apasionante. El hecho de que Spice no incluya ningún componente digital entre sus primitivas, nos obligará a encarar el desarrollo de los mismos, para posibilitar que el subcircuito con el modelado del 555 pueda correr en cualquier simulador compatible o basado en Spice. Este punto no es trivial y causó que entre los diversos productores de soft para simulación de circuitos, se desenvuelva una competencia al respecto, el problema es que ninguna de las soluciones aportadas para salvar la falta de primitivas digitales en Spice, es justamente compatible con Spice, resultando modelos de subcircuitos que solo pueden correr en el simulador donde fueron creados y siendo además muy tediosa su traducción para ser probados en cualquier otro simulador. Como primer ejercicio, vamos a desarrollar en Ltspice el 555 a partir de su esquema circuital, he hallado que el proporcionado por Ltspice, entre sus ejemplos educacionales y basado en la hoja de datos original es este:

Upload: roberto-hugo-rodriguez-zubieta

Post on 01-Dec-2015

156 views

Category:

Documents


11 download

DESCRIPTION

Versión en formato pdf, del contenido referido a Ltspice en mi página:https://sites.google.com/site/precisionaudiotv/Home

TRANSCRIPT

Page 1: Aprendiendo Ltspice

Aprendiendo +

Introducción a Aprendiendo+:

Ahora que ya tenemos los conocimientos básicos para encarar la realización de modelos de dispositiivos que no son primitivas Spice, pero que pueden expresarse como una combinación finita de ellas y ser agrupadas conveniente y prácticamente dentro de un subcircuito, encararemos el desarrollo didáctico del modelado del 555 en subcircuitos diversos, cotejaremos sus pros y sus contras y en el devenir del camino aprenderemos mas sobre el lenguaje usado por Ltspice para trabajar con ellos, es decir Spice.

¿ Qué no se ha dicho ya del mas popular de todos los circuitos integrados de todos los tiempos ?

Para quienes lo deseen pueden ir a este enlace, donde se detalla el origen y las características del 555:Wikipedia: El 555

En honor y reconocimiento a su autor, pueden visitar este otro enlace, desde donde se puede bajar gratuitamente un formidable libro sobre diseño de circuitos integrados analógicos:Camenzind

Para los que quieran conocer ciertos detalles acerca de la invención del 555 y del 741, prueben este otroenlace:Inventando al 555 y al 741

Manos a la obra!:A diferencia de lo que vimos hasta ahora, el 555 es un circuito integrado mixto o un híbrido de partes analógicas y partes digitales, desde el punto de vista de quien va a encarar su modelado, se trata de una tarea mucho mas ardua y compleja aunque también mas apasionante. El hecho de que Spice no incluya ningún componente digital entre sus primitivas, nos obligará a encarar el desarrollo de los mismos, para posibilitar que el subcircuito con el modelado del 555 pueda correr en cualquier simulador compatible o basado en Spice. Este punto no es trivial y causó que entre los diversos productores de soft para simulación de circuitos, se desenvuelva una competencia al respecto, el problema es que ninguna de las soluciones aportadas para salvar la falta de primitivas digitales en Spice, es justamente compatible con Spice, resultando modelos de subcircuitos que solo pueden correr en el simulador donde fueron creados y siendo además muy tediosa su traducción para ser probados en cualquier otro simulador.

Como primer ejercicio, vamos a desarrollar en Ltspice el 555 a partir de su esquema circuital, he hallado que el proporcionado por Ltspice, entre sus ejemplos educacionales y basado en la hoja de datos original es este:

Page 2: Aprendiendo Ltspice

La netlist de esta descripción esquemática puede ser algo como esto: .Subckt NE555 1 2 3 4 5 6 7 8

Q1 N003 N013 N015 0 NPQ2 N003 2 N013 0 NPQ3 N004 N014 N015 0 NPQ4 N004 5 N014 0 NPR1 N015 0 10KQ5 N004 N004 8 0 PNQ6 N007 N004 8 0 PNQ7 N003 N003 8 0 PNQ8 N009 N003 8 0 PNQ9 N017 N005 N002 0 PNR2 8 N002 1KQ10 N028 N022 N017 0 PNQ11 0 N024 N022 0 PNQ12 N027 N021 N017 0 PNQ13 0 2 N021 0 PNQ14 N027 N028 0 0 NPQ15 N028 N028 0 0 NPR3 8 5 5KR4 5 N024 5KR5 N024 0 5KQ16 N009 N007 0 0 NPQ17 N007 N007 0 0 NPQ18 N018 N027 0 0 NPQ19 N023 N018 0 0 NPQ20 N019 N023 0 0 NPQ21 N011 N009 N018 0 NPQ22 N011 N011 N023 0 NPQ23 N005 N005 8 0 PNQ24 N005 N005 8 0 PNQ25 N019 N005 8 0 PNR6 N005 N011 7.5KR7 N019 N018 4.7KQ26 N030 4 N011 0 PNQ27 7 N030 0 0 NPQ28 N006 N019 N025 0 NPR8 8 N006 6.2KR9 N025 N030 100R10 N025 0 3.3KR11 N026 N025 120Q29 3 N026 0 0 NPQ30 8 N008 3 0 NPQ31 8 N006 N008 0 NPR12 N008 3 3.9KQ32 0 N006 3 0 PNC2 5 0 .01µC1 2 0 .01µR13 8 7 20KR14 2 7 20KV3 4 0 PULSE(0 15 0 1u 1u 5m 10m)

Page 3: Aprendiendo Ltspice

V1 8 0 15.model NP NPN(BF=125 Cje=.5p Cjc=.5p Rb=500).model PN LPNP(BF=25 Cje=.3p Cjc=1.5p Rb=250)* This example schematic is supplied for informational/educational purposes only.* A transistor level repesentation of a 555 timer..ends NE555

Como puede verse, se trata de una implementación al nivel de semiconductores y son necesarias casi sesenta líneas para definirlo ya que usa varias décadas de estas primitivas ( transistores) en su objeto; a la hora de asignarle un símbolo y hacerlo correr es pasmosamente lento.

Siguiendo por este camino, lo mejor que podemos conseguir viene de la hoja de datos mas nueva de Thomson, que provee una versión mejorada y simplificada del dispositivo a este nivel, en la que además se delimitan los bloques funcionales construidos:

Figura 2 La netlist es ésta: *Subcircuito del LM555, traducido del diagrama esquemático que hay en la hoja de datos de Thomson por Robertugo_2005:.SUBCKT LM555 1 2 3 4 5 6 7 8Q1 N5 5 N7 1 NPQ2 N1 6 N6 1 NP

Page 4: Aprendiendo Ltspice

Q3 N1 N6 N8 1 NPQ4 N5 N7 N8 1 NPQ5 7 N16 1 1 NPQ6 N17 N14 1 1 NPQ7 N1 N1 N3 1 PNQ8 N17 N1 N2 1 PNQ9 1 N5 N2 1 PNQ10 N5 N5 N4 1 PNQ11 N11 N20 N9 1 PNR1 8 N3 4.7KR2 8 N2 830R3 8 N4 4.7KR4 8 N9 1KR5 8 5 5KR6 8 N22 6.8KQ13 1 2 N10 1 PNQ14 N14 N10 N11 1 PNQ15 N13 N12 N11 1 PNQ16 N13 N15 N12 1 PNR7 N14 1 100KR8 N13 1 100KR9 N15 5 5KR10 N15 1 5KR11 N8 1 10KQ17 N16 4 N18 1 PNQ18 N19 N17 1 1 NPR12 N18 N20 5KQ19 N20 N20 8 1 PNQ20 N21 N20 8 1 PNQ21 N21 N19 1 1 NPR13 N17 N21 4.7KQ22 8 N22 N23 1 NPQ23 N22 N21 N24 1 NPQ24 8 N23 3 1 NPR14 3 N23 3.9KQ25 3 N25 1 1 NPR15 N25 N24 220R16 1 N24 4.7KR17 N24 N16 10KD2 3 N22 DD1 N18 N19 D.MODEL NP NPN(BF=125 Cje=.5p Cjc=.5p Rb=500).MODEL PN LPNP(BF=25 Cje=.3p Cjc=1.5p Rb=250).MODEL D D(Is=1e-12 Cjo=1p Rs=5.ENDS

En este caso son menos de cincuenta las líneas empledas en la definición del subcircuito y eso se reflejaa la hora de simularlo, con la obtención de menores tiempos, si se lo compara con el primero es entre dos y tres veces más rápido; siendo -dentro de la familia de subcircuitos del 555 que lo desarrollan a nivel de semiconductor - el modelo mas rápido. Con esto se consigue mejorar el desempeño de este tipo de modelado subcircuital, ya que se obtiene una descripción mas concisa del dispositivo; sin embargo esta clase de desarrollos a nivel de transistores como elementos activos es superada por los desarrollos basados en el comportamiento funcional del dispositivo, debido su nivel de abstracción la performance superior y se obtienen así tiempos de simulación substancialmente mas breves.

Subcircuitos basados en la síntesis del comportamiento: Para emprender la tarea de hacer un subcircuito con un modelado a la medida de la conducta del circuito integrado que pretendemos reflejar, son de nuevo nuestro punto de partida las hojas de datos o datasheets del mismo y volviendo sobre las del 555 observamos:

Page 5: Aprendiendo Ltspice

Figura 3 Acá se despliega una semblanza del dispositivo, desde un punto de vista mas elevado que el de la descripción a nivel de semiconductores, para conseguir esta descripción mas abstracta del dispositivo, se hecha mano al empleo de bloques funcionales, perfectamente delimitados, como los comparadores, el flipflop SR y el inversor, los únicos vestigios de la anterior forma de describir al dispositivo, son el divisor resistivo entre las entradas de los comparadores y que fija los umbrales de cambio de estado en valores separados por un tercio de la tensión de alimentación y el transistor de descarga.

Ltspice, a diferencia de Spice si incorpora una familia de primitivas digitales que posibilitan el ensayo y desarrollo de cualquier familia lógica real de forma precisa, rápida y eficiente, cuenta para ello entre las primitivas o elementos circuitales a los dispositivos " A " o funciones especiales dentro de las cuales se hallan: Inversor INVSeparador BUFCompuerta ANDCompuerta ORCompuerta XORFlipflop SRFlipflop DPrimitivas digitales de Ltspice que cuentan con características de histéresis programable:Disparador SCHMITTSeparador SCHMTBUF

Page 6: Aprendiendo Ltspice

Aunque su ayuda no diga nada de ello, cuenta con tres diferentes comparadores diferenciales de dos entradas y diversas salidas, complementarias en algunos de ellos:Comparador DIFFSCHMITTComparador DIFFSCHMTBUFComparador DIFFSCHMTINV El resto de las funciones especiales A no pertenecen al ámbito digital y son un varistor programable, controlado por tensión VARISTOR y finalmente MODULATE, que es un oscilador controlado por tensión y completamente configurable, quienes necesiten información sobre ellos, pueden recurrir al excelente manual con el que viene munido Ltspice. Luego seguiremos profundizando acerca de los elementos de circuitos digitales contenidos en la familia de funciones especiales o dispositivos A, exclusivos de Ltspice.

Esbozos de reingeniería:

En la instalación del Ltspice se incluye un símbolo para el 555, si lo abrimos obtenemos esto:

Figura 4

La ventana del editor de atributos de símbolos, que se abre luego de pulsar Ctrl y A, nos dice que tal tipo de símbolo es del tipo Cell o célula, lo cual nos indica que representa a una primitiva o a un subcircuito y no a un símbolo relacionado con otro diagrama esquemático, como los empleados para la realización de proyectos esquemáticos jerárquicos, ya que en en tal caso en lugar de Cell, se declara que el símbolo representa a un circuito esquemático con la palabra clave Block, tal subcircuito

Page 7: Aprendiendo Ltspice

declarado con el prefijo X establece efectivamente que se trata de un subcircuito , cuyo modelo Spice reside dentro del archivo NE555.sub, lo declarado en Value, es el nombre que veremos al abrir el símbolo con el editor de esquemas, para emplearlo en algún proyecto, Value 2 no es mandatorio y puede omitirse; en ocasiones se usa cuando el símbolo se corresponde con un subcircuito que necesite el ingreso de algunos parámetros; recuerde el ejemplo del amplificador operacional básico, que hacía uso de Value2 y SpiceLine, para declarar los valores por defecto de la ganancia y el ancho de banda. El paso siguiente, será editar NE555.sub, para ver lo que contiene: * Copyright © Linear Technology Corp. 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008. All rights reserved.*.subckt NE555 1 2 3 4 5 6 7 8A1 N001 2 1 1 1 1 N003 1 SCHMITT Vt=0 Vh=1mR1 N001 1 5KR2 5 N001 5KR3 8 5 5KS1 1 7 N007 1 DA2 N011 N003 1 1 1 1 N008 1 SRFLOP Trise=100n tripdt=10nA3 6 5 1 1 1 1 N012 1 SCHMITT Vt=0 Vh=1mS2 8 3 N009 1 OS3 3 1 1 N009 OA6 1 N006 1 N008 1 1 N007 1 OR Ref=.5 Vlow=-1 Trise=100nR7 8 1 4KR9 2 1 1GR10 6 1 1GA4 1 N008 1 N006 1 N009 1 1 OR ref=.5 Vlow=-1 Trise=100nA5 4 1 1 1 1 N006 1 1 SCHMITT Vt=.7 Vh=1mD1 4 1 DRA7 1 N006 1 N012 1 1 N011 1 ORD2 8 4 400uA.model DR D(Ron=150K Roff=1T Vfwd=1.6).model O SW(Ron=6 Roff=1Meg Vt=0 Vh=-.8).model D SW(Ron=6 Roff=.75G Vt=.5 Vh=-.4).model 400uA D(Ron=1K Ilimit=400u epsilon=.5).ends NE555

Observe el carácter compacto del subcircuito, el mismo se ha logrado gracias al uso de las primitivas digitales propias de Ltspice y que se corresponden con cada línea que comienza con la letra A; ahora vamos a transcribir este modelo a su representación circuital esquemática, mas natural y sencilla de comprender para las personas; para ello le indicamos a Ltspice que vamos a hacer un nuevo esquemático, pulsando para ello en el menú File y luego en New Schematic y si observamos las declaraciones en la netlist, acerca de los dispositivos A, tendremos pistas acerca de que se trata cada uno, así por ejemplo A1 y A3 son los dos comparadores mostrados en el esquema de bloques funcionales de la hoja de datos, A2 es la báscula SR, A6, A4 y A7 son puertas OR, etc. Luego de trabajar y probar un tiempo, llegamos a esto:

Page 8: Aprendiendo Ltspice

Figura 5 Este subcircuito se basa en la descripción en bloques funcionales de las hojas de datos y no en el esquemático, resulta evidente su elegancia y sencillez y en cuanto a su desempeño éste es netamente superior a los demás, el único problema es que solo puede correr en Ltspice y es por ello que vamos a desarrollar a partir de acá, subcircuitos de las funciones A, que sean compatibles con cualquier simulador basado en Spice y finalmente probaremos los subcircuitos así obtenidos tanto en Ltspice, como en algunos otros simuladores circuitales, para comprobar su correcto desempeño. Si -estando activa la ventana del editor de esquemáticos- pulsamos en el menú View y luego en SPICE Netlist, se obtiene una netlist con una descripción funcional idéntica al subcircuito proporcionado por Linear para Ltspice: R1 N1 1 5kR2 5 N1 5kR3 5 8 5kS1 1 7 N7 1 DSA3 N2 N3 1 1 1 1 N5 1 SRFLOP Trise=100n tripdt=10nS2 8 3 N6 1 OSS3 3 1 1 N6 OSA4 1 N4 1 N5 1 1 N7 1 OR Ref=.5 Vlow=-1 Trise=100nR4 8 1 4kA5 1 N5 1 N4 1 N6 1 1 OR Ref=.5 Vlow=-1 Trise=100nA6 4 1 1 1 1 N4 1 1 SCHMITT Vt=.7 Vh=1mI1 8 4 .4m loadD1 4 1 DRR5 1 6 1gR6 1 2 1gA1 6 5 1 1 1 1 N2 1 SCHMITT Vt=0 Vh=1m

Page 9: Aprendiendo Ltspice

A2 N1 2 1 1 1 1 N3 1 SCHMITT Vt=0 Vh=1m.model D D.lib C:\LTC\LTspiceIV\lib\cmp\standard.dio.model DS SW(Ron=6 Roff=.75G Vt=.5 Vh=-.4).model OS SW(Ron=6 Roff=1e6 Vt=0 Vh=-.8).model DR D(Ron=150K Roff=1T Vfwd=1.6).end

Una posible simplificación a esta excelente traducción del diagrama funcional de la datasheet, se puedeconseguir quitando el diodo D1, que está puesto para simular el consumo del pin 4 de reset cuando el pin está a nivel alto ( 70uA @ 12v) y en su lugar podemos poner un resistor, que es una primitiva, mucho mas sencilla de simular que un diodo, otro tanto puede decirse de la fuente de corriente I1, de 0.4 mA y que representa la corriente por el pin 4 cuando el mismo está a masa o nivel bajo, una buena aproximación con resistores, se consigue poniendo en lugar de la fuente de corriente una resistencia de 200 K y en cuenta del diodo otra resistencia de 32 K y para quienes no quieran contar con la simulaciónde la corriente del pin 4, cuando éste está bajo, el resistor de 200 K puede omitirse sin problema algunoen tal caso.

Lo que nos falta ( aparte de la cabecera: .Subckt LT555 1 2 3 4 5 6 7 8 y agregar una s al final de .end) es asignarle un símbolo esquemático para probarlo , contamos con dos caminos para ello: 1) Asignamos el símbolo al esquema y lo tratamos como a un bloque esquemático jerárquico, esta forma de trabajo es muy útil durante la fase de inicio, desarrollo y puesta a punto de cualquier subcircuito. 2) El símbolo se asocia a un archivo con el subcircuito, como ya vimos recién... Esta es la forma final odefinitiva de uso de un subcircuito determinado y solo debe hacerse en la fase final, cuando ya no debamos probar ni ajustar nada dentro del subcircuito; a propósito cuando dibujemos el símbolo, veremos también la forma de hacer uno con el cual podamos cambiar entre diversos modelos del dispositivo, para su prueba y comparación y con un simple clic del ratón.

Preparándonos para nuestro 555:

Para la síntesis de estos dispositivos abstractos solo en función de primitivas Spice, contamos con las siguientes herramientas: Fuentes B ( por Behavioral que significa comportamiento o conducta ). Llaves controladas por tensión como las que se usan en el diagrama para simular las etapas de salida y descarga del 555, pero en nuestro caso las vamos a usar también para desarrollar las partes digitales del 555.

Pero antes vamos a entrar un poco en ciertos detalles acerca del subcircuito del 555 proporcionado por Linear, para Ltspice, sin los cuales su traducción correcta en términos de primitivas Spice es imposible.Para comprender con exactitud el funcionamiento del mismo y poderlo traducir con idoneidad a un subcircuito genérico simulable por Spice, es preciso estudiar acerca de los elementos especiales que este subcircito emplea y de otros elementos que vamos a necesitar para llevar a cabo tal labor. Lo que sigue es una traducción acerca del dispositivos especiales A, del manual del Ltspice:" A. Funciones Especiales:

Page 10: Aprendiendo Ltspice

Nombres de símbolos: INV, BUF, AND, OR, XOR, SCHMITT, SCHMTBUF, SCHMTINV, DFLOP, VARISTOR, y MODULATE. Sintaxis: Annn n001 n002 n003 n004 n005 n006 n007 n008 <modelo> [parámetros de instancia] Éstos son los dispositivos especiales de modo mixto de simulación propietarios de Linear Technology Corporation. La mayoría de estos y su conducta está indocumentada ya que ellos frecuentemente cambian con cada nuevo juego de modelos disponible para LTspice. Sin embargo, aquí documentaremos algunos de ellos debido a su interés general. INV, BUF, AND, OR, y XOR son las puertas digitales, conductuales idealizadas genéricas. Todas las compuertas se declaran en la correspondiente netlist con ocho terminales. Estas puertas no requieren de alimentación externa. La corriente es suministrada o drenada de las salidas complementarias, en los términales 6 y 7, y retornadas a través del terminal 8 o común. Los términales 1 2 3 4 5 son las entradas. Las entradas y salidas sin usar serán conectadas al terminal 8. El compilador de dispositivos digitales reconoce como una bandera o indicador que ese terminal no se usa y lo quita de la simulación. Esto lleva a una situación potencialmente confusa dónde las puertas AND actúan diferentemente cuando una entrada se conecta con tierra o a cero voltios. Si la tierra es el terminal 8 o común, entonces la entrada conectada con tierra no está en una lógica de condición falsa, simplemente no participa de la simulación. La razón que estas puertas se implementen así es que esto permite a un dispositivo actuar como de 2, 3, 4 o 5 entradas con salidas verdaderas, invertidas, o complementarias sin pérdida de rendimiento en velocidad de simulación para los terminales sin usar. Es decir, el dispositivo AND, por ejemplo actúa como 12 tipos diferentes de puertas AND. Las puertas tienen como valor predefinido la lógica de 0V/1V con un umbral de medio voltio o 0.5V, ningún retardo de propagación, y una impedancia de salida de 1 ohmio . Las características de salida se fijan con estos parámetros de instancia:: Vhigh, diferencia de potencial que indica el estado lógico alto, valor por defecto 1 v.Vlow, diferencia de potencial que indica el estado lógico bajo, valor por defecto 0 v.Trise , tiempo de subida del pulso desde 0v a 1v, por defecto es cero 0.Tfall , tiempo de bajada del pulso desde 1v a 0v, por defecto es cero 0.Tau, constante de tiempo RC asociada con la salida, por defecto es 0.Cout, es la capacitancia del pin de salida, su nalor por defecto es 0.Rout, es la impedancia del pin de salida, su valor por defecto es 1 ohmio.Rhigh es la impedancia de salida, cuando ésta está alta y por defecto es igual a Rout.Rlow es la impedancia de salida, cuando ésta está baja y por defecto es igual a Rout. Note que no todos los parámetros pueden especificarse al mismo tiempo en el mismo caso, por ejemplo, las características de salida pueden modelarse con un tiempo de subida Trise o un tiempo dado por una constante RC, no ambos. El valor predeterminado de retardo de propagación es cero y se puede cambiar con el parámetro de instancia Td. El tiempo de sostenimiento de entrada es igual al retardo de propagación. El umbral lógico de las entradas tiene como valor predefinido .5*(Vhigh+Vlow) pero puede cambiarsae con el parámetro de instancia Ref. El tiempo del sostenimiento es igual al retardo de propagación. El dispositivo de or exclusiva XOR tiene una conducta no normal cuando se usan más de dos entradas: La salida sólo es verdadera cuando exactamente una de todas las entradas es cierta o alta. Use la propiedad asociativa de XOR's con los dispositivos XOR de múltiples entradas para llevar a cabo un

Page 11: Aprendiendo Ltspice

bloque de XOR con más de dos entradas. Los dispositivos con Schmitt, cuentan con histéresis programable y tienen características de salida similares a las ya vistas en las compuertas. Sus puntos de control se especifican con los parámetros de instancia Vt y Vh. El punto de control bajo es Vt-Vh y el punto del control alto es Vt+Vh. Las puertas y los Schmitt no proporcionan por defecto la información del tamaño del incremento de tiempo o timestep al simulador. Es decir, que ellos no ven cuando están a punto de cambiar de estado ni se aseguran que haya un timestep similar a ambos lados del cambio de estado. Por esto el parámetrode instancia tripdt es usado para estipular el timestep máximo que el simulador puede tomar para atravesar los cambios de estados."

Teniendo en cuenta que también vamos a emplear para el desarrollo de algunos modelos a los interruptores controlados por tensión, será necesario estudiar del manual de ayuda de Ltspice, su definición: "S. Switch o interruptor controlado por tensión. Nombre del símbolo: SW Sintaxis: Sxxx n1 n2 nc+ nc - <modelo> [on,off] Ejemplo: S1 out 0 in 0 MySwitch. MySwitch SW (Ron= .1 Roff=1Meg Vt=0 Vh = - .5 Lser=10n Vser = .6) La caída de tensión entre los nodos de entrada nc+ y nc - controla la impedancia del interruptor entre los nodos de salidas n1 y n2.Una tarjeta con el modelo se exige para definir la conducta del interruptor.Vea el archivo esquemático. \ examples\Educational\Vswitch.asc con un ejemplo de como hacerlo directamente sobre un esquemático como una directiva Spice. Parámetros del Switch o interuptor controlado por tensión: Vt tensión de umbral ( por threshold). Debe darse en voltios y su valor predeterminado es 0.Vh tensión de histéresis, tambien se expresa en voltios y su valor por defecto es 0.Ron es la resistencia que tiene el interruptor al estar cerrado y por defecto vale 1 ohmio.Roff es la resistencia que tiene el interruptor al estar abierto y por defecto vale 1/Gmin que es la conductancia mínima que el simulador asigna para cualquier conexion circuital y que por defecto vale 1E-12 Mho, por lo que Roff=1E12 ohmios o un teraohomio.Lser es la inductancia en serie con los bornes de salida de la llave y se expresa en henrios.Vser es la tensión de una fuente en serie con el interruptor y normalmente vale 0 voltios.Ilimit es la máxima corriente que puede pasar por la llave, se expresa en amperes y por defecto es infinita.

El interruptor tiene tres modos distintos de control por voltaje, dependiendo del valor del voltaje de histéresis, Vh. Si éste es cero, el interruptor siempre estará completamente cerrado o abierto dependiendo de si el voltaje de control está por encima del umbral o no.Si Vh es positivo, el interruptor muestra histéresis, como si fuera controlado por un disparador de Schmitt con los puntos de control a Vt - Vh y Vt + Vh. Note que Vh es la mitad del voltaje entre puntos de control ( trip points) lo cual es diferente a la nomenclatura comunmente usada en laboratorios.

Page 12: Aprendiendo Ltspice

Si Vh es negativo, el interruptor hará la transición suavemente entre los estados de alta y baja impedancia. La transición ocurre entre los voltajes de mando de Vt - Vh y Vt + Vh. La suave transición obedece a un polinomio de orden bajo que se aproxima al logaritmo de la conducción del interruptor. Hay también un segundo nivel para el interruptor controlado por voltaje. Este nuevo nivel es una versión avanzada del nivel uno que acabamos de ver, la diferencia es que en este nuevo nivel la histéresis se expresa en términos negativos y este tipo de interruptor nunca está completamente cerrado o abierto. La conducción como una función del voltaje de control Vc es : g(Vc) = exp(A * atn((Vc - Vt)/Vh) + B)Donde:A = pi * (log(1/Ron) - log(1/Roff))B = (log(1/Ron) + log(1/Roff)) También, la transición del interruptor de nivel dos hacia el límite de corriente es gradual en lugar de abrupto. A un voltaje de mando fijo, la curva I-V está dada por la ecuación: I(V) = Ilimit * tanh(g(Vc) * V) El interruptor de segundo nivel o level2 switch, soporta además la opción para conducir en sólo un sentido ya sea especificando el flag o indicador "oneway" o especificando una caída de voltaje mediante el parámetro Vser. La transición entre la conducción en sentido directo y en sentido inverso ocircuito abierto puede especificarse para que sea una transición suave especificando que el parámetro epsilon no sea cero..." Debo aclarar que este segundo nivel en el modelo de una llave controlada por voltaje, es exclusivo de Ltspice y que por lo tanto solo emplearemos el de nivel uno que si es compatible con Spice.

Para terminar con esta imprescindible parte teórica, llevaremos a cabo la traducción del manual del Ltspice, sobre parte de lo referido a las fuentes B:"B. Fuente de tensión o corriente de comportamiento arbitrario. Nombres de los símbolos: BV y BI .

Sintaxis: Bn n1 n2 V=<expresión> [ic=<valor>] + [tripdv=<valor>] [tripdt=<valor>] + [laplace=<expresión> [window=<tiempo>] + [nfft=<número>] [mtol=<número>]] Bn n1 n2 I=<expresión> [ic=<valor>] + [tripdv=<valor>] [tripdt=<valor>] [Rpar=<valor>] + [laplace=<expresión> [window=<tiempo>] + [nfft=<número>] [mtol=<número>]] La primera sintaxis especifica una fuente de voltaje conductual o arbitrario y la segunda es una fuente igual, pero de corriente. Para la fuente de corriente , una resistencia paralela puede especificarse con el parámetro instancial Rpar .

Page 13: Aprendiendo Ltspice

Los parámetros tripdv y tripdt controlan el rechazo del paso.Si el voltaje por una fuente cambia por más de los voltios del tripdv en los segundos del tripdt, ese paso de tiempo de simulación se rechaza. Las expresiones pueden contener lo siguiente: Tensiones nodales, por ejemplo: V(n1) Diferencias de tensión internodales, por ejemplo: V(n1, n2) Corrientes de elementos del circuito; por ejemplo, I(S1), la corriente a través del interruptor S1 o Ib(Q1), la corriente de la base del transistor Q1. Sin embargo, se supone que la corriente del elemento de circuito está variando cuasi-estáticamente, esto es, no hay ninguna realimentación instantánea entre la corriente a través del dispositivo referenciado y el rendimiento de la fuente arbitraria o conductual. Semejantemente, se asume que cualquier componente de ac de tal elemento referenciado es cero en un análisis lineal de pequeña señal, como el análisis AC. La palabra clave "time", significa el tiempo el tiempo de simulación. La palabra clave, "pi" que significa 3.14159265358979323846. Las funciones siguientes:

Page 16: Aprendiendo Ltspice

Tabla 1 Mis disculpas por no traducir la tabla de funciones, solo haré algo al respecto con la función que usaré, la misma figura en la tabla como u (x) o función de paso unidad y que vale 1 para cualquier valor a su entrada positivo o mayor que 0, en todos los otros casos el valor de retorno de esta función es cero. Verdadero es numéricamente igual a 1 y Falso es 0. La Conversión a tipo booleano convierte un valor a 1 si el mismo es mayor que 0.5, de lo contrario se convierte a 0.

Note que LTspice usa el carácter del símbolo del acento circunflejo, ^, para el operador booleano de la disyunción exclusiva o XOR y "** " para la exponenciación. También, LTspice distingue entre la exponenciación, x**y, y la función pwr(x,y)Otros simuladores tienen una incorrecta implementación de la exponenciatión conductual, evaluando -3**3 incorrectamente a 27 en lugar de -27, probablemente en el interés de evitar el problema de potenciar un número negativo a un exponente no entero. LTspice se ocupa de este problema devolviendo la parte real del resultado de la operación. Por ejemplo, -2**1.5 se evalúa como cero qué es la parte real de la respuesta correcta que no es real: 2.82842712474619i. Esto significa que cuando usted importa un modelo de de otros simuladores ( Pspice por ejemplo) , necesitará traducir la sintaxis como x^y a x**y o pwr(x,y).

Empezando a cocinar nuestro subcircuito conductual: Lo que vamos a hacer, para empezar es realizar los diversos símbolos de los bloques funcionales detallados en la hoja de datos, para esto necesitamos abrir el editor de símbolos de Ltspice y dibujar lossímbolos de los comparadores, el flipflop SR, el inversor y las compuertas lógicas, como en las primeras fases vamos a trabajar con esquemáticos jerárquicos cuidaremos de que los nombres de los

Page 17: Aprendiendo Ltspice

símbolos sean iguales a los de los esquemas que, valga la redundancia, sinbolizan o contienen; además deberemos indicar en el editor de atributos del símbolo ( recordar que se abre con Ctrl y A) de que el símbolo está asignado a un Block , ya que por defecto los crea para Cell y con esto ya podremos comenzar el desarrollo de los subcircuitos veamos por ejemplo:

Figura 6

Ahora veamos el símbolo del flipflop o báscula SR:

Page 18: Aprendiendo Ltspice

Figura 7 Este fliflop es un caso de jerarquía esquemática anidada que viene a representar al siguiente arreglo esquemático para el FF SR:

Figura 8 Como vemos, deberemos hacer previamente el símbolo para las compuertas NOR, que son las que

Page 19: Aprendiendo Ltspice

contienen a las primitivas Spice equivalentes a la funcion NOR de dos entradas y que modelamos así:

Figura 9 Ahora veremos si el arreglo propuesto refleja el comportamiento de una puerta NOR de dos entradas, para que la salida sea alta ambos interruptores deben cerrarse, puesto que al estar cableadas sus salidas en serie V+ llegará a la salida Y, solo cuando las dos llaves estén cerrando el circuito, y esto solo sucede cuando en las entradas de control A=B=0, cualquier otra combinación de alores de A y B hace que la salida Y, sea baja y como vemos esta es precisamente la negación de la función OR o sea NOR.

Las etiquetas con números grises son comentarios que recuerdan el orden de los pines en el símbolo. Un par de estos arreglos NOR son los usados para erigir a la báscula SR; el valor para el estado falso es0 voltio y para el verdadero 1 voltio, sabiendo esto podemos explicar el significado de algunos de los parámetros del switch VT=.5 o VT=0.5, indica que medio voltio es el valor fijado para la transición interestatal, en tanto que VH=.4 o VH=0.4 indica un valor de histéresis de 400 mV repartido en mitadesde 200 mV, arriba y abajo de VT esta histéresis torna a la llave menos influenciable a cualquier transistorio u oscilaciones en las inmediaciones de VT suavizando el comportamiento durante el cambio de estado.Este subcircuito de compuerta NOR, está muy cerca de ser 100% Spice compatible, lo único que le faltaría es desdoblar la resistencia declarada como Rpar en Cnor, para que lo sea. Veamos ahora a la comperta NOR que no pertenece al flipflop, ya que la misma esconde una pequeña pero necesaria diferencia:

Page 20: Aprendiendo Ltspice

Figura 10 Como vemos la única diferencia es que el pin 4 del símbolo, que antes iba conectado a la red simbolizada por 1 ya que ese es el pin de masa del 555; ahora va conectada a una red cuya etiqueta es -V y que en efecto vale alrededor de -1 v. Su inclusión se debe a las características de la salida o pin 3 del dispositivo, que puede tanto suministrar como drenar corriente y que por lo tanto es del tipo de simetría complementaria; para conseguir que funcione correctamente ( referise visualmente a la salida del esquemático del subcircuito de Linear, en la parte superior derecha o al que está acá un poco mas abajo) las entradas de control de la llave encargada de poner la salida a masa tiene conectado su terminal positivo a masa, para que la llave actúe su terminal de control negativo debe pues ser mas negativo que la masa y la forma de conseguirlo es con una fuente de tensión negativa de valor absoluto igual al de la positiva, alrededor de 1 v. En este caso la señal de entrada a la puerta puede se 0v o 1v y por eso el punto de cambio sigue a la mitad de camino es decir medio voltio, si la señal proveniente del flipflop pasa de 1v a 0v, entonces la salida de esta puerta NOR que ataca a las llaves de salida, toma el valor de la fuente negativa y activa de esa forma a la llave de la salida que está mas a la derecha. Veamos ahora una posible implementación de la función booleana OR:

Page 21: Aprendiendo Ltspice

Figura 11 En este caso las salidas de las llaves se han cableado en paralelo, de una simple ojeada, podemos ver que solo si A=B=0 entonces Y=0, en cualquier otro caso Y=1, que es precisamente un reflejo del comportamiento de la funcion OR. Sigamos acotando ahora algunos detalles acerca de los valores en los parámetros de todas estas llaves controladas por tensión, Ron=10 ohmios, si ponemos un valor bajo o nulo, seguramente tendremos problemas a la hora del ensayo, sucede que el cambio brusco de estado en la llave y las corrientes asociadas a la misma hace que el circuito al ser simulado no converja durante los cambios de estado o que lo haga lentamente y a duras penas, por otra parte en el mundo real estas llaves son transistores conuna resistencia de salida jamás nula, resumiendo Ron=10 ohmios, limita las bruscas corrientes instantáneas durante las transiciones estatales y es necesaria también para que el interruptor refleje algomejor a las características del dispositivo real, otro tanto se puede decir de Roff=1e8 o sea 100 Megaohmios, un valor que "desidealiza" al interruptor y se acerca mas al expresado por las corrientes de fuga de los transistores que están mimetizando. Observe las diferencias en ambos esquemas de los cableados tanto en las salidas, como en las entradas, con el objeto de reflejar la función booleana correspondiente a cada símbolo. Note que en ambos casos el resistor de 1 gigaohmio se coloca para evitar el problema de nodos flotantes o no referenciados al nodo 0 o común ( masa). Los valores de la capacidad de salida han sido disminuidos a 1 pF, para evitar posibles problemas en los estados de transición durante la simulación, además en ambos casos se aprovecha la posibilidad de declarar al necesario resistor pulldown como Rpar del capacitor lo que dejaal esquema mas limpio. ... si todo marcha bien ya tendremos tiempo luego para aumentar los valores dela capacidad... Veamos ahora como encarar el desarrollo de los comparadores, que son las primitivas mas criticas para simular, esta versión se hizo también con llaves controladas por tensión:

Page 22: Aprendiendo Ltspice

Figuras 12 y 13 De nuevo acá he recurrido al uso de un resistor pulldown de 10 kilohmios, el cual reduce en los tres casos mostrados el número de elementos activos ( las llaves controladas por tensión) a la mitad, el resistor para evitar nodos flotantes en las entradas de control del switch es de 100 megaohmios en este caso, ya que con tal valor el conjunto se comporta con mayor estabilidad durante la simulación.Ahora veamos la implementación del inversor digital o sea la función booleana de negación:

Page 23: Aprendiendo Ltspice

Figura 14 Observe el cambio en los valores de los parámetros que rigen el comportamiento de la llave Vh es casi nula ahora, de lo contrario el comparador acarrearía un gran error a causa de la inercia impuesta al comportamiento del interruptor, histéresis mediante. En este caso no se pudo disimular la resistencia de 10 kilohmios, como para OR y NOR, ya que el resistor obra como pullup.Con todos estos bloques esquemáticos y sus símbolos correspondientes, estamos ya en condiciones de plantear el subcircuito que modela al 555 con las primitivas Spice que usamos en este ejemplo: resistores, capacitores y llaves accionadas por diferencia de tensión: Si asignamos ahora un símbolo para este subcircuito ya lo podremos probar y ver como funciona, es lo que vamos a hacer con un circuito de prueba que involucra a diversos pines del 555 en su funcionamiento:

Figura 15 La primer cosa que notamos es que si corremos el circuito sin la fuente de reset, el mismo no corre o lohace a duras penas, en realidad si agregamos a la directiva de simulación .tran 0 4m, la opción exclusiva de Ltspice startup o la opción común a Spice uic, que evita el cálculo del punto de operaciónel subcircito funciona perfectamente; para no usar una opción privativa de Ltspice y además hacer que

Page 24: Aprendiendo Ltspice

el simulador si determine la polarización inicial del circuito, agregué a la fuente de prueba de Reset Vreset, una rampa de 10 us para que llegue a 12 voltios y luego que cerca de los 3 ms y 3.5 ms, pase a cero para ver el reset del 555 y luego vuelva a 12.; vuelven a aparecer a la derecha del esquemático, un montón de sentencias para medidas post simulación y que se encargan de calcular la frecuencia y el ciclo de trabajo de este multivibrador, que dependen de la posición de cada uno de los potenciómetros, arriba a la izquierda del diagrama. A tal fin el parámetro cursor se hace variar entre el 10% y el 90% del recorrido del potenciómetro nombrado en el dibujo como Duty y así se obtienen estos resultados del ciclo de trabajo a través del archivo SPICE Error Log ( recordemos que para verlo directamente en Ltspice debemos pulsar en el menú View y luego en el submenú que reza precisamente SPICE Error Log): Measurement: duty%step ton*frec*1001 10.0826%2 29.7721%3 50.008%4 71.2987%5 88.9776%Date: Mon Jun 08 12:51:15 2009Total elapsed time: 5.094 seconds.

También vemos que en total el simulador tardó casi un segundo por cada paso de simulación, lo cual noestá nada mal.Ahora vamos a extraer el subcircuito en formato de netlist para Spice y de tal manera podremos luego probarlo y ver como se comporta en otros simuladores, para ello volvemos a pinchar en el menú View, pero esta vez elegimos al submenú SPICE Netlist y nos desplegará esta información: * E:\Ltspice\LtSpiceIV_Plus_01_09\examples\Robertugo\555\Modelos\Previos\LtSpice\H4\Sw\EdnNew555&2DioPwm1.ascCt N005 0 10nC2 N008 0 10nD1 N007 N005 1N914D2 N005 N004 1N914Vcc N002 0 12v AC 0 0 Rser=1 Cpar=100uRd N002 N006 100kXDuty N003 N007 Out Pot rt=10k set={Cursor}XFreq N004 N003 N004 Pot rt=10k set=0XX1 0 N005 Out N001 N008 N005 N006 N002 555h4 params: 555H4Vreset N001 0 PWL(0 0 10u 12 2.99m 12 3m 0 3.499m 0 3m5 12) Rser=1Rpullup N002 N001 1k

* block symbol definitions.subckt 555h4 1 2 3 4 5 6 7 8R1 N1 1 5kR2 5 N1 5kR3 8 5 5kSds 1 7 N7 1 SdisSH 8 3 N6 1 SoutSL 3 1 1 N6 SoutR4 1 8 4kV1 V+ 1 1XX5 N4 N5 V+ V- N7XX6 N5 N4 V+ V- N6XX1 N1 2 V+ 1 N3 cpswXX2 6 5 V+ 1 N2 cpswXFlipFlop N2 N3 V+ 1 N5 N001 ffV2 1 V- 1XX4 4 V+ 1 N4 notswR4_1 4 1 1g.model Sdis Sw(Ron=10 Roff=1e8 Vt=.5 Vh=.4).model Sout Sw(Ron=5 Roff=1e6 Vt=0 Vh=.8).ends 555h4

.subckt orh A B V+ V- YS1 Y V+ A 0 SorS2 V+ Y B 0 Sor

Page 25: Aprendiendo Ltspice

RabOr B A 1gCor Y V- 1p Rpar=10k.model Sor Sw(Ron=10 Roff=1e8 Vt=.5 Vh=.4).ends orh

.subckt norh A B V+ V- YS1 V+ N001 V+ A SnorS2 N001 Y V+ B SnorRabNor B A 1e8Cnor Y V- 1p Rpar=10k.model Snor Sw (Ron=10 Roff=1e8 Vt=.5 Vh=.4).ends norh

.subckt cpsw In+ In- V+ 1 OutS1 V+ Out In+ In- ScpRin+- In- In+ 1e8R1 Out 1 10k.model Scp Sw(Ron=1 Roff=1e8 Vt=0 Vh=1m).ends cpsw

.subckt ff S R V+ 1 Q _QR1 S R 1gXX1 S Q V+ 1 _Q norh0 params: NorH0XX2 _Q R V+ 1 Q norh0 params: NorH0.ends ff

.subckt notsw in V+ 1 _QSwInv _Q 1 in 1 SrstCnot _Q 1 1pRnot _Q V+ 10kR1 in 1 1g.model Srst Sw(Ron=10 Roff=1e7 Vt=.5 Vh=1m).ends notsw

.subckt norh0 A B V+ 1 YS1 V+ N001 V+ A SwNorS2 N001 Y V+ B SwNorRabNor B A 1gCnor Y 1 1p Rpar=10k.MODEL SwNor Sw (VT=.5 VH=.4 RON=10 ROFF=1e8).ends norh0

.model D D

.lib C:\Archivos de programa\LTC\LTspiceIV\lib\cmp\standard.dio

.tran 4m

.params: Vdd 12 Ronx=.1

.step param Cursor 0.1 0.9 .2

.meas tran ta FIND time WHEN V(out)={Vdd/2} td=.1m rise=1

.meas tran tb FIND time WHEN V(out)={Vdd/2} td=.1m rise=11

.meas tran Frec PARAM 10/(tb-ta)

.Meas tran Tc FIND time WHEN V(Out)={Vdd/2} td=.1m fall=1

.Meas tran Td FIND time WHEN V(Out)={Vdd/2} td=.1m fall=2

.Meas tran T1 Param (Tc-Ta)

.Meas tran T2 Param (Td-Ta)

.Meas tran Ton Param If (T1>0, T1, T2)

.Meas tran Duty% Param Ton*Frec*100

.lib pote.lib

.backanno

.end

Aclaro que este trabajo fue hecho hace ya casi un lustro, cuando recién conocía a Ltspice y algunas cositas han cambiado desde entonces, vamos ahora a aislar el subcircuito del 555 y a limpiarlo de información irrelevante a los fines de simulación en otros programas; a tal efecto vamos a copiar el cuerpo principal de texto que define al subcircuito:

.subckt 555h4 1 2 3 4 5 6 7 8R1 N1 1 5kR2 5 N1 5kR3 8 5 5kSds 1 7 N7 1 SdisSH 8 3 N6 1 SoutSL 3 1 1 N6 SoutR4 1 8 4kV1 V+ 1 1XX5 N4 N5 V+ V- N7XX6 N5 N4 V+ V- N6XX1 N1 2 V+ 1 N3 cpswXX2 6 5 V+ 1 N2 cpswXFlipFlop N2 N3 V+ 1 N5 N001 ffV2 1 V- 1

Page 26: Aprendiendo Ltspice

XX4 4 V+ 1 N4 notswR4_1 4 1 1g.model Sdis Sw(Ron=10 Roff=1e8 Vt=.5 Vh=.4).model Sout Sw(Ron=5 Roff=1e6 Vt=0 Vh=.8).ends 555h4* Faltan los subcircuitos intermos que desarrollamos previamente para que funcione, o sea:

.subckt orh A B V+ V- YS1 Y V+ A 0 SorS2 V+ Y B 0 SorRabOr B A 1gCor Y V- 1p Rpar=10k.model Sor Sw(Ron=10 Roff=1e8 Vt=.5 Vh=.4).ends orh

.subckt norh A B V+ V- YS1 V+ N001 V+ A SnorS2 N001 Y V+ B SnorRabNor B A 1e8Cnor Y V- 1p Rpar=10k.model Snor Sw (Ron=10 Roff=1e8 Vt=.5 Vh=.4).ends norh

.subckt cpsw In+ In- V+ 1 OutS1 V+ Out In+ In- ScpRin+- In- In+ 1e8R1 Out 1 10k.model Scp Sw(Ron=1 Roff=1e8 Vt=0 Vh=1m).ends cpsw

.subckt ff S R V+ 1 Q _QR1 S R 1gXX1 S Q V+ 1 _Q norh0XX2 _Q R V+ 1 Q norh0.ends ff

.subckt notsw in V+ 1 _QSwInv _Q 1 in 1 SrstCnot _Q 1 1pRnot _Q V+ 10kR1 in 1 1g.model Srst Sw(Ron=10 Roff=1e7 Vt=.5 Vh=1m).ends notsw

.subckt norh0 A B V+ 1 YS1 V+ N001 V+ A SwNorS2 N001 Y V+ B SwNorRabNor B A 1gCnor Y 1 1p Rpar=10k.MODEL SwNor Sw (VT=.5 VH=.4 RON=10 ROFF=1e8).ends norh0

Vamos ahora a comenzar a plantear el desarrollo de los comparadores en términos de fuentes B:

Figura 16 Como vemos la primera diferencia es que el bloque de comparador así construido no necesita

Page 27: Aprendiendo Ltspice

alimentación externa como los anteriores, la fuente B se hizo basada en una sencilla tabla de valores y su interpretación es casi evidente: dada un diferencia de potencial entre sus nodos de entrada in+ e in- de -5mV o menor, el valor de la salida es cero, si esta diferencia en las entradas pasa a ser positiva e igual o mayor a 5 mV, entonces la salida entrega 1 voltio, note la declaración de los parametros para facilitar la convergencia de la simulación tripdv y tripdt y que limitan la velocidad de cambio en la salida de nuestro comparador sintético a 1v en 100 ns. Para usarlo deberemos modificar el símbolo que usábamos del comparador y quitarle los pines de alimentación, grabarlo luego con el mismo nombre del esquemático del comparador hecho en base a la fuente B que vemos arriba y en la misma carpeta que éste. con todo esto podemos presentar ya nuestro segundo modelo esquemático jerárquico del 555:

Figura 17

Figuras 18 y 19

Desde este punto de vista, lo único apreciable en " el juego de las diferencias" con el diagrama anterior del 555, se evidencia en el detalle de que los comparadores no tienen ya las líneas de alimentación que en el anterior eran imprescindibles.

Abstraere: Con lo que vamos viendo y sabiendo, es el momento de hacer un cambio de rumbo radical e iniciar unaserie de subcircuitos que partiendo de la descripción funcional de la hoja de datos, como los que estamos viendo hasta acá, hagan realidad una capa de abstracción nueva y superior, que permita la formulación del subcircuito en términos aún mas sintéticos que los vistos hasta ahora. Para ello vamos a utilizar la potencia computacional de las fuentes B en forma intensa, una primera aproximación esquemática al nuevo encuadre del problema y que nos sirve de punto de partida es esta:

Page 28: Aprendiendo Ltspice

En este primer intento, lo que hice es transformar los bloques funcionales, para que puedan expresarse mediante fuentes B, así de izquierda a derecha contamos a Bnor, que viene a desempeñar la misma tarea que antes estaba a cargo de la puerta nor que excita a la salida del 555, BFfa representa a la parte del fliflop que proporciona la salida negada -Q, BFfb hace lo mismo pero con la salida verdadera Q, la fuente Brst cumple funciones similares a las que antes estaban a cargo del inversor, Bor desarrolla el mismo trabajo que hacía la puerta OR que gobernaba al terminal 7 de descarga, en tanto que los comparadores están ahora implementados en Bcp1 y Bcp2, su formulación sintética resulta mucho mas concisa que la dada mediante tabla en el comparador del ejemplo anterior en cuanto a las salidas 3 y 7 del 555, siguen sin cambios respecto a la versión anterior. Los resistores de 1 gigaohmio se ponen a masa para evitar nodos flotantes, cuendo ello es necesario.

Veamos ahora un paso evolutivo en la simplificación de este subcircuito y que conlleva a la reducción de una de las fuentes B, con lo que el sistema comienza a condensarse bajo una lógica de conveniente síntesis abstractiva:

Figura 20 El truco está en la fuente BfOr, que ahora realiza ella sola las tareas de gobernar al interuptor controlado para la descarga del dispositivo por el pin 7 y además hace tanbién la función de la mitad dela báscula SR, que provee de la salida Q.

Siguiendo por este maravilloso sendero simplificativo de la abstracción y aplicando tiempo, ganas e ingenio se llega a una de las versiones finales de nuestro 555:

Page 29: Aprendiendo Ltspice

Como se puede ver, hemos mejorado de diez primitivas activas a siete, eliminando sin mella en las cualidades del 555 a la fuente Bnor que antes gobernaba a la salida del 555, ahora BFfa hace este trabajo directamente, también se ha eliminado la fuente que se encargaba del reset del dispositivo; por supuesto que las expresiones que rigen a cada uno de estos generadores arbitrarios maravillosos que son las fuentes B también se ha cambiado y pulido convenientemente...

Observe el uso recurrente de la función de paso unidad u (x), cuyo operador u aparece en cada una de las fuentes B, a propósito Bcp1 y Bcp2 siguen siendo los comparadores del 555 ; el flipflop SR, sigue reducido a dos fuentes B: BFfa que excita a las llaves de salida y BfOr que hace lo propio con el switch de descarga y además es la encargada de resetear al dispositivo, pues monitorea el valor del pin de reset o v(4), esta fuente es .la que mayor trabajo computacional acarrea, ya que efectúa operaciones con los datos aportados por tres nodos del circuito, en tanto que las otras solo lo hacen con dos, el tenorde las operaciones es similar, ya que además del operador unario, el resto de las operaciones involucradas para reflejar el funcionamiento del 555 son sumas algebraícas. La netlist de este subcircuito viene a quedar así: .subckt 555_4B3Sw 1 2 3 4 5 6 7 8r1 ref33 1 5kr2 5 ref33 5kr3 8 5 5kSds 1 7 _Q 1 SdisSH 8 3 Q 1 SoutSL 3 1 1 Q Soutr4 8 1 4kR2_1 2 1 1gBcp1 S 1 V=u(V(6,5))Bcp2 R 1 V=u(V(ref33,2))BfOr _Q 1 V=.9999-((V(Q)+.5)+V(R))+1-u(v(4)-.5)BFfa Q 1 V=.5-u(V(S)+V(_Q))R6_1 6 1 1gR4_1 4 1 1g.model Sdis Sw(Ron=10 Roff=1g Vt=.75 Vh=.2).model Sout Sw(Ron=5 Roff=1e6 Vt=0 Vh=.4).ends

Que condensa al 555 en menos de 20 líneas de funciones computacionales sencillas, potentes y rápidas,

Page 30: Aprendiendo Ltspice

empleando esencialmente para ello y como elementos de circuito activos a cuatro fuentes B y tres llaves controladas por tensión; es decir que con tan solo siete elementos activos que a la vez son primitivas Spice logramos modelar un subcircuito aún mas abstracto y eficiente que los basados en el diagrama de bloques funcionales de las hojas de datos. Y aunque parezca increíble, el sistema es susceptible de una simplificación mas todavía y sin perder funcionalidad alguna ( al respecto el sistema puede simplificarse mucho mas si se descartan las funciones de Reset y Vc que no se emplean en la gran mayoría de las aplicaciones corrientes del 555), el sistema completo pero con menos primitivas de elementos de circuito activos Spice es este:

Figura 21

Como puede verse, solo cuenta con cinco fuentes B y un solo switch controlado por voltaje, con lo quehemos bajado un elemento activo de la cuenta...! Note el uso del resistor Rout, para dar algo de resistencia y limitar la corriente de la salida del 555, que de otro modo podría ser absurdamente infinita, al no tener ninguna resistencia interna la fuente BOut. Observe que BOut actúa como un conversor de niveles, multiplicando la tensión del nodo Q del flipflop por el valor de tensión presente en el nodo 8, que corresponde al pin de alimentación del 555, de esta forma se convierten los valores deQ, que se lternan entre cero y un voltio a valores comprendidos entre cero y la tensión de alimentación del integrado, su carácter de fuente de tensión le posibilita suministrar o drenar corriente por la salida, eliminando así la necesidad del conjunto de dos llaves anteriores. Podría pensarse en una solución similar para quitar al switch de descarga, sin embargo la misma no es viable dado que al tratarse de unafuente, la misma recargará al capacitor de descarga, cuando se desarrolle tensión en sus bornes, cosa que no ocurre con la llave de descarga que en la misma situación temporal se encontrará abierta.Este es su netlist: .subckt 555_5B&Sw 1 2 3 4 5 6 7 8r1 ref33 1 5kr2 5 ref33 5kr3 5 8 5kSds 1 7 _Q 1 Disr4 8 1 4kR2_1 1 2 1gBcp1 S 1 V=u(V(6,5))Bcp2 R 1 V=u (V(ref33,2))BFfa Q 1 V=1-u(V(S)+V(_Q))

Page 31: Aprendiendo Ltspice

R6_1 6 1 1gBffOr _Q 1 V=.999999-(V(Q)+V(R))+1-u(v(4)-.5)BOut Nout 1 V=V(Q)*V(8)Rout 3 Nout 5R4_1 4 1 1g.model Dis Sw(Ron=10 Roff=1g Vt=.75 Vh=.2).ends

Si cuentan, verán que este subcircito describe al 555 con la misma funcionalidad que el anterior, pero con un renglón menos, debido al elemento activo quitado.

Hablaré ahora de r4 de 4 kilohmios y que junto al divisor resistivo de entrada formado por r1, r2 y r3 determinan la corriente de reposo del dispositivo, de unos pocos miliamperios, hasta el circuito anteriorque tenía su salida hecha en base a llaves que conectaban al pin 3 de salida ya sea a la fuente externa dealimentación o a masa, una medición de corriente en el pin 8 de alimentación reflejaba a la corriente dereposo mas la corriente que pasaba por la salida. con esta nueva variación hemos perdido la posibilidad de reflejar en el pin 8, la circulación de corriente a través del 555, solo registrará la corriente de repososo y no la de la salida que ahora es provista directamente por BOut; para corregir este hecho y hacer que en el pin de alimentación se refleje toda la corriente que atraviesa por el dispositivo hay que hacer lo siguiente:

Figura 22 Y con esto la corriente a través del dispositivo es fielmente reflejada en su pin de alimentación, note que a la expresión que define a BOut ha debido agregársele la resta de V(8), puesto que como ahora está su borne negativo conectado a este pin, deberemos restarle la tensión de desplazamiento dada por la fuente externa de alimentación, para que el generador "ponga" en su salida, los mismos valores que producía cuando su borne negativo estaba a masa, el precio a pagar por el detalle es una ínfima pérdiidaen la performance de este subcircuito en relación al anterior, tan pequeña que luego de varias medidas puedo asegurar que en el peor de los casos es a lo sumo de solo un 1%.. Bueno gente, este subcircuito ha quedado concluído y las únicas mejoras posibles son la inclusión en el modelado del mismo de los parámetros tripdv y tripdt, que seguramente lo ralentizarán un poco y harán su uso algo mas complicado, pero lograrán a cambio que las formas de onda entregadas en cualquier caso de empleo cuadren con la realidad.Otro ejercicio interesante será recrear a partir de esta síntesis del 555 a un subcircuito expresado en el modo de bloques funcionales; quienes cuenten con el entusiasmo para hacer todas estas mejoras sean bienvenidos a encararlas y publicarlas, cuenten conmigo para cualquier ayuda....! Si el tiempo me lo

Page 32: Aprendiendo Ltspice

permite haré y publicaré las reformas en el futuro. Netlist:.subckt 555_5B&Sw 1 2 3 4 5 6 7 8r1 ref33 1 5kr2 5 ref33 5kr3 5 8 5kSds 1 7 _Q 1 Disr4 8 1 4kR2_1 1 2 1gBcp1 S 1 V=u(V(6,5))Bcp2 R 1 V=u (V(ref33,2))BFfa Q 1 V=1-u(V(S)+V(_Q))R6_1 6 1 1gBffOr _Q 1 V=1-(V(Q)+V(R))+1-u(v(4)-.5)BOut Nout 8 V=(V(Q)*V(8))-V(8)Rout 3 Nout 5R4_1 4 1 1g.model Dis Sw(Ron=10 Roff=1g Vt=.5).ends

Ahora vamos a reunir en un solo archivo de texto a todos los subcircuitos del 555; para llegar a buen puerto será necesario llamar a cada versión con nombres diferentes y luego guardar esta " colección de 555's" como un archivo de librería Spice, por ejemplo Timers.lib. Por último desarrollaremos un nuevo símbolo que permita utilizar a cualquiera de los subcircuitos del 555 e intercambiarlos para compararlos con un par de clics de ratón.

Para comenzar con el símbolo, podemos abrir uno ya existente con el editor de símbolos, adaptarlo a las nuevas necesidades y luego guardarlo con otro nombre. Lo primero que debemos hacer luego de abierto el símbolo para su edición es abrir el editor de atributos de símbolos con Ctrl y A; hecho esto enSynbol Type, arriba de todo, ponemos Cell, luego en prefix escribimos X, en Spice model debemos poner el nombre del primer subcircuito que figure en la librería que armamos antes y en Model File escribimos el nombre del archivo con la librería de dispositivos, en este caso Timers.lib :

Page 33: Aprendiendo Ltspice

Figura 23 Pulsamos en el botón OK y finalmente pulsamos con el botón secundario del ratón sobre los pines o cuadraditos rojos del símbolo, empezando por la pata 1 o Gnd, escribimos el nombre o etiqueta del terminal, debiendo corresponder el orden natural de cuenta de los pines con el número asignado en la netlist, para Gnd 1, Trig 2, Out 3, Rst 4, Ctrl 5, Thres 6, Disc 7 y Vcc 8; veamos una muestra con el primer paso de esta secuencia:

Page 34: Aprendiendo Ltspice

Figura 24 Debemos también alinear convenientemente las etiquetas de texto que denominan a los pines del dispositivo, para ello jueguen un poco por prueba y error con las cuatro opciones de Pin Label Justification. El nombre que se ve en el medio es la etiqueta del dispositivo y solo se usa para ser mostrado en los esquemáticos donde se use el símbolo y si pinchamos sobre el con el botón secundario del ratón, nos debe salir el cuadro que identifica al texto del símbolo y una sencilla forma de alinearlo o justificarlo:

Figura 25 Finalmente existe otro editor dentro del editor de símbolos, éste se abre con la secuencia de teclas Ctrl y W, y sirve para consignar que valores o parámetros de instancia del símbolo, deben ser desplegados cuando se lo use dentro de un esquemático, si les gusta como está dejenlo así y si no prueben a conocerlo, que no es peligroso...!

Guardamos el símbolo con el nombre 555_All.sym, en el subdirectorio del directorio de instalación de Ltspice sym, a la librería la guardamos en el subdirectorio sub y ya podemos probar y usar los modelos,como si hubieran venido " de fábrica" ! Ahora vamos a detallar los resultados en la simulación de los diversos subcircuitos del 555, en un par de aplicaciones, la prueba se hizo en una PC Athlon XP de 1500 Mhz, con Linux, es decir que corro Ltspice bajo Wine en Linux; el primer ejemplo es un conocido nuestro, solo que ahora cuenta con el símbolo universal de 555 que acabamos de realizar, si pulsamos con el botón secundario del ratón sobreel símbolo del circuito integrado 555_ALL, se abre la:ventana del editor de atributos de componentes, con la subcategoría Spice Model ya seleccionada, adonde podemos elegir el modelo de nuestra preferencia como se ve aquí:

Page 35: Aprendiendo Ltspice

Figura 26 Como vemos es muy sencillo intercambiar de modelos y evaluarlos con Ltspice, ahora vamos a consignar los resultados de los diversos modelos que estudiamos, desarrollamos y de algunos otros mas... En la librería se han agrupado convenientemente algunas combinaciones subcircuitales, para poder simular también al menos conocido 556, que en su interior reune a dos 555.

Haré un comentario acerca de cada uno de los subcircuitos de la librería Timers.lib . El puesto en primer lugar es uno llamado 555sw , el nombre indica que es una implementación basada en llaves controladas por tensión y es la última versión de nuestro primer desarrollo en tal sentido, es decir respetando la descripción del diagrama de bloques funcionales de las hojas de datos, pero agrupados todos en un esquemático plano o sin jerarquías, lo cual implica que en la netlist no habrá subcircuitos internos, como los que se generan a partir de esquemáticos jerárquicos, el resultado esquemático volcado a la netlist produce algunas líneas menos de código en la netlist que el del primer intento, este es el circuito esquemático plano del 555sw:

Page 36: Aprendiendo Ltspice

Figura 27 La principal mejora que se observa es la corrección de la ligera disimilitud de las fuentes de +1 v y -1 v,que en los primeros modelos diferían, ya que una era de 1.1 v y la otra de 1.2 v; las capacitancias a las salidas de las puertas se han aumentado por cinco, excepto en la puerta inversora donde solo se ha duplicado, la resistencia Roff del modelo de llave para la salida se aumentó a 1 G,otro detalle es que se han hecho ligeramente diferentes a las resistencias pulldown de las puertas que forman al flipflop, para evitar problemas de sesgo y carrera, que dificultan o impiden la simulación, así se consigue un estado definido y rápido durante el arranque, el resto de las diferencias con el anterior modelo basado en llavesse debe solo a la forma de representación esquemática, que en este caso es plana o sin jerarquías, como ya dije... La netlist es esta:

.Subckt 555sw 1 2 3 4 5 6 7 8 r1 ref33 1 5kr2 5 ref33 5kr3 8 5 5kSdis 1 7 Disdrv 1 StdSH 8 3 drv 1 SoutSL 3 1 1 drv Soutr4 1 8 4kVp V+ 1 1Vn 1 V- 1Sca V+ S 6 5 ScpR6_1 6 1 1g

Page 37: Aprendiendo Ltspice

Scb V+ R ref33 2 ScpR2_1 2 1 1gSrst halt 1 4 1 StdRnot halt V+ 10kSnora V+ A V+ Q StdSnorb A drv V+ halt StdSnorc V+ B V+ S StdSnord B _Q V+ Q StdSnore V+ C V+ _Q StdSnorf C Q V+ R StdSora Disdrv V+ halt 1 StdSorb V+ Disdrv Q 1 StdRor Disdrv V- 10kRnor1 drv V- 10kRnor2 _Q 1 10kRnor3 Q 1 9k9Cor Disdrv V- 5pCnot halt 1 2pCnor1 drv V- 5pCnor2 _Q 1 5pCnor3 Q 1 5pR4_1 4 1 1gRcpa S 1 10kRcpb R 1 10k.model Std Sw(Ron=10 Roff=1g Vt=.5 Vh=.4 ).model Sout Sw(Ron=5 Roff=1e6 Vt=0 Vh=.8).model Scp Sw(Ron=1 Roff=1g Vt=0 Vh=1m).ends

Con respecto al devenir del modelo que incorporaba fuentes B, para modelar los comparadores del 555,también ha evolucionado por un camino similar al que acabamos de ver, el nombre del subcircuito es 555bc, por behavioral comparator, veámoslo para ver como ha quedado:

Figura 28 La principal diferencia respecto del circuito anterior, son los comparadores que han evolucionado al

Page 38: Aprendiendo Ltspice

punto de tener expresiones idénticas a los modelos posteriores, de hecho estos comparadores son la base de los modelos de mas alta abstracción que ya vimos.

El netlist de este subcircuito del 555 es: .Subckt 555bc 1 2 3 4 5 6 7 8r1 ref33 1 5kr2 5 ref33 5kr3 8 5 5kSdis 1 7 Disdrv 1 StdSH 8 3 drv 1 SoutSL 3 1 1 drv Soutr4 1 8 4kVp V+ 1 1Vn 1 V- 1R2_1 2 1 1gSrst halt 1 4 1 StdRnot halt V+ 10kSnora V+ A V+ Q StdSnorb A drv V+ halt StdSnorc V+ B V+ S StdSnord B _Q V+ Q StdSnore V+ C V+ _Q StdSnorf C Q V+ R StdSora Disdrv V+ halt 1 StdSorb V+ Disdrv Q 1 StdRor Disdrv V- 10kRnor1 drv V- 10kRnor2 _Q 1 10kRnor3 Q 1 9k9Cor Disdrv V- 5pCnot halt 1 2pCnor1 drv V- 5pCnor2 _Q 1 5pCnor3 Q 1 5pR4_1 4 1 1gR6_1 6 1 1gBcp1 S 1 V=u(V(6,5))Bcp2 R 1 V=u (V(ref33,2)).model Std Sw(Ron=10 Roff=1g Vt=.5 Vh=.4 ).model Sout Sw(Ron=5 Roff=1e6 Vt=0 Vh=.8).ends

Los subcircuitos restantes que integran la librería son 5b1sw555, que es el que vimos como ejemplo final de alta abstracción, 4b3sw555 fue estudiado como primer ejemplo de alta abstracción, NE555 es el nombre del subcircuito que estudiamos en el primer ejemplo y que es el modelo nativo exclusivo de Ltspice, viene con el programa y fué escrito nada mas y nada menos que por Mike Engelhardt, el autor de Ltspice., en función de éste elaboré los antecesores de 555sw y 555bc, todos con primitivas comunes a cualquier simulador basado en Spice; en la lista le sigue el modelo llamado TLC555 y que también proviene de Linear Technolgy, esta vez de la mano de su autor, Helmut Sennewald quen se basa en el modelo de Engelhardt, para modelar un dispositivo mas cercano a la versión CMOS del 555, entre las mejoras aportadas para la simulación de la versión CMOS, se cita el umbral de Reset, establecido en 1.1 v, la resistencia Ron de los switches controlados por tensión, las mismas se han llevado a cabo consultando las hojas de datos de Texas y National, el autor aclara que los valores se obtienen con una fórmula de aproximación, que parte del valor de Ron a 15 v, que es lo único que consignan al respecto las datasheets la serie de tres resistores iguales en las entradas del 555, se han subido de 5 K, a 100 K , que es el valor correspondiente para la versión CMOS, R7 se ha cambiado a 16 K, para que refleje el consumo real del dispositivo, la fuente de corriente I1 y el diodo asociado al

Page 39: Aprendiendo Ltspice

pin de reset se han elimimado; este modelo necesita que se le provean dos parámetros: VDD y RONX; para seguir con el listado de subcircuitos en la biblioteca Timers.lib, le toca el turno ahora al llamado ICM7555 y es una transcripción del diagrama esquemático de la versión CMOS, dado en las hojas de datos; le sigue el nombrado LM555, otra transcripción hecha por quien esto escribe, a nivel de semiconductor, pero esta vez de la versión bipolar de Thomson y que ya vimos en el segundo ejemplo de este estudio, finaliza la biblioteca con siete subcircitos del 556, basados en los modelos de mejor performance. Ahora reflejaremos la serie de simulaciones para comparar los modelos; observe que la fuente de alimentación se ha modelado como una fuente que arranca en cero y sube en una corta rampa de 10 us hasta llegar a su valor nominal; esto se hace para evitar directivas de simulación únicas de Ltspice como Startup y / o también directivas como UIC, que si bien son compatibles con Spice, solo se usarán si no queda otro remedio y en tal caso se informará al respecto, note que el nombre en la parte inferior del símbolo del circito integrado 555_ALL, se halla el nombre del modelo que lo está representando, comencemos pues con el mismo orden ya dado por la librería:

Se trata de un circuito de multivibrador publicado en EDN, ver referencia al circuito original en Ideas ForDesign “A New Stable RC Pulse Generator” Feb 8, 1999, p.104-106, con la cualidad de variación independiente del ciclo de trabajo y la frecuencia, solo se varía en esta tabla la posición del control de duty cycle; entre el 10% de su recorrido y hasta el 90 % del mismo en incrementos de 20% para cada paso de simulación; debiendo corresponder idealmente a ciclos de trabajo del 10%, 30%, 50%, 70%, 90%y con leve variación en la frecuencia; el tiempo de simulación para cada paso es 4 ms; el único cambio

Page 40: Aprendiendo Ltspice

hecho en la configuración por defecto del simulador gratuito Ltspice es Trtol que se ha subido del valor 1 a 7; algunos subcircuitos necesitan de parámetros especiales para correr convenientemente, otros corren mejor con la asignación de un máximo paso o ventana de tiempo al simulador; en todos los casos se detallan en la tabla tales situaciones. Los valores de tiempo total de simulación de cada ejemplo son promedios de series de 10 muestras. Los últimos 2 casos detallan la performance de los 2 mejores subcircuitos basados en descripciones a nivel de semiconductor; siendo ésta muy inferior a la conseguida con los subcircuitos hechos en base al comportamiento del 555. En el siguiente esquema semuestra el circuito empleado para obtener la comparativa de datos de la tabla; el mismo se muestra en las condiciones para simular la serie de datos B del tipo 5b1sw555, pulsando en el símbolo del 555 y cambiando el subcircuito a 4b3sw555, se obtiene la configuración para simular la serie B de este tipo; en todos los otros casos el parámetro {tmp/8k}, debe borrarse de la directiva de simulación; los parámetros Ronx=.1 y VDD=12 son imprescindibles solo para simular el subcircuito TLC555 y VDD se usa además en las sentencias de medida MEASURE, que proveen la información tabulada. El ordenador anfitrión de esta compulsa es una M7VIGPRO-D; con una memoria de 512 Mhz y un microprocesador Athlon XP 1500 Mhz; corriendo como sistema operativo a Slitaz Linux 2, con Kernel 2.6.30.4 compilado asu medida; en el mismo se corre el software de simulación Ltspice IV 4.02x gracias al excelente y transparente oficio de Wine 1.0.1. Para obtener los resultados promediados de los tiempos de simulación de cada caso se ha usado Galculator 1.3.4, que viene con Slitaz por defecto

Page 41: Aprendiendo Ltspice

Criterios de selección:

Contar con más de un subcircuito para un dispositivo y poderlo cambiar con un clic del ratón es siempre una ventaja.

Page 42: Aprendiendo Ltspice

La elección de un determinado subcircuito siempre vendrá de la mano de las necesidades del proyecto a desarrollar; los ítems a tener en cuenta son: exactitud, velocidad, estabilidad, portabilidad hacia otros simuladores y su carácter de público y abierto versus privado y cerrado.

Como vemos de los subcircuitos basados en el esquema circuital, el del LM555, tiene mas del doble de velocidad para correr que el del IC7555, sin embargo ambos son muy lentos, comparados con los subcircuitos modelados en base al comportamiento,

Analizando un poco los resultados y tomando como referencia al subcircuito NE555, proporcionado por Linear para su simulador Ltspice, vemos que los mas rápidos son 5b1sw55 y 4b3sw555, sin embargo pagan el costo de una pérdida de precisión en la frecuencia generada y en sus formas de onda; para solucionar este detalle, podemos declarar en la simulación, que el máximo paso de tiempo permitido ha de ser un valor hasta 10000 veces menor que el intervalo de tiempo en que se simulará el circuito; formas de ondas que cuadran con las reales del dispositivo se obtienen con valores al menos 2000 veces menores que el tiempo de simulación.

Manos a la Opus !

En este apartado probaremos los subcircuitos ya desarrollados del 555 en Spice Opus, otro simulador basado en Spice y precisaremos los pasos necesarios para llegar a buen puerto con este programa.

Lo primero que debemos hacer es modificar ligeramente nuestro circuito, para poder correrlo en Spice Opus; para ello en el editor esquemático de Ltspice abrimos el circuito y agregamos una resistencia de 1g en paralelo con Ct, esto debe hacerse ya que de lo contrario Spice Opus no simulará el circuito aduciendo que el nodo vivo de Ct está flotando...Otra modificación consiste en quitar el potenciómetro de frecuencia, ya que no se usa en nuestra simulación; los "measure" se han quitado también y el diagrama debe quedar entonces asi:

Como vemos hemos puesto una fuente de cc de 12 voltios y agregado la opción de simulación "startup"que luego será cambiada por su equivalente en Opus y hemos también puesto un tiempo fijo no paramétrico a la simulación.

Ahora vamos a extraer el subcircuito en formato de netlist para Spice y de tal manera podremos luego probarlo y ver como se comporta en Opus, para ello vamos a pinchar en el menú View, y luego elegimos el submenú SPICE Netlist que nos desplegará esta información:

Page 43: Aprendiendo Ltspice

C1 N003 0 10n V=50vC2 N006 0 10n V=50 Irms=22m Rser=3.9 MTBF=2000 Lser=0 ppPkg=1D1 N005 N003 1N914D2 N003 N002 1N914Vcc N001 0 12 AC 0 0 Rser=1 Cpar=100uR4 N001 N004 100kXDuty N002 N005 Out Pot rt=10k set={Cursor}XU1 0 N003 Out N001 N006 N003 N004 N001 LM555

.step param Cursor .1 .9 .2

.lib standard.dio

.lib pote.lib

.lib timers.lib

.tran 0 4m 0

.backanno

.end

Vamos ahora a quitar algunos aspectos que solo son relevantes para Ltspice y agregaremos el resistor RD de 1 gigaohmio en paralelo con Ct; el netlist quedará asi:*Ct N3 0 10nRD N3 0 1gD1 N5 N3 1N914D2 N3 N2 1N914Vcc N1 0 12R4 N1 N4 100kXd N2 N5 Out pote.param rtot=10k.param cursor=0.5Cbp N7 0 10n*X1 0 N4 Out N1 N6 N3 N4 N1 5b1sw555*X1 0 N4 Out N1 N6 N3 N4 N1 4b3sw555X1 0 N4 Out N1 N6 N3 N4 N1 555sw*X1 0 N4 Out N1 N6 N3 N4 N1 555bc*X1 0 N4 Out N1 N6 N3 N4 N1 LM555.model 1N914 D(Is=2.52n Rs=0.568 N=1.752 Cjo=4p M=.4 Tt=20n)

Observe que se ha dado directamente la definición del modelo del diodo 1n914 en la última línea de la netlist; se han quitado la resistencia en serie con la fuente de 1 ohmio y el capacitor en paralelo, aunquesi quisiéramos los podríamos poner en solo dos líneas de netlist, se agregó RD en la segunda línea del netlist en paralelo con Ct, como puede verse ambos se conectan al N3 y la masa o nodo 0. Otra modificación es el agregado de los parámetros del potenciómetro y los diversos nombres de los subcircuitos desarrollados, precedidos del signo *, para que Opus los tome como simples comentarios, solo uno ( el que vamos a usar en la prueba) no está comentado, en este caso es el 555sw; lo que hay que hacer ahora es guardar esta netlist como un archivo de extensión cir, por ejemplo: 555_Pwm_Edn.cirBien, hecho todo esto, debemos ahora crear otro archivo de texto en cual residan las órdenes referentes a la simulación ya que de esa forma se opera en Opus:

Prueba Circ PWM EDN.OPTIONS RELTOL=0.0025 ABSTOL=1n VNTOL=1e-005 TRTOL=7 ramptime=20us

.control tran 200n 4m *tran Tstep Tstop [Tstart [Tmax]]; Tstep<=200n es muy preciso

plot v(out) V(N3) xlabel X=Tiempo ylabel y=Tension title Linealizado rusage totiter accept rejected trantime

Page 44: Aprendiendo Ltspice

.endc

.INCLUDE Pote.sub

.INCLUDE timers.lib

.INCLUDE 555_Pwm_Edn.cir

.END

Y, lo guardamos con el mismo nombre que el anterior, pero precedido por el signo: _ En este caso _555_Pwm_Edn.cir

Observe que la primera línea son opciones propias y por defecto del simulador, de las que solo cambiamos TRTOL de 1 a 7 y agregamos ramptime=20us que produce el mismo efecto que la directiva de simulación startup, propia de Ltspice.Dentro de .control agregamos el tipo de análisis (tran), el máximo paso de tiempo de simulación permitido (200ns) y el tiempo total de simulación (4ms)Luego le indicamos dentro de la sentencia plot, que es lo que queremos graficar, en este caso la tensión en Ct y la tensión de salida V(N3) y V(out), le decimos que etiquete al eje de las abcisas con la palabra Tiempo y al eje de las ordenadas que lo etiquete con la palabra Tension; en la última parte de este archivo incluimos las librerías necesariaspara la simulación del circuito (Pote.sub y Timers.lib) e incluimos también a la netlist del circuito a simular (555_Pwm_Edn.cir), terminamos todo con la palabra clave .END, que le indica a opus el final de nuestra requisitoria.Abrimos ahora Opus y escribimos en su línea de comandos:source /camino/completo a/_555_Pwm_Edn.cir

Y lo que se obtiene es esto:

Si queremos ver con mas detalle el arranque del circuito, todo lo que haremos será editar el archivo donde se encuentran las directivas de simulación y control y bajamos el tiempo de 4 ms a 1ms, obteniendo lo siguiente en el visor gráfico de Opus:

Page 45: Aprendiendo Ltspice

Como vemos el ciclo de carga y descarga del capacitor Ct, se cumple entre el tercio y los dos tercios dela tensión de alimentación, como debe suceder en un 555 real, si contamos los ciclos desplegados en 1 ms de simulación, tendremos idea de la frecuencia, alrededor de 13 Khz, muy concordante con los datos obtenidos con el otro simulador.

Ahora podemos editar el otro archivo de texto con la netlist y comentar la línea que alega al 555_sw y descomentar, quitando el signo * alguna otra línea que refiera a otro modelo de 555, por ejemplo probemos con el subcircuito modelado a partir de una descripción a nivel de semiconductor como el LM555 y obtendremos esto:

Page 46: Aprendiendo Ltspice

Observe como ha subido el tiempo necesario para simular el circuito con este modelo, respecto del anterior, que era aprox 0.077 segundos ahora ha tardado algo mas de un segundo esto es mas de un orden de magnitud mas lento...!

Bueno, con esto concluye la comprobación de los subcircuitos del 555 obtenidos en Ltspice, para cualquier simulador Spice compatible, debo acotar que he comprobado la correcta funcionalidad de éstos en varios otros programas como B2spice, Pspice, Topspice y Microcap...entre otros y funcionan fluidamente en todos.

Adjuntos:

Los archivos 555_Pwm_Edn_Opus.cir , _555_Pwm_Edn_Opus.cir , pote.sub y la librería timers.lib, que se encuentran dentro del comprimido 7z son necesarios para la simulación en Spice Opus, en tantoque para Ltspice es necesario que pongan pote.sub y timers.lib dentro del subdirectorio sub, perteneciente a la carpeta de instalación de Ltspice, además deberán poner el archivo 555_all.sym dentro del subdirectorio sym; cumplido esto ya pueden darle el click a EdnNew555&2DioPwm1.asc para simularlo, recuerden que deben colocar el puntero del ratón sobre el símbolo del 555 y luego presionar el botón secundario, para así poder elegir y cambiar el modelo correspondiente a ensayar.

Agradeceré comentarios y sugerencias para mejorar esta guía, dirigidas a mi casilla de correo electrónico:

[email protected]