Strona 1 z 1

Jak w prosty sposób usunąć harmoniczne?

: 21 sie 2009 03:09
autor: marwis
Mam w programie swój układ mierzący częstotliwość i mam trochę kłopotu gdy w sygnale pojawiają się harmoniczne (zwłaszcza piąta). Jako że nie znam się na filtrach wypróbowałem kilka i najlepszy wydaje mi się Zero Phase Filter - pytanie tylko co to za rodzaj filtru i za co odpowiadają jego parametry wejściowe(Reverse Coefficients,Forward Coefficients)?

Re: Jak w prosty sposób usunąć harmoniczne?

: 21 sie 2009 13:11
autor: jogurt_owocowy
Zanim zaczniesz cokolwiek filtrować, poznaj chociaż podstawy filtracji, bo inaczej to takie strzelanie na oślep.
Zero Phase Filter to - w skrócie - funkcja realizująca filtrację cyfrową w dość specyficzny sposób polegający na dwukrotnym przefiltrowaniu sygnału raz normalnie i raz "od tyłu". Sumarycznie taka operacja może być postrzegana jako pojedyncza filtracja cyfrowa z płaską charakterystyką fazową.
Reverse Coefficients i Forward Coefficients to nic innego jak współczynniki tego dwukrotnie stosowanego filtru (zwykle oznaczane, odpowiednio, jako a i b) określające wartość n-tej próbki sygnału wyjściowego na podstawie pewnej ilości (M, N) ostatnich próbek wejściowych:
Obrazek
Skąd je wziąć?
Musisz je wygenerować na podstawie pożądanej charakterystyki częstotliwościowej. I teraz zasadnicze pytanie:
Jaka ma być ta charakterystyka? Co chcesz odfiltrować od czego?

Re: Jak w prosty sposób usunąć harmoniczne?

: 22 sie 2009 03:11
autor: marwis
Dzięki za odpowiedź:) Generalnie mierzę
częstotliwość napięcia w sieci (50Hz) i chcę odfiltrować wyższe harmoniczne które mogą pojawić się w mierzonym sygnale. Wziąłem do mojego programu ten filtr z przykładu w LV i jego działanie mi odpowiada. Jest w nim podana na wejście Forward Coefficients jednowymiarowa tablica. Domyślam się że rozmiar tablicy odpowiada za liczbę próbek M, a kolejne elementy to odpowiednio współczynniki b? Jeśli dobrze zrozumiałem, do wyznaczenia współczynników można użyć Cascade To Direct Coefficients tylko że na jego wejściu tez trzeba podać takie współczynniki więc dalej nie wiem co z tym zrobić.

Re: Jak w prosty sposób usunąć harmoniczne?

: 22 sie 2009 15:09
autor: jogurt_owocowy
Trochę za bardzo kombinujesz.
W LV masz zestaw gotowych funkcji filtrujących, na których wejścia podajesz typ filtru (dolno-, górnoprzepustowy), częstotliwość odcięcia i sygnał wejściowy, a na wyjściu dostajesz jego odfiltrowaną wersję - proste.
Z tego co piszesz w Twoim przypadku dobrym wyborem mógłby być filtr eliptyczny, który ma maksymalnie stromą charakterystykę w paśmie przejściowym. Co prawda w zamian za to jego charakterystyka jest nierównomierna, ale w przypadku pomiaru częstotliwości, gdzie amplituda ma małe znaczenie, ta wada się nie liczy.
Wrzuć na diagram funkcję Elliptic Filter i na jej wejścia podaj:
sampling freq - częstotliwość próbkowania filtrowanego sygnału filter type: Lowpass - dolnoprzepustowy, bo chcesz usunąć górne harmoniczne low cutoff freq: np. 75 Hz - częstotliwość odcięcia pomiędzy pierwszą a drugą harmoniczną order: 5 - taka wartość powinna być ok, ale możesz poeksperymentować
Podłącz swój sygnał do wejścia X i zobacz co dostajesz na wyjściu Filtered X. Może być?

Re: Jak w prosty sposób usunąć harmoniczne?

: 22 sie 2009 17:29
autor: marwis
Myślę że się nada:) Chociaż chyba nie musi być piątego rzędu (2,3 powinien być wystarczający). Dzięki za pomoc.

Jednak po przeanalizowaniu kilku filtrów najwyższą dokładność w moim programie otrzymuje z filtrem Butterworth'a i tego raczej będę się trzymał;)

Re: Jak w prosty sposób usunąć harmoniczne?

: 22 sie 2009 20:21
autor: jogurt_owocowy
Jednak po przeanalizowaniu kilku filtrów najwyższą dokładność w moim programie otrzymuje z filtrem Butterworth'a
Najwyższą dokładność pomiaru częstotliwości, tak?
W jaki sposób ją potem mierzysz?

Re: Jak w prosty sposób usunąć harmoniczne?

: 22 sie 2009 22:53
autor: marwis
Tak, o częstotliwość chodziło. Najłatwiej pewnie byloby ją zmierzyć za pomocą Extract Single Tone Information , ale ja używam swojego algorytmu który wyznacza częstotl. na podstawie określonej liczby półokresów k, znanym okresie próbkowania Tp i liczbie próbek w k półokresach Mk

f=k/2*Mk*Tp Długość półokresu to liczba próbek między kolejnymi przejściami przez zero. Dokładniejszą wartość miejsca zerowego określam przez aproksymację prostej łączącej dwa najbliższe punkty przejścia przez zero. No i właśnie harmoniczne czasami tak zniekształcają sygnał, że zamiast raz w odpowiednim miejscu przechodzić przez zero, przechodzi kilka razy.