Encapsulado de un circuito rectificador de onda - Wikipedia
Para utilizar un subcircuito en un circuito, necesitamos tener:- El modelo spice del subcircuito en un archivo de texto. Este archivo se puede conseguir en internet o se puede dibujar en "gschem" y luego generar el .net mediante "gnetlist"
- Símbolo de "gschem" para el subcircuito
En este post voy a dibujar el subcircuito en gschem para luego generar el modelo spice del mismo mediante "gnetlist".
Abrimos "gschem" y dibujamos el subcircuito deseado. Yo voy a dibujar cuatro diodos confromando un rectificador de onda completa:
Dibujo parcial del subcircuito en "gschem"
En este caso como los diodos necesitan un modelo, se puede ver que le añadí a cada uno un atributo "model-name" con un valor "D1N4007" y luego añadí el componente "spice-model-1.sym" para indicarle donde está el archivo con ese modelo (atributo file). Pero eso depende de como sea el subcircuito que quieran crear.
Para ver como añadir el modelo de un diodo, pueden ver uno de los posts anteriores.
Hasta acá es un circuito como cualquier otro. Si guardamos este archivo y generamos su netlist mediante "gnetlist", este no lo va a reconocer como un subcircuito y va a generar un netlist "normal".
Para que "gnetlist" reconozca que el circuito dibujado correpsonde a un subcircuito, hay que añadir los siguientes componentes al dibujo:
- Un componente "spice-subcircuit-LL-1.sym" a cuyo atributo "model-name" le doy el valor "rectificador". Este valor será el nombre del subcircuito que voy a crear.
- Luego, para indicar los pines del subcircuito, añado un elemento "spice-subcircuit-IO-1.sym" por cada uno de ellos y a sus atributos "refdes" les doy como valor el número deseado para cada pin.
Dibujo final del subcircuito en "gschem"
Los pines de IO del subcircuito se deben numerar para que coincidan con el atributo "pinseq" de cada pin del símbolo de gschem que voy a crear más adelante. Por ahora numerenlos como quieran.
Guardo este esquema como "sub_rect.sch" y cierro el gschem (el nombre con el que se lo guarda puede ser cualquiera).
Crear el netlist del subcircuito
Ahora lo que hay que hacer es generar el netlist del subcircuito anterior. Esto se hace de la misma forma que cuando generamos un netlist de un esquema normal. Es decir que abro una línea de comandos en la misma carpeta donde tengo guardado el archivo anterior "sub_rect.sch" e ingreso:
gnetlist -g spice-sdb sub_rect.sch -o sub_rect.net
Esto genera el netlist "sub_rect.net". Si lo abren con un editor de texto van a obtener un archivo cuyo encabezado es de la forma:
*******************************
* Begin .SUBCKT model *
* spice-sdb ver 4.28.2007 *
*******************************
.SUBCKT recitficador 2 3 4 1
Hay que observar que los números 2, 3, 4 y 1 no tienen nada que ver con la numeración que se le dió a los pines de IO al dibujar el subcircuito.
Con esto tenemos el subcircuito creado. Antes de utilizar este subcircuito en otro circuito, hay que dibujarle un símbolo en gschem.
Símbolo para el subcircuito
Hay varias formas de hacer esto. En este caso voy a optar por modificar un símbolo preexistente ya que creo que es la forma mas sencilla.
Para esto abrimos el gschem e insertamos el símbolo a modificar. Yo voy a modificar el optoacoplador "4N29-1.sym" ya que tiene 4 patas como el subcircuito que tengo creado.
Símbolo a modificar
Seleccionamos el símbolo (mediante click izquierdo), hacemos click derecho en él y seleccionamos la opción "Descender en símbolo". Esto nos lleva a una especie de instancia de editor de símbolos.
Una vez en modo edición:
- Borro los dibujos del diodo led y del fototransistor. En su lugar pueden dibujar lo que les parezca que corresponde a cada pin de su subcircuito.
- Redimensiono el cuadrado incial hasta llevarlo a un rectángulo.
- Cambio el valor del atributo "refdes" de U? a X?. Esta X? indica que es el símbolo de un subcircuito.
- Cambio el texto que tenía el símbolo original por algo más adecuado como "RECT" (de rectificador).
Edición parcial del símbolo
Antes de salir del modo edición, falta modificar los atributos "pinnumber" y "pinseq" de cada pin. Para esto:
- Seleccionamos "Editar > Mostrar/Ocultar texto oculto" para ver todos los atributos del símbolo.
- Cambiamos el valor del atributo "pinseq" de cada pin de forma que coincida con la numeración dada a los pines IO al crear el esquema del subcircuito. Esto es: si al crear el esquema del subcircuito, le dimos el valor "P3" al atributo "refdes" de la salida correpondiente al "voltaje positivo rectificado", entonces debemos darle el valor "3" al atributo "pinseq" del pin correpsondiente en el símbolo que estamos creando.
Numeración de los pines IO al dibujar el subcircuito (izquierda) y su correspondencia con la numeración del atributo "pinseq" al crear el símbolo para ese subcircuito (derecha).
- Le damos el valor que queramos al atributo "pinnumber" de cada pin. Esto no va a afectar en nada al simular. Sí quizá al intentar generar un PCB a partir del esquema de un circuito que contenga este símbolo. Pero eso es otro tema.
- Finalmente modificamos el valor del atributo device por otro como "rect-completa" (puede ser cualquiera).
- Para ocultar todos los atributos del símbolo seleccionamos nuevamente "Editar > Mostrar/Ocultar texto oculto".
Ahora, aún en modo edición, guardo el símbolo con el nombre "rect_completa.sym" (Ojo de no sobreescribir el símbolo que estamos editando).
En mi caso guardo el nuevo símbolo en una carpeta "symbols" ubicada un nivel por encima de la carpeta en la que estoy guardando los esquemas (.sch y .net) del subcircuito. Esa carpeta "symbols" es la que utilizo para guardar los símbolos creados/modificados por mí.
Para salir del modo edición seleccionamos "Página > cerrar".
Dónde están los símbolos?
Si es la primera vez que usan un símbolo creado por ustedes, hay que indicarle al gschem en que carpeta los tienen guardados.
Yo guardo los símbolos que creo en la carpeta "/media/archivos/gEDA_archivos/symbols". Para que el "gschem" lo sepa y los liste, es necesario hacer lo siguiente:
Crear un archivo de texto, de nombre "gafrc" (sin comillas), con el siguiente contenido:
;direccion a carpeta con simbolos propios para gschem
(component-library "/media/archivos/gEDA_archivos/symbols")
Donde en lugar de "/media/archivos/gEDA_archivos/symbols" deben poner la ruta a la carpeta donde guardan sus símbolos propios.
Luego a este archivo de texto lo guardan en la carpeta oculta "/home/nombre_usuario/.gEDA". Deben cambiar nombre_usuario por el nombre de usuario que usan en GNU/Linux. Si la carpeta no existe la deben crear.
Para que esto tenga efecto hay que cerrar y reabrir "gschem".
Utilizar el subcircuito
Ahora sí ya podemos utilizar el subcircuito. En este caso lo voy a utilizar para simular una fuente de DC.
Abro un archivo nuevo en gschem y añado los siguientes componentes:
- vsin-1.sym
- resistor-1.sym
- capacitor-2.sym
- rect_completa.sym (nombre con el que guardé el símbolo del subcircuito)
- gnd-1.sym
- spice-model-1.sym
Lo más importante es:
- Al atributo "model-name" del símbolo insertado del subcircuito le doy el valor "rectificador". Este debe ser el mismo valor que le dimos al atributo "model-name" del componente "spice-subcircuit-LL-1.sym" al dibujar el subcircuito. Es decir, el nombre del subcircuito.
- Al atributo "model-name" del componente "spice-model-1.sym" le doy el mismo valor, es decir "rectificador", y al atributo "file" le doy como valor la dirección (respecto del directorio donde está guardado este esquema) donde se encuentra el netlist con la información del subcircuito.
Guardo este esquema como "fuente_dc.sch" (en la misma carpeta donde tengo el archivo .net del subcircuito) y cierro el "gschem".
Simulación
El circuito anterior convierte el voltaje alterno sinusoidal de la fuente V1 en un voltaje "casi" continuo. Esta fuente V1 representa el secundario de un transformador reductor de 220VAC a 18/sqrt(2) VAC (@50Hz).
El subcircuito creado es el que rectifica la onda sinusoidal, la resistencia representa una carga y el capacitor es quien intenta mantener una reserva de energía constante para proporcionarle a esa carga.
La simulación se hace como en cualquier otro circuito. Primero hay que generar el netlist con la descripción de circuito. Para esto abro una línea de comandos en la carpeta donde tengo guardado el archivo "fuente_dc.sch" e ingreso:
gnetlist -g spice-sdb fuente_dc.sch -o fuente_dc.net
Esto genera el archivo "fuente_dc.net". Para simular el circuito, abro el netlist generado con el simulador ngspice mediante:
ngspice fuente_dc.net
Una vez en ngspice, le pido que realize un análisis temproal de 0s a 40ms (dos períodos) con un paso de 0.1ms mediante:
tran 0.1ms 40ms 0s
Luego le pido que grafique el voltaje en el secundario (la fuente sinusoidal) y el voltaje en la carga (la resistencia):
plot v1-v2 vout
El resultado es el siguiente:
Voltajes de entrada y salida del circuito generado usando el subcircuito rectifcador
Se ve que el ripple de la fuente es bastante importante.
Árbol de directorios
Para finalizar les dejo mi árbol de directorios por si se perdieron con tanta carpeta entre símbolos y modelos:
- "/media/archivos/gEDA_archivos/symbols" tengo los símbolos creados/modificados por mí. En particular el archivo "rect_completa.sym" del símbolo creado en este proyecto.
- "/media/archivos/gEDA_archivos/modelos_spice" tengo el archivo "D1N4007.mod" con el modelo de los diodos.
- "/media/archivos/gEDA_archivos/rectificador_completa" tengo los archivos "sub_rect.sch", "sub_rect.net", "fuente_dc.sch" y "fuente_dc.net" de este proyecto.
- "/home/nombre_usuario/.gEDA" tengo el archivo "gafrc" que le indica al "gschem" donde están los símbolos creados/modificados por mí.
- gEDA - La simulación SPICE - Ricardo Valerio Bautista Cuellar (buscarlo en google)
- Posts sobre EDA de "Ashwith"
Estoy usando por primera vez el gEDA para un proyecto. Me viene muy util esto =)
ResponderEliminarVeo que abajo recomiendas el KiCad. ¿Lo recomendarias por encima del PCB que es parte del gEDA?
ResponderEliminar@Rafael Román: Últimamente he usado el KiCad ya que me resulta más sencillo que el gEDA. Sobretodo para pasar entre una etapa y otra del proyecto (esquemático a PCB por ejemplo). Además el proceso es bastante parecido (en los dos hay que asignar footprints a los componentes por ejemplo).
ResponderEliminarAl principio no quería cambiar de gEDA a KiCad porque me interesaba la opción de gEDA de exportar los netlist del esquemático creado con gschem, para poder simular los circuitos con ngspice.
Creo que KiCad también tiene esa posibilidad pero no he investigado porque por ahora solamente lo usé para crear un PCB a partir del esquemático.
Saludos.
Gracias. Saludos
ResponderEliminar