Relazione

 

"Misura della risposta in frequenza di un filtro"

OBIETTIVI

L'esperienza consiste nel creare un programma in linguaggio Visual Basic 6.0 che permetta di gestire, attraverso il bus GPIB, un generatore d'onde ed un multimetro programmabili al fine di ricavare la risposta in frequenza di un filtro collegato ad essi. Il programma deve permettere di ricavare la RF entro una certa banda e con un certo numero di misure decisi dall'utente e deve creare un grafico in scala bi-logaritmica della risposta del filtro.

PRELIMINARI

Per poter svolgere l'esperienza è necessario installare una scheda GPIB all'interno del computer, installare il programma per la gestione delle apparecchiature fornito dal produttore della scheda, collegare gli strumenti al computer attraverso il cavo GPIB, collegare le due strumentazioni fra di loro e il filtro.
Come prima cosa bisogna controllare che vengano riconosciuti gli strumenti e che non ci siano contrasti tra essi dovuti all'utilizzo dello stesso indirizzo. Per controllare il riconoscimento degli strumenti bisogna entrare nel programma "National Instrument NI-488.2" installato nel PC e ciccare poi su Explore GPIB, Device interface e successivamente su GPIB0. Aprire poi il menù a tendina Tools e selezionare Scan for instrument. A questo punto dovrebbero comparire gli strumenti riconosciuti e il loro indirizzo. Se non dovesse comparire nessuno strumento, o solo uno, ci potrebbe essere un contrasto tra gli indirizzi. Per ovviare a ciò è quindi necessario lasciare acceso un solo strumento alla volta e riselezionare Scan for instrument per verificare se viene rilevato lo strumento e il suo indirizzo. Se si riscontra che gli strumenti sono impostati sullo stesso indirizzo è necessario modificarne almeno uno.
Per visualizzare e modificare l'indirizzo GPIB del generatore d'onde è sufficiente spingere il pulsante in alto a destra con la dicitura LCL - ARD. Sul display sarà visualizzata la scritta "GPIB + indirizzo" che si può modificare usando i tasti numerici in basso. Per confermare l'indirizzo spingere il tasto ENTER.
Per visualizzare l'indirizzo sul DMM bisogna spingere in sequenza i seguenti tasti: SETUP, UP, 3 volte SETUP. Sul display apparirà la scritta "Add + indirizzo"; l'indirizzo potrà essere modificato con i tasti numerici e confermato con il tasto SETUP.

N.B.: affinché il programma da me creato funzioni correttamente bisogna che il DMM sia impostato sull'indirizzo 11, mentre il generatore d'onde sull'indirizzo 10.


CREAZIONE DEL PROGRAMMA

Prima di iniziare la stesura del programma bisogna capire come il nostro sistema deve funzionare. Per ricavare la risposta in frequenza di un filtro bisogna fornire allo stesso un segnale sinusoidale sempre uguale ma con frequenza diversa compresa in una certa banda che si vuole misurare. Per ogni valore di frequenza bisogna, quindi, misurare il valore della tensione in uscita e registrare i dati su un grafico.
Il programma dovrà, quindi, acquisire entro quali valori di frequenza l'utente vuole si effettui la prova, creare la suddivisione in scala logaritmica della banda assegnata e, ad intervalli regolari calcolati in base al tempo di ritardo della trasmissione (di alcuni secondi), impostare il generatore d'onde alle frequenze calcolate e leggere dal multimetro il valore di ampiezza del segnale (in decibel) per ogni punto. I dati così ricavati vanno poi registrati su un grafico bi-logaritmico che traccia la risposta in frequenza del filtro.

FUNZIONAMENTO GENERALE

Il programma di base è stato ricavato da alcuni esempi in Visual Basic di come si gestiscono i vari strumenti, sulla loro programmazione e le istruzioni per gestirli.
Essenzialmente il programma è formato da una parte di inizializzazione degli strumenti e da una parte che svolge le misure e crea il grafico. Nella prima vengono impostati gli strumenti in base alle funzioni che dovranno svolgere: il multimetro viene impostato sulla lettura in automatico di una VAC in dB, mentre il Generatore d'onda viene impostato su una frequenza di 1 kHz con un'ampiezza del segnale di 1V. La seconda parte è composta da un timer che ogni 4 secondi (tempo necessario al sistema per la trasmissione e lettura dei dati) fa partire un processo di scrittura - lettura - disegno. Ogni 3 secondi, quindi, il timer richiama una funzione "SCRIVI", che calcola la frequenza e la invia al generatore d'onde, una funzione "LEGGI", che esegue la lettura dal multimetro, e una funzione "DISEGNA", che plotta i valori ricavati su un grafico.
Il timer non richiama sempre tutte le altre funzioni. Nel primo ciclo, infatti, chiama una funzione "GRAFICO", che traccia gli assi sul grafico su cui poi si lavorerà, ma nei successivi cicli è inutile richiamarla. Nel primo ciclo, invece, non vengono utilizzate le funzioni "LEGGI" e "DISEGNA", poiché, per i ritardi nella comunicazione, il dato letto dal multimetro sarebbe inutile in quanto appartenente ad una misura fatta con un valore di frequenza casuale. Questo significa, inoltre, che le letture fatte successivamente vanno abbinate ai valori di frequenza precedenti.
Inoltre, visto che la lettura e il disegno partono in ritardo rispetto alla funzione "SCRIVI", esse devono anche terminare un ciclo dopo per permettere di rilevare i dati relativi all'ultima frequenza calcolata.
Per far iniziare e fermare, sia definitivamente sia temporaneamente, il processo, in qualunque momento, sono stati inseriti dei comandi di "START", "STOP" e "PAUSA". Il processo si ferma in ogni modo automaticamente raggiunta la frequenza massima desiderata. Terminato un ciclo è possibile iniziarne uno nuovo senza dover rilanciare il programma.

SOTTOPROGRAMMA "SCRIVI"

Questo sottoprogramma si occupa sia del calcolo delle frequenze in scala logaritmica, sia dell'inviarle alla strumentazione. Poiché la strumentazione accetta i dati solo secondo certe forme, è necessario operare delle modifiche ai valori calcolati per evitare che il generatore d'onde non segnali eventuali errori.
Una scala logaritmica molto semplice è quella formata da numeri ottenuti moltiplicando il precedente sempre per uno stesso valore, ad esempio: 1,2,4,8,16,32, ….
Per ottenere una scala di questo tipo all'interno di due qualsiasi valori e per un numero qualsiasi di divisioni bisogna utilizzare la seguente formula:

f (i) = fmin * (fmax / fmin) i / n°punti

dove:
f(i): frequenza da calcolare in funzione del contatore i
i: contatore di valore 1 < i < n°punti
fmin : frequenza di partenza della misurazione
fmax : frequenza di arrivo della misurazione
n°punti: numero di misure che si vogliono effettuare

Come si può facilmente immaginare, questa formula fornisce, nella maggior parte dei casi, dei valori decimali anche molto lunghi ed è quindi necessario operare un troncamento al numero intero poiché il generatore di funzioni non accetta numeri decimali. Tale troncamento non basta perché lo strumento accetta valori con un determinato numero di cifre significative ed è necessario operare una "pulizia" delle ultime cifre dei numeri per portare a zero le cifre significative in eccesso. Questa pulizia varia nel numero di cifre in base ad alcune fasce.
Da 0 a 1999 lo strumento scrive tutti i numeri
Da 2000 a 19999 bisogna portare a zero l'ultima cifra
Da 20000 a 199999 bisogna portare a zero le ultime due cifre
Da 200000 a 2000000 bisogna portare a zero le ultime tre cifre.
Per fare ciò si ricorre ad un semplice metodo: si divide il numero per 10, 100, 1000, … a seconda di quante cifre si vogliono ripulire, si tronca il numero ottenuto in intero e poi si moltiplica per il coefficiente precedentemente usato per dividere.
Ottenuto così la frequenza nella forma desiderata si crea una variabile stringa composta dalla parola "FR" + il valore convertito in stringa + la parola "E + 0". Si è ottenuto così un dato scritto in modo da essere accettato dallo strumento e che può essere spedito allo stesso.
Questa funzione, quindi, ogni 3 secondi calcola un valore successivo della scala logaritmica, lo converte nella forma desiderata e lo invia allo strumento.

SOTTOPROGRAMMA "LEGGI"

Questo sottoprogramma si occupa della lettura del valore efficace della tensione in uscita al filtro misurata dal DMM in deciBel. La funzione prevede anche una parte di conversione del dato rilevato come stringa in forma normale. Il dato rilevato è in forma esponenziale, ad esempio:

-3,2 E+0, dove -3,2 è il valore significativo e 0 è l'esponente di 10.

Il programma converte la stringa in numero e separa le due parti. Moltiplicando poi il valore significativo per 10 elevato alla potenza trovata si ricava il valore in forma normale del numero. Ad esempio dalla stringa di prima si ricava: -3,2 * 10º = - 3,2 dB.
Bisogna ricordare che questo programma rileva i dati relativi alla frequenza precedente fornita al generatore, in quanto il comando di lettura viene dato immediatamente dopo a quello di scrittura e quindi lo strumento non ha il tempo necessario per rilevare le variazioni.

SOTTOPROGRAMMA "GRAFICO"

È una semplice subroutine che viene richiamata una sola volta all'inizio di ogni ciclo di misura e serve per tracciare gli assi del grafico, inserire il loro nome e la scala del guadagno in dB. La dimensione del grafico rimane sempre costante, però, mentre la scala del guadagno è fissa e va da +20 a - 40 dB, la scala delle frequenze è variabile a seconda della banda in cui vengono effettuate le prove e del numero di misure effettuate.
Sul grafico non vengono inseriti i valori delle varie frequenze per problemi di spazio quando le misure sono molte, ma solo dei riferimenti corrispondenti alle decadi successive al valore di partenza.

SOTTOPROGRAMMA "DISEGNA"

Il sottoprogramma "DISEGNA" traccia il grafico della risposta in frequenza del filtro relativo ai dati forniti al generatore d'onde e rilevati dal multimetro. Il suo funzionamento è abbastanza semplice, ma per il problema dell'abbinare la misura letta al giusto valore di frequenza richiede un po' di attenzione.
Primo problema da risolvere è trovare a che punto del grafico si trova la frequenza calcolata e a che altezza si trova la tensione rilevata. Poiché in una scala logaritmica i valori sono posti alla stessa distanza l'uno dall'altro, è sufficiente prendere il valore della larghezza disponibile del grafico e dividerlo per il numero di punti più 1, per ottenere una costante che indica a che distanza si trova una frequenza dall'altra. Moltiplicando poi la costante per il numero della misura si trova che punto del grafico si riferisce a quella frequenza. Per trovare a che altezza del grafico si trova il valore di tensione misurato, basta moltiplicare tale valore per 100 (corrispondente a variazioni di 1 dB, ottenuto dividendo lo spazio massimo del grafico per il range della scala), cambiarlo di segno e sommare 2080 per centrarlo nel grafico.
Trovato come posizionare i punti, la funzione esegue solo due semplici istruzioni: la prima trova da che punto partire, mentre la seconda unisce tale punto con quello appena misurato. E' semplice intuire che il punto stabilito dalla prima istruzione corrisponde al punto di arrivo della seconda istruzione nel ciclo precedente.
Perché queste due istruzioni possano funzionare è necessario conoscere il punto di partenza e di arrivo da congiungere e per questo la funzione "DISEGNA" inizia e termina in ritardo rispetto alle altre.

DESCRIZIONE DEI COMANDI

INIZIO: Ciccando, fa partire l'esecuzione del processo

PAUSA: Ciccando, fa arrestare momentaneamente il processo; un secondo clic fa continuare

TERMINA: Ciccando, fa terminare il processo in qualsiasi momento

NUOVA MISURA: Compare al termine di un processo e permette la pulizia del sistema per una nuova misura

FREQUENZA Indica lo spazio dove inserire la frequenza di partenza
INFERIORE della banda di misura

FREQUENZA Indica lo spazio dove inserire la frequenza finale della
SUPERIORE banda di misura

NUMERO PUNTI Indica lo spazio dove inserire il numero di misure

FREQUENZA [Hz] Visualizza il valore della frequenza calcolata e inviata

TENSIONE [db] Visualizza il valore della tensione letta

 

Top Icon
Menù