Strona 1 z 2
kat przesuniecia fazowego
: 19 cze 2009 14:47
autor: uksz
Witam wszystkich bardzo serdecznie.
Częścią mojego projektu jest wygenerowanie sygnału sinusoidalnego oraz analiza jego widma amplitudowego. Pracownia wyposazona jest w LabView w wersji 8.0.
Do generowania sygnału używam Signal generator by duration
jako parametry wejsciowe podaje : liczba próbek : 512 częstotliwość : 100 Hz Amplituda : 1 V Kąt fazowy : 0
duration : 0,05s
Wygenerowany sygnał (5 okresów) podłączam do
Amplitude and phase spectrum i rezultat wyświetlam na obiekcie Waveform Graph
Problemy: 1. Jak zrobic by skladowa byla wyswietlana w formie slupka a nie ciaglego wykresu? 2. Dlaczego widmo na wykresie wskazuje niepoprawna częstotliwość? Zamiast wyświetlac 100 Hz to wyświetla coś kolo 8-10 ( nawet nie potrafie tego dobrze odczytac z tego wykresu). Jak zrobic by wykres wskazowal wlasciwa czestotliwosc?
Prosze o pomoc, z gory dziekuje.
Re: widmo amplitudowe sygnalu sinusoidalnego - problem
: 19 cze 2009 21:32
autor: jogurt_owocowy
1. Jak zrobic by skladowa byla wyswietlana w formie slupka a nie ciaglego wykresu?
Patrz rysunek poniżej.
2. Dlaczego widmo na wykresie wskazuje niepoprawna częstotliwość? Zamiast wyświetlac 100 Hz to wyświetla coś kolo 8-10
A dlaczego przy podanych parametrach na wykresie
Sygnał Uh w Twoim programie wartości X rozciągają się od zera do ponad pięciuset, skoro czas trwania sygnału to 0,05s? Ostatnie słowa są tu kluczowe: 8-10, ale czego? Chodzi o to, że nie są herce a po prostu numery próbek. Numer próbki mógłbyś przeliczyć na herce korzystając ze stosownego wzorku i odpowiednio ustawić etykiety osi X, ale na początek spróbuj rady uniwersalnej: do generowania i późniejszej analizy sygnałów skorzystaj z funkcji operujących na typie
waveform.
Do wygenerowania sinusoidy zamiast
Signal Generator by Duration użyj funkcji
Sine Waveform, a do analizy np.
FFT Spectrum (Mag-Phase).
Przewaga typu
waveform nad zwykłym wektorem próbek jest taka, że ten pierwszy może przechowywać dodatkowe informacje o sygnale, w szczególności częstotliwość próbkowania. Dzięki temu po podłączeniu sygnału w postaci waveforma do
Waveform Graph (nomen omen) osie X wyskalują się same i to zarówno w dziedzinie czasu jak i częstotliwości.
Spróbuj tego i jak coś to pytaj.
Re: widmo amplitudowe sygnalu sinusoidalnego - problem
: 19 cze 2009 22:37
autor: uksz
Dziekuje bardzo za pomoc, mam teraz tylko taki dylemat.
Po zakonczeniu symulacji, przejdziemy do zajec praktycznych gdzie bedziemy generowac i analizowac sygnaly na prawdziwych przyrzadach pomiarowych typu generatory itd i w tej symulacji musimy miec na wejsciu takie same parametry jak przy prawdziwych urzadzeniach, zatem chcialem tylko spytac czy Sine Waveform w tym przypadku jest wystarczalny, czy na prawdziwym generatorze podaje sie ilosc probek?
Wybacz za takie pytania ale jestem laikiem i pewnie wiele zalezy od tego jakiego typu to beda generatory, ja niestety tego nie wiem.
Re: widmo amplitudowe sygnalu sinusoidalnego - problem
: 19 cze 2009 22:59
autor: jogurt_owocowy
czy na prawdziwym generatorze podaje sie ilosc probek?
W zasadzie wszystko zależy od tego jaki to generator, chociaż na zdrowy rozum to podajesz amplitudę i częstotliwość sygnału i generator wypluwa kolejne próbki sygnału cały czas. Liczbę próbek będziesz ewentualnie podawał określając parametry akwizycji sygnału tj. wielkość bufora karty pomiarowej, ale na razie się tym nie przejmuj. Jak już się dowiesz co to będzie za sprzęt i jak to będzie miało wyglądać, to wtedy będzie na to czas.
Pozdrawiam
Re: widmo amplitudowe sygnalu sinusoidalnego - problem
: 22 cze 2009 10:46
autor: uksz
Numer próbki mógłbyś przeliczyć na herce korzystając ze stosownego wzorku i odpowiednio ustawić etykiety osi X
Czy moglbys mi powiedziec z jakiego wzoru nalezy skorzystac i jak ustawic ta etykiete?
Moj nauczyciel uparl sie by korzystac z signal generator by duration.
Re: widmo amplitudowe sygnalu sinusoidalnego - problem
: 23 cze 2009 11:54
autor: uksz
Tworzony przeze mnie program ma za zadanie wyznaczyc kat przesuniecia fazowego pomiedzy dwoma sygnalami sinusoidalnymi o jednakowej wysokiej czestotliwosci. W tym celu uzywam 3x Sine Waveform
Pierwszy z nich genereuje sygnal sinusoidalny Uh z czestotliwoscia f1, z ktororym beda mieszane (mnozone) dwa pozostale sygnalu Uh i Ux generowane z czestotliwoscia f2,z ktorych ma zostac wyznaczony kat przesuniecia fazowego. Nastepnie wymnozone sygnaly sa filtrowane za pomoca filtru dolnoprzepustowego, by wyeliminowac skladowa sumacyjna i przeniesc sygnaly w pasmo niskich czestotliwosci. W kolejnym kroku wyznaczone zostaja katy fazowe obu sygnalow oraz ich roznica dajaca kat przesuniecia fazowego pomiedzy tymi dwoma sygnalami Uh i Ux.
Generalnie kat przesuniecia fazowego jest wyznaczany poprawnie, ale te wykresy nie bardzo mi sie podobaja. Przy wysokich czestotliwociach ciezko dostrzec na nich czy tam rzeczywiscie jest sinusoida, chcialbym by bylo widoczne tam kilka ookresow tych sygnalow. Widma amplitudowe tez nie zawsze wskazuja poprawna czestotliwosc skladowych wymieszanego sygnalu. Po filtracji przez 1-2 okresy wystepuje stan nieustalony, ktorego tez nie wiem jak sie pozbyc, chcialbym wyciac probki tych 2 okresow, ale nie wiem jaka to mialaby byc ilosc tych probek, a chcialbym zeby to robilo sie programowo bez ingerencji uzytkownika.
Pozdrawiam i prosze o pomoc.
Re: widmo amplitudowe sygnalu sinusoidalnego - problem
: 24 cze 2009 15:46
autor: jogurt_owocowy
Czy moglbys mi powiedziec z jakiego wzoru nalezy skorzystac i jak ustawic ta etykiete?
Wzór na częstotliwość k-tego prążka (licząc od zera) na wykresie widma to
Fk=k*fp/N, gdzie
fp to częstotliwość próbkowania (w hercach), a
N - długość sygnału poddawanego transformacji.
Kontrolka
Waveform Graph ma fajną własność, którą możesz wykorzystać do ustawienia wykresu tak, aby oś X była wyskalowana w hercach -
Offset and Multiplier. Sposób pokazany na pierwszym obrazku poniżej.
Ten klocek, do którego wędruje wynik z dzielenia to węzeł własności wykresu (
Property Node). Tworzysz go klikając na terminalu kontrolki i wybierając z menu kontekstowego
Create -> Property Node.
Przy wysokich czestotliwociach ciezko dostrzec na nich czy tam rzeczywiscie jest sinusoida, chcialbym by bylo widoczne tam kilka okresow tych sygnalow.
Znów możesz skorzystać z
Property Node wykresu, tym razem żeby ustawić zakres osi X odpowiadający określonej liczbie okresów sygnału (rys. 2.).
Po filtracji przez 1-2 okresy wystepuje stan nieustalony, ktorego tez nie wiem jak sie pozbyc
Jeśli w niczym Ci ten stan nieustalony nie przeszkadza, to zostaw go jak jest - taka już uroda filtrów cyfrowych. W przypadku filtrów typu IIR (a takiego używasz do filtracji) wycięcie tych początkowych okresów jest trochę problematyczne, bo nie da się z góry przewidzieć jak długo ten stan nieustalony trwa.
Pozdrawiam
Re: widmo amplitudowe sygnalu sinusoidalnego - problem
: 24 cze 2009 17:34
autor: uksz
Do programu dopisalem jeszcze mozliwosc dodania szumow do sygnalow Un i Ux.
Przykladowo :
Sygnal Uh czestotliwosc
- 500 amp - 1
faza - 0
Sygnal Un czestotliwosc - 480
amp - 1 faza - 0
Sygnal Ux czestotliwosc - 480 amp - 1 faza - 45
Czestotliwosc probkowania - 1100 Ilosc probek - 2000
Przy takich parametrach jak powyzej, widma amplitudowe kompletnie sie nie zgadzaja, przyblizajac sobie wykres sygnalu Uh, raczej nie bardzo przypomina to sinusoide, szybciej przebieg trojkatny.
W razie gdy podczas dzialania programu zmienie faze ktoregos z sygnalow Un badz Ux to wynik kata przesuniecia fazowego zostanie obliczony dopiero po zatrzymaniu i ponownym uruchomieniu programu. Jak zrobic by obliczenia byly prowadzone w czasie rzeczywistym?
Wydaje mi sie ze przy uzyciu Signal generator by duration te sinusoidy prezentowaly sie o wiele lepiej.
Re: widmo amplitudowe sygnalu sinusoidalnego - problem
: 24 cze 2009 21:51
autor: jogurt_owocowy
Przy takich parametrach jak powyzej, widma amplitudowe kompletnie sie nie zgadzaja
Że niby prążek składowej sumacyjnej jest nie tam gdzie powinien być? I nie będzie, bo nie są spełnione założenia
Najważniejszego Twierdzenia Teorii Sygnałów.
Chciałbyś żeby składowa sumacyjna miała 980 Hz? To musisz częstotliwość próbkowania ustawić na co najmniej 1960 Hz. U Ciebie jest tylko 1100 i pojawia się
aliasing.
Zapoznaj się z powyższymi linkami, bo to "ABC DSP" ;)
Swoją drogą piękny przykład działania teorii w praktyce! ]
Przy takich parametrach jak powyzej (...) nie bardzo przypomina to sinusoide, szybciej przebieg trojkatny.
Nie przejmuj się tym. Jakkolwiek może się to wydawać nieintuicyjne, to jeśli są spełnione założenia twierdzenia o próbkowaniu, to nawet taka brzydka sinusoida pozostaje sinusoidą pełną gębą.
Wydaje mi sie ze przy uzyciu Signal generator by duration te sinusoidy prezentowaly sie o wiele lepiej.
Wtedy po prostu byłeś bardziej odsunięty z częstotliwością próbkowania od teoretycznej granicy, nawet jeśli nie zdawałeś sobie z tego sprawy.
Jak zrobic by obliczenia byly prowadzone w czasie rzeczywistym?
Są prowadzone w czasie rzeczywistym, tylko najprawdopodobniej dają bezsensowne wyniki. Jak zmienisz fazy sygnałów, wyniki dalej są tak samo bezsensowne, więc nie zobaczysz różnicy. Rozwiązanie jest na obrazku poniżej. Ustaw wejścia
reset signal wszystkich trzech generatorów sinusoid na
TRUE.
Pozdrawiam
Re: kat przesuniecia fazowego
: 23 mar 2010 21:24
autor: uksz
Witam
na mej drodze do sukcesu pojawiaja sie kolejne pytania i problemy
Mianowicie przykladowo dla parametrow:
czestotliwosc f1 : 50 Hz
czestotliwosc f2 : 40 Hz
amplituda : 1 V
kat fazowy sygnalu Ux: 45 stopni
czestotliwosc probkowania :400 Hz
ilosc probek : 80
rzad filtru : 1
uzyskany przeze mnie kat przesuniecia fazowego pomiedzy sygnalami Un i Ux wynosi: 44.9266 stopni
Przy zmianie parametru rzad filtru na 2, wynik ten wynosi: 43,6885 stopni
Wydaje mi sie ze roznica pomiedzy tymi dwoma wynikami jest zbyt duza, czym moze to byc spowodowane? Czy moje parametry filtru dolnoprzepustowego sa blednie dobrane?
Dolna granica odciecia filtru to roznica pomiedzy czestotliwosciami f1 i f2 czyli : 10 Hz
Czestotliwosc probkowania filtru to 2x(f1+f2) czyli :180 Hz
Kolejna sprawa, dlaczego bloki Tone Measurements i Tone Measuremets2 wykazuja mi czestotliwosc sygnalu okolo 0,025 Hz?
Przeciez czestotliwosc skladowej roznicowej wymnozonych sygnałow Uh x Un oraz Uh x Ux powinna byc bliska 10hz?
Gdy zmienie czestotliwosc f2 na : 41 Hz to kat przesuniecia fazowego wynosi : 44,4603
Co rowniez wydaje mi sie duza roznica pomiedzy tymi dwoma wynikami?
Ale prawdopodobnie jest to spowodowane przeciekiem widma, czy moze jeszcze czyms innym?
Moze nalezy uzyc innych filtrow badz innych ich parametrow albo innych blokow do wyznaczenia katow fazowych, w celu uzykania lepszych wynikow?
Pozdrawiam i prosze o pomoc.
P.S.
LabVIEW 8.0
Re: kat przesuniecia fazowego
: 25 mar 2010 11:40
autor: jogurt_owocowy
Cześć,
Musimy zacząć od tego:
Czestotliwosc probkowania filtru to 2x(f1+f2) czyli :180 Hz
Dlaczego tak?
Re: kat przesuniecia fazowego
: 25 mar 2010 19:53
autor: uksz
Nie wiem na podstawie czego dobiera sie czestotliwosc probkowania filtrow wiec zastosowalem sie po prostu do Twierdzenie Kotielnikowa-Shannona.
Re: kat przesuniecia fazowego
: 25 mar 2010 20:34
autor: jogurt_owocowy
zastosowalem sie po prostu do Twierdzenie Kotielnikowa-Shannona
Możesz dokładniej objaśnić, w jaki sposób?
Re: kat przesuniecia fazowego
: 25 mar 2010 20:38
autor: uksz
skladowa sumacyjna wymnozonych sygnalow o czestotliwosciach 50 Hz i 40 Hz to 90Hz wiec przemnozylem 90Hz przez 2 i wyszlo 180 Hz
Re: kat przesuniecia fazowego
: 25 mar 2010 21:15
autor: jogurt_owocowy
Twój problem jest taki, że nie znasz podstaw, a bez tego niestety ani rusz.
Zamknij ten projekt, weź jakąś książkę do teorii sygnałów (polecam
Wprowadzenie do cyfrowego przetwarzania sygnałów Lyonsa) i opanuj podstawy: co to jest sygnał cyfrowy, co to jest częstotliwość próbkowania, dlaczego jest to wartość związana z sygnałem (a nie z filtrem)... Obiecuję, że (wcale niedługi) czas, jaki w to zainwestujesz, zwróci Ci się szybko w dalszej części projektu.
Częstotliwość próbkowania ma być jedna, odgórnie ustalona i tę jedną wartość masz podawać tak samo na wejścia generatorów sygnałów, jak i filtrów. Filtr rzędu 1 to też pomysł raczej dość wątpliwy. Spróbuj rzędu 10, zwiększ ilość generowanych próbek z 80 na 800 - powinno być dużo lepiej.