Politechnika Koszalińska
ITiE
Cyfrowe przetwarzanie sygnałów i obrazów
FILTR
ŚRODKOWOPRZEPUSTOWY
Aproksymacja Butterwortha
Metoda transformacji biliniowej
Postać kanoniczna obserwera
Opracował:
Grzegorz Izraelski
Koszalin 2013
Cel zadania
Zaprojektować filtr za pomocą którego możliwe będzie testowanie niskich częstotliwości w głośnikach o różnej mocy w zakresie 20Hz- 65Hz
Krótki opis omawianego filtru
Filtr środkowoprzepustowy - filtr, który przepuszcza pewne pasmo częstotliwości i tłumi częstotliwości poniżej i powyżej tego pasma
Wyk. 1. Wykres przedstawiający charakterystykę filtru środkowoprzepustowego
Dla mojego filtru przyjąłem następujące gabaryty:
fs1=20Hz
fp1=30Hz
fp2=50Hz
fs2=65Hz
Rp= 3dB
Rs= 12dB
Po wprowadzeniu danych za pomocą odpowiedniej komendy wyznaczamy nasz rząd „n” , oraz pulsację unormowaną „Wn”
gdzie:
Wp= [2*pi*30 2*pi*50] Wp = [ 188.4956 314.1593]
Ws=[2*pi*20 2*pi*65] Ws= [ 125.6637 408.4070 ]
>>[n,Wn]=buttord(Wp,Ws,Rp,Rs,'s')
n=2
Wn= [ 185.3332 319.5198 ]
4. W celu wyznaczenia współczynników transmitancji filtru Hs skorzystałem z komendy
>>[b,a]=butter(n,Wn,'bandpass','s')
b = 1.0e+004 *[ 0 0 1.8006 0 0 ]
a = 1.0e+009 * [ 0.0000 0.0000 0.0001 0.0112 3.5067 ]
5. Następnie wyznaczamy transmitancję H(s) filtru, która jest stosunkiem transformaty sygnału wyjściowego do transformaty sygnału wejściowego. Do tego służy komenda
>>Hs=tf(b,a)
1.801e004 s^2
---------------------------------------------------------
s^4 + 189.8 s^3 + 1.364e005 s^2 + 1.124e007 s + 3.507e009
6. Wyznaczamy logarytmiczną charakterystykę częstotliwościową za pomocą komendy
>>bode(Hs)
Wyk. 2. Charakterystyka amplitudowo- częstotliwościowa i fazowo- częstotliwościowa
7. Wyznaczamy zespoloną charakterystykę częstotliwościową
>>nyquist(Hs)
Wyk. 3. Zespolona charakterystyka częstotliwościowa
8. Wyznaczamy wykres rozmieszczenia zer i biegunów transmitancji H(s) za pomocą komendy
>>pzmap(Hs)
Wyk. 4. Wykres przedstawiający rozmieszczenie zer oraz biegunów transmitancji H(s)
9. Wyznaczamy wykres odpowiedzi impulsowej za pomocą komendy
>>impulse(Hs)
Wyk. 5. Wykres odpowiedzi impulsowej filtru
10. Schemat blokowy- postać kanoniczna obserwera
Na początku tworzymy postać kanoniczną kontrolera
Wyk. 6. Schemat blokowy postaci kanonicznej kontrolera
gdzie:
2.8514*10-10
-a1 -1.124*107 b0 0
-a2 -1.364*105 b1 0
-a3 -189.8 b2 1.801*104
-a4 -1 b3 0
b4 0
Przekształcamy postać kanoniczą kontrolera w postać kanoniczną obserwera zamieniając wyjście z wejściem, kierunki strzałek, oraz zamieniając węzły odczepowe na węzły sumujące i odwrotnie.
Wyk. 7. Schemat blokowy postaci kanonicznej obserwera
II. Część cyfrowa
Treść zadania:
Zaprojektować filtr za pomocą którego możliwe będzie testowanie niskich częstotliwości w głośnikach o różnej mocy w zakresie 20Hz- 65Hz. Jako że częstotliwości przenoszone przez tony niskie nie przekraczają 500Hz, gdzie częstotliwość ta została określona na podstawie wykresu idealnego filtru antyaliazingowego.
Częstotliwość próbkowania w myśl tzw. twierdzenia Kotielnikowa- Shannona częstotliwość próbkowania musi być nie mniejsza niż dwa razy najwyższa częstotliwość jakiej spodziewamy się w rejestrowanym sygnale.
>>fn= 2*500Hz=1000Hz
Gdzie:
σ- częstotliwość graniczna filtru antyaliazingowego
Definiujemy a oraz b z wzorca analogowego za pomocą
>>[bn,an]=impinvar(b,a,fn)
bn = 0.0040 -0.0000 -0.0080 -0.0000 0.0040
an =1.0000 -3.7025 5.2477 -3.3718 0.8297
Obliczamy czas sampling-u ze wzoru
>>Ts=1/fn
Ts =1.0000e-003
Obliczamy transmitancję dla filtru cyfrowego
>>Hz=tf(bn, an, Ts)
Transfer function:
0.003981 z^4 - 1.332e-015 z^3 - 0.007963 z^2 - 2.22e-015 z + 0.003981
---------------------------------------------------------------------
z^4 - 3.702 z^3 + 5.248 z^2 - 3.372 z + 0.8297
Wyznaczamy logarytmiczną charakterystykę częstotliwościową za pomocą komendy
>>bode(Hs)
Wyznaczamy zespoloną charakterystykę częstotliwościową
>>nyquist(Hs)
Wyznaczamy wykres rozmieszczenia zer i biegunów transmitancji H(s) za pomocą komendy
>>pzmap(Hs)
Wyznaczamy odpowiedź impulsową filtru cyfrowego
>>impz(bn, an, 100)
Schemat blokowy za pomocą komendy
>>Hd=dfilt.df2t(bn, an)
Odpowiedź impulsowa na pobudzenie sygnału deltą Kroneckera
>> realizemdl(Hd)
Schemat blokowy struktury blokowej obserwera