¿Hay alguna forma de incrustar / agrupar valores iniciales y cambiar combinaciones en LTspice?

1

Tengo un circuito con varios circuitos integrados y componentes. Pero el circuito se comportará de manera diferente dependiendo de las entradas o los interruptores establecidos.

Cada vez que simulo una combinación, tengo que eliminar / modificar varios cables o cambiar los valores de voltaje de la fuente de alimentación, etc.

¿Existe una sintaxis o una forma de establecer algunas condiciones de manera breve?

A continuación se muestra un ejemplo imaginario para describir lo que estoy buscando:

Por ejemplo, antes de ejecutar la simulación: simplemente escribiendo 1 en lugar de 2 en una sintaxis, el circuito cambiará 10 interruptores y establecerá dos voltajes de alimentación en un valor que el usuario definió anteriormente.

    
pregunta user16307

3 respuestas

0

Hay algunas maneras de hacer esto, pero ninguna de ellas será fácil y es "torpe". Puede que no te gusten, las especias no están realmente 'preparadas' para este tipo de simulación, pero aquí vamos.

Una forma es usar un parámetro escalonado para cambiar los valores de las resistencias:

Usted agrega esta línea al archivo (mediante el botón .op en la barra de herramientas)

  

.step param Res list 0.1 1e9

y luego, en la resistencia que desea cambiar, coloque {Res} en lugar del valor normal de la resistencia. Esta línea ejecuta dos simulaciones, una con 0.1 (bastante corto) y otra con alta resistencia (1e9Ω que está cerca del aire y casi abierta). Puedes usar esto como un interruptor.

Si desea cambiar los valores simultáneamente, también puede usar un parámetro con una sentencia if, esta simulación ejecuta dos resistencias (determinadas por los parámetros de la sentencia if). Las dos ejecuciones son 1Ω porque el archivo .step establece el parámetro Res en 1 y 5, que no es mayor que 5, por lo que usa 1 como el valor de la resistencia. La siguiente ejecución de simulación es 10Ω porque la siguiente simulación es 10 y usa el segundo valor en la sentencia if. Como en el ejemplo anterior, podría usar una resistencia baja y alta y usar esto para encender y apagar las resistencias.

(Como nota al margen, puede usar tiempo como una variable en la instrucción if para cambiar el valor de la resistencia también)

Otra forma es usar fuentes de voltaje PWL para establecer la resistencia en una simulación transitoria. Puede configurar la resistencia a un voltaje R = V (Res1) para controlar la resistencia (yo también prefiero mantener la resistencia dentro del rango, así que uso R = exp (V (Res1)) para mantener la señal Res1 en el mismo rango numérico para una mejor estabilidad numérica)

La tercera forma, que debe considerar es generar el archivo de la lista de redes con un lenguaje de scripting (como matlab o python) para activar y desactivar componentes y ejecutar la simulación desde la línea de comandos y recopilar los datos que necesita. Probablemente más trabajo del que quieres, pero es una posibilidad que vale la pena mencionar

    
respondido por el laptop2d
0

Según su pregunta, creo que la primera parte de la respuesta de laptop2d es lo que necesita. Aún así, se puede mejorar un poco, a costa de un poco más de complicaciones. Se trata de dos reglas.

a) en LTspice, conectar a tierra todos los pines de un elemento lo deshabilita (excepto las fuentes de corriente y los subcircuitos), y esto no está limitado a 2 elementos de pines solamente; Los transitores, interruptores, etc. también están deshabilitados.

b) los nombres de los nodos se tratan como etiquetas, pero también se pueden evaluar. Por ejemplo, un nombre neto x1 se tratará como una etiqueta, pero no se puede evaluar, mientras que 0 y 00 se tratarán como dos nodos distintos, pero ambos se evalúan a cero ( GND ).

Combinando las dos reglas anteriores, puede etiquetar un nodo de tal manera que se evalúe a cualquier cosa menos a cero, si necesita el elemento entre los nodos activos, o a cero si lo desea deshabilitado. Ejemplo:

I1 23 0 1
R1 23 0 1
R2 {x} 0 1
.step param x list 0 23

Esta lista de redes se ejecutará dos veces, para x=0 y x=23 , con R2 deshabilitado al principio, y luego habilitado. Al trazar V(23) se mostrará 1V , luego 0.5V . El mismo resultado también se puede lograr utilizando

R2 {23*x} 0 1
.step param list 0 1

o

R2 {x-23} 0 1
.step param x list 23 0

o cualquier otra forma que resulte en el mismo resultado, porque se evaluará cualquier expresión que esté dentro de los elogios. Asegúrate de hacer el resultado de la evaluación 0 , no -0 , o contará como una etiqueta diferente.

Pero LTspice no permite nombrar las redes con elogios, al menos no desde dentro de la GUI. No se permitirá presionar F4 y escribir explícitamente {23} debido a caracteres ilegales. Esto significa que R2 debe agregarse al esquema a través de una directiva SPICE ( S ). Aquí es donde se vuelve un poco incómodo, porque si tiene un buen número de elementos, tendrá que escribir un poco, por no hablar de elegir las expresiones adecuadas para cada nodo, mientras hace que el esquema sea menos legible.

Esto tiene más sentido cuando se trabaja con subcircuitos, donde desea habilitar / deshabilitar elementos de manera que el solucionador de matrices solo cuente con los que necesita para la simulación actual, pero también puede hacerse en un esquema normal. , como el tuyo.

    
respondido por el a concerned citizen
-1

Parece que la funcionalidad table () incorporada en el motor aritmético LTSpice debería funcionar para usted. Esto le permitiría configurar varios parámetros de circuito basados en un solo parámetro de índice. Se define una variable:

.param configuration_index = 1

... y luego configura los parámetros variables en su circuito usando una ecuación con una tabla de búsqueda basada en este índice de configuración. Por ejemplo, si se suponía que su voltaje de suministro era 5 para las configuraciones 1-5 y 10 para los ajustes 6-10, establecería el valor para que su suministro sea:

{table(configuration_index,0,5,1,5,2,5,3,5,4,5,6,10,7,10,8,10,9,10,10,10)}

Puede cambiar las conexiones utilizando resistencias con valores que están definidos por una tabla de búsqueda, por ejemplo, 1mohm vs 1Gohm dependiendo de si desea que la conexión esté abierta o cerrada. Alternativamente, podría usar elementos SW controlados por fuentes de voltaje que son un índice de configuración de función.

Aunque este enfoque puede ser difícil de manejar para configuraciones complejas, en realidad es bastante flexible.

Tenga en cuenta que asumo un conocimiento básico de los parámetros definidos por el usuario en LTSpice. Lea la documentación provista en .param si necesita una descripción básica de cómo funcionan los parámetros.

    
respondido por el user49628

Lea otras preguntas en las etiquetas