Buscar en este blog

sábado, 29 de mayo de 2010

Rectificador de media onda. Simulación con gschem + gnetlist + ngspice

El circuito que pretendo simular es un sencillo rectificador de media onda. La idea de fondo es aprender a incluir un archivo con un modelo SPICE de un componente. En este caso del diodo 1N4148.

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
Los colocamos como en la figura superior. Los podemos rotar seleccionando el componente y tecleando er (minúsculas!!!).

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
Esto nos provee de una fuente sinusoidal de 3 Volts de amplitud de pico y 10kHz de frecuencia.

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
Hacemos doble click en este último componente y lo editamos de la siguiente forma:
  • model-name: 1N4148
  • file: ../modelos_spice/1N4148.mod
En el atributo file deben poner la ruta al archivo "1N4148.mod" en su PC. En mi caso está en la carpeta "modelos_spice" que se encuentra un nivel por encima de la carpeta donde tengo el diagrama que estoy editando. Por eso uso los ".." que le indican que suba un nivel para encontrar la carpeta.

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:
  1. Click izquierdo en el cable que une la fuente con el diodo para seleccionarlo.
  2. Click derecho en el cable seleccionado.
  3. Add Attribute.
  4. Y seleccionamos escirbimos Name: netname y Value: Vin en el campo Value.
  5. 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
    Esto genera un archivo de nombre "output.net" que es lo que se conoce como una "netlist" del circuito.

    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.
    Esto ejecuta el programa ngspice y carga nuestra netlist "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

    3 comentarios:

    1. 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
    2. @Anónimo: Gracias por el comentario. Ahora creo que quedó un poco mejor lo de los nombres de los nodos.

      ResponderEliminar
    3. Este tutorial es excelente!

      Estoy tratando de usar un subcircuito, el procedimiento es parecido...
      Agradezco su respuesta metodosu@gmail.com

      ResponderEliminar