-
1. Data: 2009-08-09 10:34:35
Temat: cyfrowa obróbka sygnału
Od: Paweł <p...@n...pl>
Witam !
Do wejścia ADC został doprowadzony sygnał analogowy o paśmie około
100-5000Hz. Co pewien czas w sygnale pojawia się wyraźnie dominująca
składowa o częstotliwości od 200 do 4000Hz. Poza nią jest trochę szumu i
zakłóceń harmonicznych. Ten dominujący sygnał trwa min. 0.2 sek. Zwykle
około 1 sek. W tym czasie jego amplituda może się zmienić nawet 10 razy.
Częstotliwość trochę się zmienia ale w zakresie 0.2 sek. w praktyce
można uznać ją za stałą.
W jaki sposób programowo wykryć pojawienie się tego dominującego sygnału
i określić jego częstotliwość z dokładnością około 1% ?
Paweł
-
2. Data: 2009-08-09 10:41:42
Temat: Re: cyfrowa obróbka sygnału
Od: "identyfikator: 20040501" <N...@o...eu>
> W jaki sposób programowo wykryć pojawienie się tego dominującego sygnału i
> określić jego częstotliwość z dokładnością około 1% ?
ponoć najlepszym w tym wypadku byłby filtr adaptacyjny...
-
3. Data: 2009-08-09 10:57:02
Temat: Re: cyfrowa obróbkasygnału
Od: "MH" <l...@o...pl>
> Witam !
>
> Do wejścia ADC został doprowadzony sygnał analogowy o paśmie około
> 100-5000Hz. Co pewien czas w sygnale pojawia się wyraźnie dominująca
> składowa o częstotliwości od 200 do 4000Hz. Poza nią jest trochę szumu i
> zakłóceń harmonicznych. Ten dominujący sygnał trwa min. 0.2 sek. Zwykle
> około 1 sek. W tym czasie jego amplituda może się zmienić nawet 10 razy.
> Częstotliwość trochę się zmienia ale w zakresie 0.2 sek. w praktyce
> można uznać ją za stałą.
>
> W jaki sposób programowo wykryć pojawienie się tego dominującego sygnału
> i określić jego częstotliwość z dokładnością około 1% ?
>
FFT
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
4. Data: 2009-08-09 11:32:21
Temat: Re: cyfrowa obróbka sygnału
Od: "identyfikator: 20040501" <N...@o...eu>
> ponoć najlepszym w tym wypadku byłby filtr adaptacyjny...
aj sory, częstotliwość jest nieznana, to nie.
-
5. Data: 2009-08-09 13:28:15
Temat: Re: cyfrowa obróbka sygnału
Od: Konop <k...@g...pl>
> Do wejścia ADC został doprowadzony sygnał analogowy o paśmie około
> 100-5000Hz. Co pewien czas w sygnale pojawia się wyraźnie dominująca
> składowa o częstotliwości od 200 do 4000Hz. Poza nią jest trochę szumu i
> zakłóceń harmonicznych. Ten dominujący sygnał trwa min. 0.2 sek. Zwykle
> około 1 sek. W tym czasie jego amplituda może się zmienić nawet 10 razy.
> Częstotliwość trochę się zmienia ale w zakresie 0.2 sek. w praktyce
> można uznać ją za stałą.
>
> W jaki sposób programowo wykryć pojawienie się tego dominującego sygnału
> i określić jego częstotliwość z dokładnością około 1% ?
Zależy na ile ta składowa jest "dominująca".. zakładam, że wybija się
znacznie ponad tło... wówczas robisz to tak... podajesz sygnał, przez
dobry filtr AA. Próbkujesz go 20kHz i z każdej paczki po 0,1s liczysz
FFT. Mierzysz średni poziom sygnału w zakresie 200-4000Hz. Jeśli jakaś
próbka przekracza ZNACZNIE poziom średni (żeby ustalić ten próg trzeba
znać widmo przebiegu bez sygnału i z sygnałem) to przyjmujesz, że to
jest Twój sygnał... przy danych jak wcześniej FFT liczone jest z 2000
próbek, czyli masz rozdzielczość na poziomie 10Hz... czyli dla 4kHz masz
mały bład, ale dla 200Hz jest to aż 5% błędu... jeśli to zły wynik -
musisz zwiększyć częstotliwość próbkowania lub zwiększyć okno czasowe...
ale jego zwiększenie może spowodować, że nie zauważysz sygnału
(pamiętaj, że jest on wysyłany asynchronicznie, więc może przyjść w
połowie Twojego okna)....
Pozdrawiam
Konop
-
6. Data: 2009-08-09 13:52:31
Temat: Re: cyfrowa obróbka sygnału
Od: Paweł <p...@n...pl>
> Zależy na ile ta składowa jest "dominująca".. zakładam, że wybija się
> znacznie ponad tło... wówczas robisz to tak... podajesz sygnał, przez
> dobry filtr AA. Próbkujesz go 20kHz i z każdej paczki po 0,1s liczysz
> FFT. Mierzysz średni poziom sygnału w zakresie 200-4000Hz. Jeśli jakaś
> próbka przekracza ZNACZNIE poziom średni (żeby ustalić ten próg trzeba
> znać widmo przebiegu bez sygnału i z sygnałem) to przyjmujesz, że to
> jest Twój sygnał... przy danych jak wcześniej FFT liczone jest z 2000
> próbek, czyli masz rozdzielczość na poziomie 10Hz... czyli dla 4kHz masz
> mały bład, ale dla 200Hz jest to aż 5% błędu... jeśli to zły wynik -
> musisz zwiększyć częstotliwość próbkowania lub zwiększyć okno czasowe...
> ale jego zwiększenie może spowodować, że nie zauważysz sygnału
> (pamiętaj, że jest on wysyłany asynchronicznie, więc może przyjść w
> połowie Twojego okna)....
Tak chciałem to zrobić. Wykonałem nawet kilka doświadczeń. Jednak jak
FFT jest liczone dla malej ilości próbek np. dla 200 to trudno wykryć
ten właściwy sygnał. Zwiększenie ilości punktów np. do 2000 daje bardzo
dobre rezultaty ale wymaga znacznego zwiększenia ilości częstotliwości
dla których jest liczone FFT. W praktyce na tanim ARMie mogę to zrobić w
czasie rzeczywistym tylko dla 40-50 częstotliwości. Aby wykonać to z
rozdzielczością 10Hz potrzebny jest min. 10x szybszy procesor. Tego
jednak chcę uniknąć. Szukam więc jakiegoś prostszego algorytmu.
Paweł
-
7. Data: 2009-08-09 21:11:56
Temat: Re: cyfrowa obróbka sygnału
Od: Konop <k...@g...pl>
> Tak chciałem to zrobić. Wykonałem nawet kilka doświadczeń. Jednak jak
> FFT jest liczone dla malej ilości próbek np. dla 200 to trudno wykryć
> ten właściwy sygnał. Zwiększenie ilości punktów np. do 2000 daje bardzo
> dobre rezultaty ale wymaga znacznego zwiększenia ilości częstotliwości
> dla których jest liczone FFT. W praktyce na tanim ARMie mogę to zrobić w
> czasie rzeczywistym tylko dla 40-50 częstotliwości. Aby wykonać to z
> rozdzielczością 10Hz potrzebny jest min. 10x szybszy procesor. Tego
> jednak chcę uniknąć. Szukam więc jakiegoś prostszego algorytmu.
Dla 2000 czy dla 2048?? :)... Bo to mała różnica, algorytm FFT jest
optymalny dla ilości próbek równych 2^k ;)... Swoją drogą - nie
implementowałem takiego FFT nigdy.. ale wydaje mi się, że ARM powinien
sobie z tym poradzić ;)... na ile go puszczasz?? 60MHz, 70?? i z jakiej
biblioteki FFT korzystasz?? czy proc robi coś w tle, czy może 100%
swoich możliwości przekazać na te obliczenia??
Pozdrawiam
Konop
-
8. Data: 2009-08-10 05:38:39
Temat: Re: cyfrowa obróbka sygnału
Od: Paweł <p...@n...pl>
> Dla 2000 czy dla 2048?? :)... Bo to mała różnica, algorytm FFT jest
> optymalny dla ilości próbek równych 2^k ;)
Dla mojego algorytmu jest to bez znaczenia. Szuka się największego
prążka a nie dokładnej amplitudy. Dla obliczenia amplitudy trzeba
wykonać jeszcze dzielenie przez ilość próbek. Dla 2048 można zastąpić je
przesunięciem co jest szybsze.
... Swoją drogą - nie
> implementowałem takiego FFT nigdy.. ale wydaje mi się, że ARM powinien
> sobie z tym poradzić ;)... na ile go puszczasz?? 60MHz, 70?? i z jakiej
> biblioteki FFT korzystasz?? czy proc robi coś w tle, czy może 100%
> swoich możliwości przekazać na te obliczenia??
FFT sam sobie napisałem w ASM. W praktyce dla 50MHz ARMa w czasie
1/16000 sek. (co tyle są pobierane próbki z ADC) można wykonać
obliczenia tylko dla 40-50 częstotliwości.
Paweł
-
9. Data: 2009-08-10 08:57:52
Temat: Re: cyfrowa obróbka sygnału
Od: pgw <"SwietyMikolaj["@]poczta.onet.pl>
Paweł wrote:
>> Dla 2000 czy dla 2048?? :)... Bo to mała różnica, algorytm FFT jest
>> optymalny dla ilości próbek równych 2^k ;)
>
> Dla mojego algorytmu jest to bez znaczenia. Szuka się największego
> prążka a nie dokładnej amplitudy. Dla obliczenia amplitudy trzeba
> wykonać jeszcze dzielenie przez ilość próbek. Dla 2048 można zastąpić je
> przesunięciem co jest szybsze.
Ciekawy jestem co to za algorytm zastosowales, ktoremu bez roznicy jest czy
to 2000 czy to 2048 probek, pytam bez sarkazmu z ciekawosci :)
> ... Swoją drogą - nie
>> implementowałem takiego FFT nigdy.. ale wydaje mi się, że ARM powinien
>> sobie z tym poradzić ;)... na ile go puszczasz?? 60MHz, 70?? i z jakiej
>> biblioteki FFT korzystasz?? czy proc robi coś w tle, czy może 100%
>> swoich możliwości przekazać na te obliczenia??
>
> FFT sam sobie napisałem w ASM. W praktyce dla 50MHz ARMa w czasie
> 1/16000 sek. (co tyle są pobierane próbki z ADC) można wykonać
> obliczenia tylko dla 40-50 częstotliwości.
A po co liczysz FFT dla kazdej nowej probki? to Ci nic nie daje.
--
pgw
-
10. Data: 2009-08-10 09:03:19
Temat: Re: cyfrowa obróbka sygnału
Od: pgw <"SwietyMikolaj["@]poczta.onet.pl>
Konop wrote:
> Zależy na ile ta składowa jest "dominująca".. zakładam, że wybija się
> znacznie ponad tło... wówczas robisz to tak... podajesz sygnał, przez
> dobry filtr AA. Próbkujesz go 20kHz i z każdej paczki po 0,1s liczysz
> FFT. Mierzysz średni poziom sygnału w zakresie 200-4000Hz. Jeśli jakaś
> próbka przekracza ZNACZNIE poziom średni (żeby ustalić ten próg trzeba
> znać widmo przebiegu bez sygnału i z sygnałem) to przyjmujesz, że to
> jest Twój sygnał... przy danych jak wcześniej FFT liczone jest z 2000
> próbek, czyli masz rozdzielczość na poziomie 10Hz... czyli dla 4kHz masz
> mały bład, ale dla 200Hz jest to aż 5% błędu...
Rozdzielczosc 10Hz ale blad 5Hz - 2,5%
> jeśli to zły wynik -
> musisz zwiększyć częstotliwość próbkowania lub zwiększyć okno czasowe...
Zwiekszenie czestotliwosci probkowania nie poprawi rozdzielczosci
częstotliwosciowej tylko zwiekszy pasmo, tu trzeba zwiekszyc okno do 0,25s
--
pgw