Pagina 1 di 1

LTspice: si possono normalizzare più step ad 1 kHz?

MessaggioInviato: 5 feb 2017, 13:56
da nikiT
Ciao a tutti,
sto usando il metodo Monte Carlo in LTspice per verificare la sensibilità della risposta in frequenza di un filtro dovuta alle tolleranze dei componenti.

Eseguendo l'analisi AC, ottengo una famiglia di curve che rappresentano, ciascuna, una possibile risposta in frequenza del filtro. Ognuna di queste curve ha una diversa sopraelevazione, e alcune non si intersecano mai.

Tuttavia, non sono interessato ad esaminare le variazioni assolute di queste curve, ma vorrei osservare la massima variazione relativa intorno alla frequenza di riferimento (p. es. 1 kHz). Non so se mi esprimo correttamente, ma direi che voglio "normalizzare" ciascuna curva ad 1 kHz. In pratica, questa cosa qui:


Questo mi permetterebbe di osservare la massima variazione relativa intorno ad una frequenza di riferimento.

È possibile ottenere in LTspice questo risultato? Ci sono direttive, generatori o altri escamotage utili a questo scopo?

Grazie! Ciao,
Niki

Re: LTspice: si possono normalizzare più step ad 1 kHz?

MessaggioInviato: 6 feb 2017, 14:47
da IsidoroKZ
La risposta al volo non la so. Posso suggerire di guardare il gruppo yahoo su ltspice: li` ci sono anche i creatori di ltspice che sanno se si puo` fare. La mia impressione e` che non sia banale, perche' ogni simulazione vive di vita a se', non so se con funzioni tipo measure si riesca a fare qualcosa.

Oppure puoi farlo tuo off-line, usando la tecnica illustrata da Foto UtenteFedhman in questo articolo: esporti le forme d'onda in matlab e poi ci fai tutto quello che vuoi.

Re: LTspice: si possono normalizzare più step ad 1 kHz?

MessaggioInviato: 6 feb 2017, 16:10
da nikiT
Effettivamente il problema non è banale! Sembrerebbe non esserci un modo diretto per farlo.

Ho consultato il gruppo di Yahoo, e mi è stato suggerito di procedere con due simulazioni successive: nella prima si misura l'uscita V_{out} alla frequenza di riferimento, ottenendo una tabella di dati. Nella seconda, questi valori vengono dati in pasto ad un generatore di tensione che genera V_{ref}. Graficando quindi V_{out}/V_{ref} si ottiene la famiglia di curve normalizzate.

Questo si basa sul fatto che, nell'analisi Monte Carlo, LTspice ripete gli step sempre allo stesso modo (e non in maniera casuale). Non lo sapevo!

La procedura dovrebbe essere questa:
  1. si inseriscono le seguenti direttive per misurare l'uscita in forma polare
    Codice: Seleziona tutto
    .OPTIONS meascplxfmt=polar
    .MEAS ref1 FIND V(out) AT 1k
  2. si esegue la prima serie di simulazioni specificando di variare un certo parametro n (che verrà usato dopo)
    Codice: Seleziona tutto
    .step param n 1 10 1
  3. a questo punto, nel file LOG risultante dalla prima simulazione ci saranno i risultati di .MEAS: si copiano e, con un po' di pazienza, si inseriscono in una tabella del tipo:
    Codice: Seleziona tutto
    .param reft=table(n,
    + 1, 0.925061,
    + 2, 0.943657,
    + 3, 0.938987,
    ...
    + 10, 0.9223
    + )
  4. per usare questa tabella, si crea un generatore di tensione indipendente con ampiezza AC pari {reft}, la cui uscita la chiamiamo "ref";
  5. a questo punto, si grafica V(out)/V(ref), che è la risposta in frequenza normalizzata.

Ecco il risultato!

Immagine.png


Chiaramente la tabella tiene conto solo del modulo (e non della fase!). Se si vuole normalizzare pure quella, è necessario aggiungere una tabella.

Logicamente è una procedura un po' noiosa, perché ogni volta che si cambia qualcosa nel circuito, bisogna aggiornare la tabella. Per automatizzare il procedimento, mi hanno suggerito di creare uno script esterno per creare un txt contenente la tabella (da includere con la direttiva .include) partendo dal file LOG. Questo eviterebbe di dover aggiustare manualmente i dati ogni volta, ma non ho idea di come farlo!

Ciao,
Niki