przesuniecie fazowe sygnałów

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
crawfish
Posty: 18
Rejestracja: 24 cze 2008 07:22
Kontakt:

przesuniecie fazowe sygnałów

Post autor: crawfish »

Witam
Przejrzałem podobne wątki, ale znalazłem odpowiedzi na moje pytanie.
A brzmi ono następująco:
Program mój ma za zadanie zbierać dane z dwóch kanałów - sygnały napięciowe, jeden sygnał ma dwa razy większą częstotliwość od drugiego.
Problem pojawia się wtedy, gdy próbuję przefiltrować te sygnały. Gdy filtruję jeden z sygnałów - sygnały są przesunięte w fazie o 180 stopni. Gdy włączę drugi filtr, przesunięcie między sygnałami wynosi 90 stopni.
Nie wiem w jaki sposób mogę wyeliminować te przesunięcia (chyba dlatego, że jestem bardzo początkującym użytkownikiem LabView).

Karta pomiarowa NI PCI - 6221 68-Pin

Dziękować za wszelkie wskazówki.
Ostatnio zmieniony 24 cze 2008 10:00 przez crawfish, łącznie zmieniany 1 raz.
Awatar użytkownika
Koza
Administrator
Posty: 152
Rejestracja: 20 gru 2006 00:00
Wersja środowiska: LabVIEW 2011
Lokalizacja: Olsztyn

Re: przesuniecie fazowe sygnałów

Post autor: Koza »

Witam,

W jaki sposób filtrujesz te sygnały? Filtr sprzętowy czy programowy? Jaki typ filtru?

Tym więcej uporządkowanej informacji tym większa szansa na otrzymanie pomocy.

Pozdrawiam,
Koza
crawfish
Posty: 18
Rejestracja: 24 cze 2008 07:22
Kontakt:

Re: przesuniecie fazowe sygnałów

Post autor: crawfish »

Filtry programowe w obydwu przypadkach. Sygnał o wyższej (~ 2kHz) częstotliwości filtr Bessela - bandpass. Jeśli konieczne jest użycie drugiego filtru (dla sygnału ~ 1kHz), to jest to filtr Butterwortha - bandpass.

Nie wiem jakie informacje jeszcze mogą się okazać przydatne, więc pytajcie :]

Dziękować za zainteresowanie
PZDR
Ostatnio zmieniony 24 cze 2008 14:17 przez crawfish, łącznie zmieniany 1 raz.
Awatar użytkownika
Koza
Administrator
Posty: 152
Rejestracja: 20 gru 2006 00:00
Wersja środowiska: LabVIEW 2011
Lokalizacja: Olsztyn

Re: przesuniecie fazowe sygnałów

Post autor: Koza »

A jakie mają charakterystyki fazowe? Na początek można pobawić się Express VI o nazwie Filter i sprawdzenie jak zachowują się sygnały w funkcji częstotliwości. Być może tutaj leży problem.

Pozdrawiam,
Koza
crawfish
Posty: 18
Rejestracja: 24 cze 2008 07:22
Kontakt:

przesuniecie fazowe sygnałów

Post autor: crawfish »

Sprawdziłem, ale z tego poziomu niewiele da się zrobić.
Wszystkie z filtrów wprowadzaja wyżej wspomniane przesunięcie.
Najlepiej to widać na załączonym obrazku (przesunięcie wykresu w osi
czasu). Najlepszym sposobem byłoby zmierzenie tego przesunięcia
i odjęcie tej wartości od sygnału odfiltrowanego, tylko jak to zrobić, jak?

PZDR
Ostatnio zmieniony 30 cze 2008 17:26 przez crawfish, łącznie zmieniany 4 razy.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: przesuniecie fazowe sygnałów

Post autor: jogurt_owocowy »

Każdy filtr cyfrowy (i nie tylko) wprowadza do sygnału opóźnienie zależne od swojego rzędu. Filtry IIR (a więc takie, którymi się bawisz teraz) mają dodatkowo nieliniowe charakterystyki fazowe, co dodatkowo utrudnia całą sprawę.

Najlepiej byłoby użyć filtrów typu FIR, dla których skorygowanie opóźnienia jest najprostsze. Problem z typ typem filtrów jest taki, że dla uzyskania stromych zboczy charakterystyk muszą być one dość dużych rzędów, a więc wymagają większych nakładów obliczeniowych i wprowadzają większe opóźnienie. Jeśli Twój problem jest taki, że te wady są akceptowalne, to idĹş właśnie w stronę filtrów typu FIR.
Najlepiej opisz dokładniej sygnały, które poddajesz filtracji i po co je filtrujesz, to spróbujemy coś wymyślić.

Pozdrawiam
crawfish
Posty: 18
Rejestracja: 24 cze 2008 07:22
Kontakt:

przesuniecie fazowe sygnałów

Post autor: crawfish »

Pierwszy sygnał o częstotliwości ~1kHz i amplitudzie 1V. Sygnał ten nie wymaga filtrowania.
Drugi sygnał jest sygnałem z czujnika piezoelektrycznego, którym to mierzę zmiany pola magnetycznego. Jest to sygnał napięciowy o amplitudzie ~15 mV i f ~ 2kHz. Z tego sygnału muszę się pozbyć 50-60Hz. Kolejny problem z tym sygnałem jest taki, że muszę z niego odfiltrować częstotliwość pierwszego sygnału (1kHz), gdyż wprowadza on zakłócenie do tego sygnału, a tak być nie powinno. Na początku miałem problem (i chyba go się nie pozbyłem) z prawidłową konfiguracją karty. W miarę pozytywny wynik otrzymalem: AI "1" - differential AI"1" - RSE, ale nie wiem czy to najlepsze rozwiazanie. Budynek nie ma wspolnego uziemienia i tu prawdopodobnie przyczyna tkwi.

A teraz z FIR-ami popróbuję

Dzięki za zainteresowanie
PZDR
Ostatnio zmieniony 30 cze 2008 18:01 przez crawfish, łącznie zmieniany 1 raz.
crawfish
Posty: 18
Rejestracja: 24 cze 2008 07:22
Kontakt:

przesuniecie fazowe sygnałów

Post autor: crawfish »

W filtrach o skończonej odpowiedzi impulsowej możliwe jest wyrównanie faz
dla obydwu sygnałów, zmniejszając lub zwiększając Taps, ale nie wiem jak to wpływa na jakość filtrowanego sygnału, współczynnik ten bowiem ma wpływ na stromość zboczy, ale jakie są max. i min. wartości dla ilości tych współczynników? Jutro to sprawdzę na rzeczywistych sygnałach, na tych z symulatora trudno było różnicę zobaczyć.

PZDR :)
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

przesuniecie fazowe sygnałów

Post autor: jogurt_owocowy »

Minimum to jeden współczynnik, przy którym filtr przestaje być filtrem, a staje się wzmacniaczem albo tłumikiem.

Maksimum teoretycznie nie ma.
crawfish
Posty: 18
Rejestracja: 24 cze 2008 07:22
Kontakt:

przesuniecie fazowe sygnałów

Post autor: crawfish »

Użyłem filtru FIR do sygnałuo większej amplitudzie i mniejszej częstotliwości, do drugiego wykorzystałęm IIR ponieważ FIR-em nie udało sie odfiltrować nipotrzebnych częstotliwości. Udało się też (metodą wielokrotnego wyboru wsp. Taps) wyrównać fazy obydwu sygnałów. Jednak ta metoda jest uciążliwa gdy cząsto zmieniam częstotliwość mierzonego sygnału. Istnieje jakieś inne, bardziej przyjazne rozwiązanie? Coś w stulu: pomiar różnicy faz i dodanie tej rożnicy do jednego z sygnałów?



Pozdrawiam
Crawfish
Ostatnio zmieniony 06 lip 2008 10:48 przez crawfish, łącznie zmieniany 3 razy.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: przesuniecie fazowe sygnałów

Post autor: jogurt_owocowy »

Najlepiej będzie jak dołączysz obrazek przedstawiający te sygnały.
crawfish
Posty: 18
Rejestracja: 24 cze 2008 07:22
Kontakt:

Re: przesuniecie fazowe sygnałów

Post autor: crawfish »

Nie mam w tej chwili dostepu do stanowiska, ale wygląda to mniej więcej tak, jak na dołączonych rysunkach. Sygnał 1kHz jest sinusoidą, a sygnal 2kHz jest do sinusoidy podobny, bardzo zblizony. Ale istota problemu myślę jest jasno przedstawiona.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: przesuniecie fazowe sygnałów

Post autor: jogurt_owocowy »

Udało się też (metodą wielokrotnego wyboru wsp. Taps) wyrównać fazy obydwu sygnałów. Jednak ta metoda jest uciążliwa gdy cząsto zmieniam częstotliwość mierzonego sygnału.
To właśnie "urok" filtrów IIR, a konkretnie ich nieliniowej charakterystyki fazowej. Gdyby obydwa były typu FIR, to przy odpowiednim ich zaprojektowaniu, nie miałbyś takich problemów.
1. Może jednak FIR? Zamieść sygnał przed filtracją, opisz wymaganą specyfikację filtru, to spróbujemy jednak zrobić to na FIRze. To rozwiązanie chyba będzie najlepsze (o ile nie ma do niego przeciwwskazań).
2. Jeśli chcesz, to możesz mierzyć przesunięcie fazowe. W LV 8.5 możesz do tego wykorzystać np. klocki Basic Level Trigger Detection (w celu wykrycia momentów przejść przez zero), Waveform Peak Detection (analogicznie - do wykrycia szczytów/dołków sinusoid) albo Extract Single Tone Information ładnie mierzącego amplitudę, częstotliwość i fazę sygnału.
Możesz też np. zrobić tak. Dla dwóch fragmentów obydwu sygnałów (o takiej samej długości):
  1. Przemnóż fragmenty próbka po próbce,
  2. Oblicz moduł iloczynu,
  3. Zsumuj próbki modułu iloczynu,
W wyniku otrzymasz liczbę będącą miarą "wyrównania fazowego" sygnałów. Maksimum tego wskaźnika występuje dla sygnałów, w których przejścia przez zero się pokrywają (oczywiście na tyle na ile to możliwe dla sygnałów o różnych częstotliwościach).
Pozdrawiam
Ostatnio zmieniony 07 lip 2008 19:32 przez jogurt_owocowy, łącznie zmieniany 1 raz.
crawfish
Posty: 18
Rejestracja: 24 cze 2008 07:22
Kontakt:

Re: przesuniecie fazowe sygnałów

Post autor: crawfish »

Nie wiem czy uda się tak zaprojektować filtry FIR, żeby sygnał był okej, ale spróbować można. Sygnały powinny wyglądać tak jak na rysunku 1kHz_fir 2kHz_iir.jpg (sygnał 2kHz nie jest idealna sinusoidą). Nie widać tutaj przesunięć fazowych, dopiero po zapisaniu wyników i utworzeniu wykresu daje się to zauważyć.
Z proponowanych wcześniejszych rozwiązań nie da się zrealizować pomysłu z pomiarem fazy przy przecinaniu sygnałów punktu "0" na osi Y, gdyż sygnały te mają różne częstotliwości.
Pomysł ze sprawdzaniem peak& valley byłby lepszy, jednak nie bardzo wiem w jaki sposób to zrealizować (czyli sprawdzić kiedy w 1 i 2 sygnale pojawiają się dwa peak'i i jak skorygować tą różnicę, czyli dodać lub odjąć różnicę między nimi do jednego z sygnałów).

Dzięki za zaangażowanie jogurt_owocowy :)
Pozdrawiam
Ostatnio zmieniony 10 lip 2008 11:59 przez crawfish, łącznie zmieniany 5 razy.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: przesuniecie fazowe sygnałów

Post autor: jogurt_owocowy »

Pomysł ze sprawdzaniem peak& valley byłby lepszy
Czy przejścia przez zero czy górki/dołki to dwie strony jednego medalu, a różne częstotliwości akurat tutaj nie przeszkadzają.
Niech sygnał wolniejszy przecina zero (ma górki, ma dołki) w momentach: 0, 8, 16, 24, ...
a szybszy w
1, 4, 9, 13, 17, 21, 25, ...
Widać o ile są przesunięte? Widać.
Najlepiej
byłoby gdybyś zamieścił sygnały przed i po filtracji, opisał co chcesz uzyskać, pokazał w jaki sposób je filtrujesz, jakimi filtrami (najlepiej zamieszczając vi), bo inaczej się nie dogadamy.
Szybka rada na podstawie obrazków: przesuń w FIRze początek pasma przepustowego w dół to sygnał z rys. 1khz_fir 2khz_fir.jpg zacznie się upodabniać do tego z 1khz_fir 2khz_iir.jpg.
ODPOWIEDZ