CDIG-Es01 Campionamento_svolgimento_PDF
Transcript
CDIG-Es01 Campionamento_svolgimento_PDF
ESERCIZIO SUL CAMPIONAMENTO Questo esercizio ha lo scopo di verificare praticamente, mediante simulazione, le proprietà frequenziali dei segnali campionati. Si consideri il segnale x(t ) = sin(2πt ) + 1 sin(8πt ) 2 Si valuti la frequenza minima del campionatore che permette la ricostruibilità del segnale, e si proceda alle opportune verifiche utilizzando le funzionalità di Fast Fourier Transform di MATLAB-Simulink. Svolgimento Il segnale ha due componenti in frequenza, una pari a 1 Hz, la seconda pari a 4Hz. La frequenza massima, fs, del segnale x(t) è pari a 4 Hz. Pertanto, in base al teorema di Shannon la frequenza di campionamento minima è fc ≥ 2 fs = 8 Hz ⇒ T≤1/8 s = 0.125 s = 125 ms Possiamo scegliere Tc = 20 ms, a cui corrisponde fc = 50 Hz sufficientemente superiore alla soglia minima richiesta Il segnale x(t) ed il segnale campionato x*(t) possono essere ottenuti mediante il seguente semplice schema Simulink. (file SIM01) Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 1 Le finestre di parametrizzazione dei blocchi Sine Wave La finestra di parametrizzazione del blocco Pulse generator Il blocco Pulse generator ha lo scopo di generare il treno di impulsi di campionamento. Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 2 Naturalmente non è possibile in quanto non sono segnali realizzabili. Approssimiamo mediante un treno di rettangoli di ampiezza unitaria, periodo pari al periodo di campionamento scelto (T=20 ms = 0.02 s) , e durata 1millisecondo (che è il 5% del periodo). Il blocco Simulink “pulse generator” parametrizzato come sopra riportato svolge tale compito. Vediamo sotto lo Scope. Attenzione alla scelta del metodo di integrazione. Lo si deve parametrizzare dalla apposita finestra. Vi si accede dalla pagine di lavori Simulink mediante il percorso di menu: (Simulation -> Configuration Parameters -> Solver) Lo si parametrizzi come segue Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 3 FIGURA 1 >>plot(tout,x,tout,xs),grid,xlabel('Tempo [secondi]'); >>title('IL segnale originale e campionato') FIGURA 1 IL segnale originale e campionato 1.5 1 0.5 0 -0.5 -1 -1.5 0 0.2 0.4 0.6 0.8 1 1.2 Tempo [secondi] 1.4 1.6 1.8 2 FIGURA 2 >> plot(tout,xs),grid,xlabel('Tempo [secondi]') >> title('IL segnale campionato'),axis([0 0.3 0 1.5]) FIGURA 3 >> plot(tout,xs,tout,x),grid,xlabel('Tempo [secondi]') >> title('IL segnale campionato'),axis([0 0.3 0 1.5]) FIGURA 2 FIGURA 3 IL segnale campionato IL segnale campionato 1.5 1.5 1 1 0.5 0.5 0 0 0.05 0.1 0.15 Tempo [secondi] 0.2 0.25 0.3 0 0 0.05 0.1 0.15 Tempo [secondi] 0.2 0.25 0.3 Facendo uno zoom si osserva come Simulink approssimi il segnale campionato con dei “triangoli” Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 4 FIGURA 4 >> plot(tout,xs),grid,xlabel('Tempo [secondi]'), >> title('Il segnale campionato - ZOOM'), >> axis([0 0.1 0 1]) FIGURA 4 Il segnale campionato - ZOOM 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.01 0.02 0.03 0.04 0.05 0.06 Tempo [secondi] 0.07 0.08 0.09 0.1 Ora analizziamo gli spettri dei segnali Si utilizza il seguente m-file, da salvare nella cartella di lavoro. % Funzione per il calcolo normalizzato dello spettro di un segnale % function spettro(t,x) close all % % calcolo del vettore delle frequenze % f=0:1/t(length(t)):1/t(2); f=f'; % % calcolo della Fast Fourier Transform % Y=fft(x); % % calcolo dello densità spettrale di potenza normalizzato % che permette di ottenere un'ampiezza unitaria dello spettro Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 5 % per una sinusoide di ampiezza unitaria % P=2*abs(Y)/length(Y); plot(f(1:ceil(length(f)/2)),P(1:ceil(length(P)/2))) xlabel('Frequenza [Hz]') ylabel('X(j2 \pi f)') title('Spettro di potenza normalizzato') La funzione “spettro” si lancia da riga di comando Matlab con la seguente sintassi >> spettro(tempo,x), axis([0 10 0 1.5]) Bisogna passare come argomenti il vettore dei tempi e il vettore dei campioni. NB Il vettore dei tempi non contiene gli istanti di campionamento, ma gli istanti ai quali simulik calcola la soluzione, sono in pratica tutti i multipli interi del “Fixed Step Size” che abbiamo scelto pari a 0.001 s. Verificare che nel workspace siano stati generai i segnali corretti con il comando whos >> whos Name Size samp tempo tout x xs 2001x1 2001x1 2001x1 2001x1 2001x1 Bytes Class Attributes 16008 16008 16008 16008 16008 double double double double double Spettro di potenza normalizzato 1.5 X(j2 π f) 1 0.5 0 0 Appunti di Controllo Digitale 1 2 3 4 5 6 Frequenza [Hz] ing. Alessandro Pisano 7 8 9 [email protected] 10 6 Ora grafichiamo lo spettro del segnale campionato. Si notano le repliche in HF. La prima serie di repliche è centrata attorno alla frequenza di sampling come ci si attende. >> spettro(tempo,xs), axis([0 60 0 0.06]) Spettro di potenza normalizzato 0.06 0.05 X(j2 π f) 0.04 0.03 0.02 0.01 0 0 10 20 30 Frequenza [Hz] 40 50 60 Grafichiamo anche le repliche superiori aumentando la finestra delle ascisse >> spettro(tempo,xs), axis([0 220 0 0.06]) Spettro di potenza normalizzato 0.06 0.05 X(j2 π f) 0.04 0.03 0.02 0.01 0 0 Appunti di Controllo Digitale 20 40 60 80 100 120 140 Frequenza [Hz] ing. Alessandro Pisano 160 180 200 [email protected] 220 7 L’ampiezza delle armoniche dello spettro del segnale campionato non è corretta, non rispetta il valore che ci attenderemmo che è 1/T = 1/0.02=50 per la componente a 1Hz e le sue repliche, a pari alla meta per la componente 4Hz e le sue repliche. Otteniamo invece 0.05 e 0.025 rispettivamente. C’e’ un errore di un fattore 1000. Da cosa discende ? Dipende dall’aver approssimato la sequenza campionatrice (che dovrebbe essere un treno di impulsi di Dirac, come assunto nella analisi) con la sequenza approssimata di rettangoli costruita con il pulse generator che riportiamo nuovamente a seguire: Il processo di calcolo spettrale viene invalidato dal fatto che i rettangoli di campionamento non hanno area unitaria. Hanno bensì area pari alla larghezza (durata) dei rettangoli stessi , cioè 0.001s Quindi, si ha una “perdita di potenza” nel segnale campionato reale, rispetto a quello idealmente campionato impulsivamente, pari al rapporto tra l’area teorica attesa, cioè 1, e l’area degli impulsi effettivi, 0.001, e pertanto è giustificato l’errore di un fattore 1000 negli spettri calcolati Compensiamo semplicemente nel modo seguente Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 8 >> spettro(tempo,1000*xs), axis([0 60 0 60]) Spettro di potenza normalizzato 60 50 X(j2 π f) 40 30 20 10 0 0 10 20 30 Frequenza [Hz] 40 50 60 Ora campioniamo il segnale a una frequenza che non rispetta la condizione di nyquist, e verifichiamo l’occorrenza dell’aliasing spettrale. La condizione del teo di shannon è, lo ricordiamo: fc ≥ 2 fs = 8 Hz ⇒ T≤1/8 s = 0.125 s = 125 ms Possiamo scegliere ora Tc = 0.15 s = 150 ms, a cui corrisponde fc = 6.66 Hz. Dobbiamo ridurre il Fixed Step Size del risolutore Simulink (v sopra) da 0.001 a 0.0001. Per costruire il nuovo, differente, treno dei “rettangolini riparametrizziamo come segue il blocco Pulse Generator Il valore 2/3 discende dalla formula Appunti di Controllo Digitale di campionamento”, PulseWidth=100*0.001/0.15 ing. Alessandro Pisano [email protected] 9 Ora lo spettro di potenza normalizzato mostra l’inquinamento spettrale dovuto alle repliche che causano aliasing. >> spettro(tempo,1000*xs), axis([0 60 0 10]) Spettro di potenza normalizzato 10 9 8 7 X(j2 π f) 6 5 4 3 2 1 0 0 10 20 30 Frequenza [Hz] 40 50 60 Ora studiamo il problema della ricostruzione. Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 10 Utilizziamo ZOH, FOH, e un filtro continuo che ci progettiamo. Dobbiamo filtrare questo segnale Spettro di potenza normalizzato 0.06 0.05 X(j2 π f) 0.04 0.03 0.02 0.01 0 0 10 20 30 Frequenza [Hz] 40 50 60 Scegliamo un filtro costituito dalla cascata di due filtri del primo ordine con frequenza di taglio ad 8 Hz >> bode(8*2*pi*8*2*pi ,poly([-8*2*pi -8*2*pi ])) Bode Diagram 0 Magnitude (dB) -10 System: sys Frequency (Hz): 8.04 Magnitude (dB): -6.07 -20 -30 System: sys Frequency (Hz): 50.6 Magnitude (dB): -32.3 -40 -50 0 Phase (deg) -45 -90 -135 -180 -1 10 0 1 10 10 2 10 Frequency (Hz) Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 11 Appunti di Controllo Digitale ing. Alessandro Pisano [email protected] 12 SPETTRO DEL SEGNALE RICOSTRUITO CON IL FILTRO PASSABASSO >>spettro(tempo,xlp),axis([0 60 0 1.5]) Spettro di potenza normalizzato 1.5 X(j2 π f) 1 0.5 0 0 10 20 30 Frequenza [Hz] 40 50 60 Evidenziamo le armoniche spurie dovute al filtraggio non completo delle componenti in HF Spettro di potenza normalizzato 0.12 0.1 0.08 X(j2 π f) 0.06 0.04 0.02 0 -0.02 -0.04 -0.06 46 Appunti di Controllo Digitale 48 50 52 Frequenza [Hz] ing. Alessandro Pisano 54 56 [email protected] 13 SPETTRO DEL SEGNALE RICOSTRUITO CON LO ZOH >>spettro(tempo,xzoh),axis([0 60 0 1.5]) Spettro di potenza normalizzato 1.5 X(j2 π f) 1 0.5 0 0 10 20 30 Frequenza [Hz] 40 50 60 Spettro di potenza normalizzato 0.1 0.08 X(j2 π f) 0.06 0.04 0.02 0 -0.02 46 Appunti di Controllo Digitale 48 50 52 Frequenza [Hz] ing. Alessandro Pisano 54 [email protected] 56 14