LTspice (XVII) Utilice el nombre de la instancia del componente como parámetro

0

Estoy tratando de simular un condensador ferroeléctrico utilizando los circuitos simples de los activadores de schmitt:

simular este circuito : esquema creado usando CircuitLab

Me gustaría pasar {R1} en función de los nombres de cada instancia de subcircuito (o de una tabla con cada valor deseado). El objetivo es hacer algo como esto:

    R1=100k*(instance_number)

que aumentará efectivamente el valor R1 para cada nuevo componente creado.

Como necesito unos pocos cientos de subcircuitos en paralelo con diferentes valores {R1}, la edición manual no es óptima.

EDITAR:

El objetivo de este proyecto es reproducir la medición eléctrica de un material ferroeléctrico similar a lo que se puede ver aquí:

Esto se puede lograr mediante una gran suma de disparadores de schmitt ideales con capacitores en serie.

    
pregunta Alex

1 respuesta

0

Espero no haberlo entendido mal. Cuando cree su subcircuito, escriba el valor como {R1} , y en los atributos del símbolo, agregue R1=... . De esta manera, cuando coloca su símbolo, puede cambiar el valor como desee (tablas incluidas). Si no trabaja con símbolos (directamente con las directivas SPICE como .subckt ), agregue una línea en su subcituit que defina el parámetro: .param R1=... . Sin embargo, recuerde que esto debe hacerse para todos los subcircuitos que coloque. Por ejemplo:

.subckt Bla 1 2
.param R1=... ; this line is optional, but it can serve as a fallback value
R1 1 2 {R1}
.ends Bla

En el primer símbolo colocado, puedes agregar R1=3 , en el 2do R1=5 , etc.

Si desea un control externo a través de otras declaraciones .param , directamente desde su esquema, entonces puede usar R1={R1_1} para el primer símbolo, R1={R1_2} para el segundo, y así sucesivamente (o el código que desee), y en el esquema tendrás algo como .param R1_1=... R1_2=... , o puedes hacer una función para abarcar todos los valores, algo como esto:

.func res(x) {table(x, 1, 1k, 2, exp(-2), 3, sqrt(3), ...)}  ; or some other function:
.func res(x) {cosh(x)}

Luego, puede escribir: R1={res(1)} para el 1er símbolo, R1={res(2)} para el 2do, etc., y dependiendo de la definición en el .func , cada resistencia tendrá un valor asignado. Esta función se utiliza en el esquema superior.

Una forma de hacer trampa sería usar una hoja de cálculo, utilizando =""&<expression>&"" . Aquí hay un ejemplo:

="C"&$A1&"b "&$A1&" 0 {"&$A1&"/w} Rpar={Rpar}"

mientras que la columna A tiene números secuenciales. Esto generará estas líneas:

C1b 1 0 {1/w} Rpar={Rpar}
C2b 2 0 {2/w} Rpar={Rpar}
C3b 3 0 {3/w} Rpar={Rpar}
C4b 4 0 {4/w} Rpar={Rpar}

Los valores de la capacitancia se pueden calcular utilizando su expresión matemática favorita (usé una numeración secuencial simple). Para los valores constantes, se utilizó un simple {Rpar} .

Esto significa que ya no colocará símbolos manualmente, sino que agregará una directiva SPICE (clave S ) e inserte estas líneas. Cualquier adición / sustracción posterior de la lista significa una simple generación de líneas y un copiar y pegar, o eliminación de líneas.

La forma en que funciona lo anterior es definir el elemento SPICE genérico como:

<Designator> <pin1> <pin2> ... <pinN> <Name> <Attributes>

Para el caso anterior, es un condensador, por lo que tiene la letra designada C , seguida de la instancia numerada en el esquema, dos pines, su valor (se sabe que está en pF ) y atributos opcionales como como parásitos ( Rser utilizado, pero también Rpar , Lser , etc.) y coeficiente de temperatura (no utilizado). No tiene un nombre, ya que es un elemento primitivo, el designador automáticamente dice que es un capacitor. El manual de LTspice tiene más información sobre estos en LTspice > Circuit Elements .

Los subcircuitos tienen su designador especial, X , y la cantidad de pines es la cantidad de pines con la que está hecho el subcircuito. El nombre aquí es obligatorio, ya que se usa para saber cómo se llama el subcircuito. Los atributos son opcionales y suelen ser los parámetros.

Mirando el ejemplo en el manual de LTspice, el subcircuito se define como un divisor resistivo, por lo que tiene tres pines. Se conecta entre los nodos in , out y 0 (que se reconoce como tierra), el nombre es divider y los atributos opcionales son sus dos parámetros: top y bot .

Usar las directivas SPICE para escribir elementos puede ser una forma conveniente para un proceso iterativo, por ejemplo (como este caso), pero puede resultar un poco engorroso en el caso de sondeo de voltajes dentro de la GUI del esquema. Una solución es simplemente dibujar trozos de redes y etiquetarlos de forma adecuada, listos para sondear.

    
respondido por el a concerned citizen

Lea otras preguntas en las etiquetas