Análisis transitorio de LTSpice: cómo especificar el número de puntos de datos por paso

0

Realicé un análisis de transitorios de duración de 1us en un circuito básico de inversión de amplificador operacional con el valor de resistencia Rx de 846 ohmios a 1385 ohmios. Cuando exporto los datos a un archivo de texto (Archivo - > Exportar datos como texto), el archivo de texto resultante tiene múltiples puntos de datos para cada "paso". Como ejemplo, para Rx = 848, LTSpice crea 3 puntos de datos en 0s, 819ns y 1us (consulte la Figura 2).

El análisis de este archivo de texto en Excel es un poco molesto, pero no imposible, solo necesito extraer cada cuarto elemento. Sin embargo, el problema es que LTSpice genera más puntos de datos para algunos "pasos". En la Figura 3, para Rx = 1.38k, LTSpice genera 4 puntos de datos en lugar de 3. Ahora el análisis de datos en Excel se vuelve molesto porque a veces necesito extraer cada quinto elemento, mientras que otras veces necesito extraer cada sexto elemento.

Entonces, mi pregunta es: ¿Hay alguna forma de especificar la cantidad de puntos de datos creados en cada paso?

Figura 1:

Figura2:

Figura3:

    
pregunta Ken Lin

3 respuestas

1

Mientras que el motor de simulación configurará automáticamente su paso de tiempo de cálculo sobre la marcha según el progreso del comportamiento transitorio, limitado por cualquier máximo que haya establecido, el parámetro de paso de impresión forzará una salida al archivo en momentos específicos.

La mayoría de los sabores de Spice tienen esta facilidad, sin duda LT la tiene.

  

Sintaxis: .tran {print_step} {print_stop} [print_start [dTmax]] [modifiers]

En la mayoría de los tutoriales y ejemplos que ve, print_step se establece en cero o se omite, lo que le dará todos los puntos de cálculo en el archivo de salida. Un valor finito resultará en un archivo con esos pasos. Print_start puede ser útil, si tiene una simulación con un transitorio de arranque largo que no le interesa. DTmax es donde puede forzar al motor de simulación a dar pasos más pequeños de lo que estrictamente necesita. Los modificadores son para cosas como UIC, usar condiciones iniciales.

    
respondido por el Neil_UK
1

Como dice The Photon, SPICE es un simulador analógico y ninguno de ellos simulará con un paso de tiempo fijo, debido al motor inherente, que funciona al implementar un derivado: si los cambios se vuelven demasiado bruscos, el derivado tiende a explotar , por lo que el paso del tiempo es halvened. Si los cambios son aún más abruptos, el paso de tiempo se reduce aún más, hasta que ya no se puede y se acumulan timestep too small errores. Por otro lado, si el circuito fluye sin problemas, dobla su paso y continúa haciéndolo (dentro de algunos límites) para no ralentizar la simulación cuando puede ir más rápido.

La solución mencionada por ambas respuestas anteriores para imponer un paso de tiempo solo limitará el paso más grande del simulador, es decir, si se producen cambios bruscos, el paso de tiempo se reducirá automáticamente (y no hay nada que puedas hacer al respecto), pero cuando El circuito puede ir más rápido, el paso de tiempo máximo será el impuesto por usted. El resultado es, nuevamente, puntos de tiempo desiguales.

Como lo menciona The Photon, puede intentar postprocesar en Excel (nunca lo intentó) o, alternativamente, puede usar una pequeña utilidad decicada, ltsputil.exe , que trata exactamente este tipo de cosas. Se puede encontrar en la página de inicio de Grupos de Yahoo de LTspice, en Files > Util > ltsputil (sin embargo, necesitará registrarse para evitar los spammers). Aunque lo recomendé.

Si necesita exportar su simulación con un paso de tiempo fijo, la única opción que proporciona LTspice es usar el comando .wave ; consulte la ayuda para LTspice > Dot Commands > .WAVE . Sin embargo, esta opción está limitada a \ $ \ pm1 \ text {V} \ $, por lo tanto, a menos que esté limitado a la precisión, debe tomar medidas para ajustar su forma de onda dentro de esos límites, de lo contrario será muy difícil.

Como un addendum, para circuitos lineales y muy lineales impulsados por ondas sinusoidales (y su tipo), el motor, en general, no tendrá problemas, y el solucionador volará sobre los escalones. Imponer un paso de tiempo ayudará, para su caso, pero no por mucho. Un truco menor para usar si desea pasos de tiempo específicos, es agregar una fuente de pulso con PULSE 0 1 0 {1m*T} 0 0 {T} . Esto crea una fuente pulsada con un período impuesto (que representa el paso del tiempo deseado) y un borde ascendente afilado (er) (0.1% de T, o menos, pero no hay necesidad de excederse) - lo que forzará la desaceleración del motor a su alrededor La explicación es que LTspice crea un calendario desde la fuente con pasos conocidos proporcionados por su entrada, lo que significa que el solucionador no tendrá que lidiar con el derivado > buscar > adapte (para el caso de la fuente), ya que sabe de antemano cuándo llegan los puntos a tiempo, por lo que puede disminuir la velocidad anticipada, lidiar con el aumento brusco y luego reanudar, más rápidamente, el "modo vuelo". El efecto es que, dado que todo el circuito obedece al paso del tiempo, todo será un poco más detallado alrededor de los bordes afilados impuestos por la fuente. Esto puede ser útil cuando se usan FFT, por ejemplo, o ltsputil .

Como nota final, en su imagen veo que está usando un tiempo de simulación total de 1us , pero un paso de tiempo de 1s , que LTspice ignorará ya que el paso de tiempo es mayor que el tiempo total de simulación. Tal vez lo dijiste al revés: .tran 0 1 0 1u ? Si es así, es una exageración, por lo general, un 0.1% del tiempo total de simulación es suficiente, incluso si es posible que necesite un poco más de reducción, según la situación. Aún así, no parece ser tu caso, porque parece que solo estás realizando un análisis de .OP , que tiene un comando propio dedicado; consulta la ayuda de LTspice para LTspice > Dot Commands > .OP . Pero, .OP no produce formas de onda, por lo que no sé realmente lo que querías hacer.

    
respondido por el a concerned citizen
0

En general, SPICE utiliza un tamaño de paso adaptable en simulaciones transitorias para minimizar el tiempo de simulación y mantener la precisión. Cuando las variables del circuito (por ejemplo, voltajes de nodo) cambian rápidamente, tomará pasos de tiempo más cortos, y cuando las variables del circuito cambien lentamente, tomará pasos de tiempo más largos.

Puede especificar un "paso de tiempo máximo" en caso de que desee anular el algoritmo incorporado (ya sea porque encuentra que el algoritmo incorporado no proporciona resultados precisos o produce puntos más densos para el trazado). En su caso, la especificación de un máximo de 0.1 o 0.2 nos daría como resultado el uso de este paso de tiempo para todas sus ejecuciones de simulación, a costa de tiempos de simulación más largos. Especifique esto en el cuadro de diálogo "Editar comando de simulación".

Alternativamente, puede postprocesar los resultados para interpolar los valores de salida en cualquier intervalo de tiempo que desee, o simplemente hacer una gráfica x vs y en Excel en lugar de la gráfica estándar y vs categoría.

    
respondido por el The Photon

Lea otras preguntas en las etiquetas