Circuito a utilizar creado con el software ngSpice de la suite gEDA
El circuito lo dibujo con el software gschem de la suite gEDA y la simulación la realizo con el software ngSpice de la misma suite. Esto es software libre para GNU/Linux.
Añadir componentes
Abrimos el gschem y presionando la tecla i (ojo, debe ser i minúscula) accedemos a un menú para elegir los componentes a utilizar.
Allí buscamos y añadimos los siguientes componentes:
- diode-1.sym
- resistor-1.sym
- vsin-1.sym
- gnd-1.sym
Luego unimos los componentes como en la figura. Para esto colocamos el cursor en una pata del componente, tecleamos n (letra ene minúscula) y arrastramos hacia la pata destino del otro componente y hacemos click en esa pata destino.
Con la tecla ESC podemos deseleccionar esta herramienta que permite unir cables. Con un click derecho nos permite movernos a otra pata sin generar un cable. Pero no deselecciona la herramienta.
Asignar atributos
Lo siguiente es darle valores a los componentes del circuito.
Resistencia: Hacemos doble click en la resistencia. Luego, en la parte inferior de la ventana que se abre, en la sección "Add Attribute" (añadir atributo), seleccionamos:
- Name: value
- Value: 10kOhm
- Visible: Show Value only
Añadir atributo "value" a una resistencia (click en la imagen para agrandar)
Clickeamos "Add" (añadir) y luego "Close".
De esta forma hemos dado el valor de 10Kohm a la resistencia R1 que oficiará de carga del circuito.
Fuente: Hacemos doble click en la fuente sinusoidal y en la etiqueta Value (no es necesario añadir una como en la resistencia) escribimos:
- sin 0Voff 3Vpico 10kHz
Luego salimos de este menú haciendo click en Close.
Diodo: En el caso del diodo le debemos asignar un modelo donde se describa su comportamiento. Este modelo estará descripto en un archivo de texto de extensión ".mod". Lo que debemos hacer es asociar ese archivo con el símbolo del diodo que tenemos en el esquema.
Primero hacemos doble click en el diodo. Similar a como hicimos con la resistencia, en la sección "Add Attribute", buscamos y añadimos un atributo "model-name" al cual le asignamos el valor 1N4148. Conviene a su vez seleccionar la opción "Show value only".
No olvidarse de hacer click en "Add" antes de hacer click en "Close".
Atributos del diodo (click para agrandar)
Este nombre debe ser el mismo nombre del modelo del diodo guardado en el archivo .mod que luego vamos a adjuntar.
Modelo del diodo
El modelo del diodo a utilizar estará en un archivo de nombre "1N4148.mod". Para incluir ese archivo hacemos lo siguiente:
Tecleamos i (letra i minúscula!!!) y en el menú seleccionamos el componente de nombre:
- spice-model-1.sym
- model-name: 1N4148
- file: ../modelos_spice/1N4148.mod
El archivo que estoy usando para modelar el diodo es un archivo de texto de nombre 1N4148.mod que tiene el siguiente contenido:
.model 1N4148 D(Is=5.84n N=1.94 Rs=.7017 Ikf=44.17m Xti=3 Eg=1.11 Cjo=.95p M=.55 Vj=.75 Fc=.5 Isr=11.07n Nr=2.088 Bv=100 Ibv=100u Tt=11.07n)
Ojo, va todo en una sola línea!!!.
Deben colocar este archivo en la carpeta que indicaron en el atributo "file" al crear el esquema. En mi caso la ruta era: "../modelos_spice/1N4148.mod".
Nodos: Para que al simular sea más fácil referirnos a los nodos, les añadimos un nombre.
Para el nodo que une la fuente con el diodo:
- Click izquierdo en el cable que une la fuente con el diodo para seleccionarlo.
- Click derecho en el cable seleccionado.
- Add Attribute.
- Y seleccionamos
escirbimosName: netname y Value: Vinen el campo Value. - Click en "Ok".
Hacemos lo mismo pero dándole el valor "Vout" al nodo que une el diodo con la resistencia.
Numerado
Debemos numerar los componentes que estamos usando. Para eso, en el menú superior del gschem seleccionamos Attributes -> Autonumber Text .
Allí colocamos los siguientes parámetros:
- Autonumber text in: Current page (autonumerar texto en: página actual)
- Overwrite existing numbers (sobreescribir numeración actual)
Autonumerado de componentes
Y le damos "Apply" y luego "Close".
Salvamos el esquema generado (File -> Save Page As) con el nombre "rectificador.sch" y si queremos ya podemos salir del gschem.
Archivo netlist
Antes de poder simular, debemos crear un archivo con terminación ".net" que le permite al simulador saber cómo está compuesto nuestro circuito. Es decir que traduce el esquema que creamos en algo entendible por el simulador.
Para esto uso el programa "gnetlist" también de la suite gEDA.
Abrimos una consola en la carpeta donde está nuestro archivo "rectificador.sch" y escribimos el comando:
- $ gnetlist -g spice-sdb rectificador.sch
Podemos abrir ese archivo con un editor de texto si queremos ver qué tiene adentro.
Atención: es muy importante escribir "spice-sdb". Cuando recién comencé a usar este programa no incluía el "-sdb" sino solamente: "$gnetlist -g spice rectificador.sch". Esto no tiraba error pero no incluía el modelo del diodo en el archivo output.net generado por lo que después sí me aparecía un error que decía que no podía encontrar el modelo del diodo.
Simulación con ngspice
Resta entonces simular el circuito rectificador que creamos. Para eso utilizo el software ngspice de la suite gEDA.
Abrimos una consola en la carpeta donde tenemos nuestra netlist "output.net" y escribimos:
- $ ngspice output.net.
Le pedimos al ngspice que realice un análisis temporal del comportamiento del circuito. Para eso escribimos el siguiente comando en el ngspice:
>tran 0.01us 0.2ms 0s
Esto le dice que realice el análisis desde 0 segundos hasta 0.2ms con pasos de 0.01us.
Una vez finalizado el análisis, le pedimos que grafique los resultados mediante el comando:
>plot Vin Vout
Donde Vin y Vout hacen referencia a los nodos que nombramos más arriba cuando creamos el esquema del circuito.
Gráfica del rectificador de media onda simulado con el software ngspice
Para salir del ngspice escribimos:
>exit
Si antes de graficar, escribimos los siguientes comandos del ngspice:
>set color0=rgb:f/f/f
> set color1=rgb:0/0/0
La gráfica la realiza con fondo blanco como la mostrada en este post.
Referencias
Buen tutorial, una pequeña modificación pues no me funcionaba la gráfica y fue el nombre de los nodos Vin y Vout, no agregarlos al campo value sino a netname y listo.
ResponderEliminar@Anónimo: Gracias por el comentario. Ahora creo que quedó un poco mejor lo de los nombres de los nodos.
ResponderEliminarEste tutorial es excelente!
ResponderEliminarEstoy tratando de usar un subcircuito, el procedimiento es parecido...
Agradezco su respuesta metodosu@gmail.com
Muy bueno el aporte
ResponderEliminar