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