Las medidas deberían estar bien, no hay una forma que valga para todos. Puedes usar:
.meas t1 when v(1)=0 rise=1 td=0.4
.meas t2 when v(2)=0 rise=1 td=0.4
.meas phase param 360*(t2-t1)*500
igual de bien y te dará lo que quieres. Se supone que usted está en el estado estacionario (la razón para añadir td
).
El problema es que está utilizando .tran 10u 0.5
probablemente pensando que estás imponiendo un paso de tiempo, pero eso no es lo que hace. Es puede inducir a error Estoy de acuerdo. Para un paso de tiempo impuesto, usted tiene que utilizar:
.tran 0 0.5 0 10u
Esto, por sí mismo, ayudará, pero no mucho. Por defecto, LTspice utiliza un algoritmo de compresión de forma de onda que limita el número de puntos trazados a 1024. Para su caso, 0.5/10u = 50k
puntos, que se reducirán, por lo que para desactivar la compresión de la forma de onda, modifique la opción en Control Panel > Compression > Window size(No. of Points)
(el ajuste es no recordado durante las sesiones), o añadir:
.opt plotwinsize=0
al esquema. Esta es la forma preferida, ya que se recuerda para cualquier esquema que utilice la opción (y se puede alternar fácilmente entre una directiva SPICE y un comentario). La desventaja es que, con la compresión de forma de onda desactivada, la directiva .raw
archivo crecerá y crecerá. Un remedio para ello es utilizar la función .save
mando.
Otra cosa que puedes hacer para aumentar la precisión es utilizar:
.opt numdgt=7 measdgt=13
Cualquier número superior a 6
para numdgt
permite double
puntos de datos de precisión, mientras que measdgt
establece el número de dígitos del .meas
.
En .AC
para las mediciones en el dominio de la frecuencia (como menciona Bimpelrekkie ), si es posible (hay veces que no lo es). Si es posible, utilice .ac list 500
funcionará en este caso. Una cosa que hay que recordar es que el número de .AC
puntos está limitado a 65536.
Para los casos en los que no es posible, en cuanto a imponer un paso de tiempo aún más pequeño, hay una solución. Si tu circuito tiene un tiempo de asentamiento largo, imponer un paso de tiempo muy pequeño significará posibles horas de simulación y muchos GB de almacenamiento. Puede haber un truco para evitarlo: no establezcas un paso de tiempo, en su lugar establece un PULSE()
fuente con retardo >=
tiempo de asentamiento, y con un periodo <=
el paso de tiempo más pequeño deseado. De este modo, la simulación volará durante el transitorio y se arrastrará durante el estado estacionario.
Por ejemplo, dado el circuito de tu imagen, el tiempo de establecimiento del 1% debería ser después de unos 46 ms, así que configura una fuente con PULSE 0 1 50m 1u 1u 1u 4u
. Esto impondrá un paso de tiempo de 1 µs ya que los puntos de tiempo para la fuente son conocidos, lo que significa que el solucionador tendrá que reducir el paso de tiempo para acomodarlos.
La ventaja es que también se puede activar o desactivar:
-
Si sólo tiene que ser desactivado, entonces especificar el número de períodos será suficiente, pero tenga cuidado con esto: ya que los puntos de tiempo tienen que ser conocidos, eso significa que habrá un retraso antes de que la simulación comience causado por el cálculo de estos puntos de tiempo. Esto sólo ocurre si el número es grande (es decir, si hay que calcular muchos puntos temporales). Si no se especifica el número de periodos, el motor sabe que sólo necesita un patrón de repetición simple de unos pocos puntos temporales.
-
Si necesita encenderse y apagarse, utilice la palabra clave trigger
: PULSE 0 1 50m 1u 1u 1u 4u trigger V(x)>0.3
donde V(x)
es una tensión de control. Es bastante auto-explicativo, pero por el bien de los futuros lectores, si V(x)
procede de otra fuente, por ejemplo SIN 0 1 10
entonces el PULSE()
fuente se encenderá cada vez que ` V(x)>0,3, y desactivado en caso contrario.