Saltar a contenido

Espectro de frecuencias en LTspice

introducción

Para analizar el espectro en frecuencia de una señal en LTspice, debe realizarse un análisis .TRAN ( análisis de la respuesta temporal), y luego efectuar sobre el gráfico temporal, el algoritmo de la transformada de Fourier. En este caso, un algoritmo de transformada rápida (FFT) con sus limitaciones y características.

Primer circuito

Primer circuito

cir_001.asc

Se accede a la ventana de configuración con Clic opuesto sobre el gráfico -> View -> FFT Clic opuesto View FFT

Seleccionar la señal para incluir en la FFT

En esta ventana se seleccionan las señales a generarle el algoritmo FFT. Observar el valor elegido para Numbers of data point samples in time: 256 que se ha fijado al menor valor posible seleccionable por medio de las flechas del campo.

Se realizan diversas capturas desplazándose por 4 puntos de la correspondiente gráfica, y se integra en una animación. Para colocar cursores, puede hacer clic sobre el nombre de la señal dibujada (V(1) en este caso), Para luego seleccionar con Atached Cursor entre dos cursores disponibles.

animación

De aquí podemos obtener obtener algunas conclusiones:

  • Se obtiene un gráfico cartesiano, con unidades en ordenadas al origen en \(dB\) y abscisas en \(kHz\)
  • El eje de abscisas es del tipo logarítmico.
  • Se obtiene un espectro discreto con 127 puntos de interés equiespaciados \(1\:kHz\) cada uno.
  • El primer punto se ubica en \(1\:kHz\) y posee una amplitud del orden de \(-3\:dB(?)\)
  • Los puntos subsiguientes se encuentran \(64\:dB\) por debajo del primer punto, es decir \(10^{\frac{-64}{20}}\) unas \(1600\) veces más pequeñas que la amplitud del primer punto.

Podríamos preguntarnos ¿Qué unidades posee el eje de Ordenadas?

Si bien habla de \(dB\), no debemos perder de vista que este está comparando dos magnitudes. En este caso, lo que indica el eje debería ser unidades absolutas, o deberíamos saber cual es la referencia de comparación. Observar que la fuente V1 se ha configurado cómo SINE(0 1 1kHz) lo que indica que es una señal sinusoidal de valor máximo de amplitud es \(1\:V\), por lo tanto, su valor cuadrático medio (RMS) es \(\frac{1\:V}{\sqrt{2}} \approx 0,707\:V\). Luego \(20log(0.707\:V / 1\:V)=-3\:dBV\) que es el valor obtenido para el primer punto. Por tanto, con cierto grado de certeza, podemos afirmar que la unidad del eje de Ordenadas es \(dBV\).

Ahora bien. ¿Qué determina la cantidad de puntos en pantalla? Hasta el momento, se ha obtenido un gráfico con 127 puntos, configurando Numbers of data point samples in time: 256. Sea que se selecciona:

Seleccionar la señal para incluir en la FFT

Numbers of data point samples in time: 512 que se ha fijado el próximo valor posible seleccionable por medio de las flechas del campo. Se grafican en las imágenes siguientes, este parámetro fijado en 256 y 512:

127kHz 255kHz

De aquí podemos obtener obtener algunas conclusiones:

  • Se obtiene un espectro discreto con 255 puntos de interés equiespaciados \(1\:kHz\) cada uno, por lo tanto la cantidad de puntos de la FFT es la mitad, menos uno, la cantidad de puntos tomados de la señal temporal.
  • El primer punto se ubica en \(1\:kHz\) y posee una amplitud del orden de \(-3\:dBV\). Es lógico que se mantenga sin cambio.
  • Los puntos subsiguientes se encuentran muy por debajo del primer punto.
  • El espacio entre puntos es de \(1\:kHz\)

¿Hay forma posible de mejorar la resolución en frecuencia y/o de comenzar el gráfico a frecuencias menores a \(1 kHz\)? Como se puede observar, entre frecuencia y frecuencia se produce un salto de \(1 kHz\). Sea que se desea mejorar esta resolución llevando a 4 puntos por \(kHz\), es decir llevar la resolución de frecuencia de la FFT a \(250 Hz\), se deberá cuadruplicar el intervalo temporal propuesto en la simulación.

Segundo circuito:

Se propone el siguiente circuito.

Circuito 2 cir_002.asc

Al que luego se le aplica al gráfico temporal la FFT, que en este caso es de 256 puntos. Análogo al trabajo anterior se evalúan algunos puntos para obtener conclusiones.

0.25kHz 1kHz 1.25kHz 31.75

De aquí se pueden obtener las siguientes conclusiones:

  • Efectivamente se incremento cuatro veces la resolución en frecuencia, se aumenta la resolución aumentando el tiempo para simular.
  • Se obtiene un espectro discreto con 127 puntos de interés equiespaciados \(0,25\:kHz\) cada uno, luego la frecuencia máxima observable se redujo cuatro veces a \(31,75\:kHz\) ya que se mantuvo constante la cantidad de puntos de la FFT
  • El primer punto se ubica en \(0,25\:kHz\).
  • Si bien se observan algunos picos espurios, todos están atenuados más del mil veces del valor del tono de \(1\:kHz\).

Se puede entonces comprender la relación entre el comando .tran y la frecuencia mínima de interés.

Syntax: .TRAN <Tprint> <Tstop> [<Tstart> [<Tmaxstep>]] [<option> [<option>]...]

Cuando se fija .tran 4ms, la mínima frecuencia será \(\frac{1}{4\:ms}=250\:Hz\). Si la mínima frecuencia de la señal es inferior a 1/<Tstop> no se simulará un ciclo completo de esa señal, el espectro comenzará a partir de 1/<Tstop> y se perderá información a su izquierda.

Investigando la utilidad de Suavizado binomial previo a la aplicación de la FFT, aumentando el número indicado en Binomial Smoothing done before FFT and windowing se puede suavizar la respuesta de componentes espurios. Binomial Smoothing done before FFT and windowing

Observar el efecto en la siguiente animación que muestra la variación de este parámetro en 1, 3, 5, 9, 15, 25, 51 y 101.

Animación Suavizado

De aquí se pueden obtener las siguientes conclusiones:

  • Aumentar el suavizado da uniformidad el umbral de ruido incrementando siembre el umbral de ruido.
  • Aumentar el suavizado reduce la amplitud del tono de interés, en este caso se observa una reducción de hasta \(1.4\:dB\).

Tercer circuito: ¿Qué sucede si se realiza un decremento <Tmaxstep>?

Se ha modificado <Tmaxstep> a \(10\:ns\), aquí se realizará la comparación ante el efecto provocado respecto al Circuito 2

Circuito 3 cir_003.asc

Si bien, cómo se observa, el simulador parece no haber tomado la directiva de \(10\:ns\), ya que cómo se observa los pasos son de \(10\:\mu s\) (se evaluará esto luego), lo importante aquí es que se ha disminuido sensiblemente el paso de tiempo entre los puntos.

Para mejorar la comparación se han superpuesto las dos imágenes y se ha modificado a azul el color de la FFT de Circuito 3

Number of data point samples in time: 256 Comparación 256

Number of data point samples in time: 16777216 Comparación 16777216

De aquí se pueden obtener las siguientes conclusiones:

  • Se incrementó el tiempo de simulación, ya que reducir el paso temporal incrementa la cantidad de puntos.
  • En ambos casos se observa la mejora sustancial en cuanto a la redución del umbral de ruido de amplitud, por lo menos en en la parte de la banda de interés de la señal en cuestión.

Cuarto circuito: ¿Por qué LTspice parece no reconocer <Tmaxstep> fijado?

LTspice posee una característica llamada compresión de datos. Significa que no guardará todos lo valores calculados, que en definitiva es lo que se usa para graficar, si no hay mucho cambio de un valor a otro (casualmente para este estudio se debe utilizar señales sinusoidales que las máximas variaciones se producen en el entorno de cero, pero que no son particularmente de variación rápida como podría ser una señal rectangular). La característica de compresión está activada por defecto sólo para el comando de análisis .TRAN, se puede desactivar en el panel de control o por una directiva LTspice, que es la forma recomendada así queda explicitado en cada circuito las modificaciones de las características por defecto del programa.

.OPTIONS PLOTWINSIZE=0

En el siguiente circuito se ha habilitado dicha opción, y se ha fijado un <Tmaxstep> de \(50\:\mu s\)

Circuito 4 cir_004

Se han habilitado las marcas en cada punto adquirido con Clic Opuesto sobre el gráfico -> View -> Mark Data Points Mark Data Points

Se observa que la distribución de toma de muestras no está equiespaciada, pero el máximo paso dado es igual al fijado, y este se da en el lugar de máxima pendiente de la señal.

Quinto circuito y más: ¿Habrá un límite de reducción del umbral de ruido de amplitud?

El cir_005, se simuló con <Tmaxstep> de \(1\:\mu s\), el cir_006, se simuló con <Tmaxstep> de \(0,1\:\mu s\), es decir un paso 10 veces mas pequeño, y El cir_007, se simuló con <Tmaxstep> de \(1\:ns\), es decir 1000 veces más pequeño respecto al primer circuito. Se observa, el consecuente incremento de demora del tiempo de simulación, de la última instancia, además del tiempo de demora en la conformación del gráfico temporal. Luego se ha realizado la FFT de 256 valores a cada gráfico y aquí se presentan los resultados.

FFT cir_005.asc FFT cir_006.asc FFT cir_007.asc

La siguiente animación muestra el efecto. Animación Suavizado

Como puede observase espurios del orden de \(-170\:dBV\), es decir \(10^{\frac{-167}{20}}=4,5 10^{-9}\:V\) no se pueden eliminar ante el aumento de <Tmaxstep>

Este problema, parece deberse a la precisión numérica de la aritmética de LTspice, según la ayuda del programa nos indica, que utilizar la tarjeta de opción numdgt con un valor superior a 6, utilizará para las variables independientes precisión doble.

Keyword Default Description
numdgt 6 Historically "numdgt" was used to set the number of significant figures used for output data. In LTspice, if "numdgt" is set to be > 6, double precision is used for dependent variable data.

El siguiente circuito agrega esta opción y se visualiza su FFT.

Circuito 8 cir_008

FFT cir_008.asc

Como puede observase, con numdgt > 6, espurios del orden de \(-317\:dBV\), es decir \(10^{\frac{-314}{20}}=2 10^{-18}\:V\), con esta opción de precisión numérica se ha reducido enormemente el umbral de ruido de amplitud.

¿Qué sucede si los componentes de señal no son múltiplos exactos de la resolución?

En el siguiente circuito se ha simulado con todos los criterios anteriormente explicitados

alt text cir_008

alt text

Como puede observase, esto incrementa el error en la determinación de amplitud . . .