prążków.

Jan 26, 2011 8 Replies

Hej,



Nie mam doświadczenia w technikach DSP; mam za do ADC i procesor z szybkim mnożeniem i dzieleniem (dsPIC30) i paroma innymi featurkami.



Potrzebuje z sygnału wejściowego (AFSK, 1200 + 2400 Hz) wyciągnąć te prążki celem poddania dalszej detekcji. Wiem, że można to zrobić przy pomocy FFT, ale może są jakieś łatwiejsze do implementacji algorytmy. Bardzo proszę grupowych matematyków o nakierowanie :-)



W dniu 2011-01-26 15:22, Verox pisze:

nie jestem matematykiem, ale popatrz na Goerztla

On Wed, 26 Jan 2011 15:50:25 +0100, Michał Baszyński napisał:

Dziękuje, w weekend postaram się to zaimplementować :-)

Witam Czy potrzebna armata, skoro da się zrobić na malutkim procku coś podobnego.

formatting link

On Thu, 27 Jan 2011 14:42:21 +0100, EM napisał:

Witaj,

No jakiś algorytm musi tam być zaszyty, niestety nie ma źródeł. Dokładnie chcę zrobić własnego trackera, jadnak takiego z odbiorem i analizą przychodzących ramek.

Tak, wiem że są gotowce, ale chcę zrobić sam i przy okazji się nauczyć czegoś nowego :-)

On Wed, 26 Jan 2011 15:50:25 +0100, Michał Baszyński napisał:

Dziękuję pięknie, wziąłem algo z wikipedii:

formatting link
I działa :-)

wyniki symulacji dla f_probkowania=16 kHz

ponośna 2200 Hz:

freq = 500.000000 Hz pwr = 3630.037598 lvl=0 freq = 600.000000 Hz pwr = 6390.092285 lvl=0 freq = 700.000000 Hz pwr = 6390.092285 lvl=0 freq = 800.000000 Hz pwr = 6390.092285 lvl=0 freq = 900.000000 Hz pwr = 10942.559570 lvl=0 freq = 950.000000 Hz pwr = 10942.559570 lvl=0 freq = 1000.000000 Hz pwr = 10942.559570 lvl=0 freq = 1100.000000 Hz pwr = 21924.453125 lvl=1 freq = 1180.000000 Hz pwr = 21924.453125 lvl=1 freq = 1190.000000 Hz pwr = 21924.453125 lvl=1 freq = 1200.000000 Hz pwr = 21924.453125 lvl=1 freq = 1210.000000 Hz pwr = 21924.453125 lvl=1 freq = 1220.000000 Hz pwr = 21924.453125 lvl=1 freq = 1230.000000 Hz pwr = 21924.453125 lvl=1 freq = 1250.000000 Hz pwr = 21924.453125 lvl=1 freq = 1300.000000 Hz pwr = 21924.453125 lvl=1 freq = 1500.000000 Hz pwr = 44501.601562 lvl=2 freq = 2000.000000 Hz pwr = 412674.156250 lvl=20 freq = 2100.000000 Hz pwr = 15191353.000000 lvl=247 freq = 2150.000000 Hz pwr = 15191353.000000 lvl=247 freq = 2180.000000 Hz pwr = 15191353.000000 lvl=247 freq = 2190.000000 Hz pwr = 15191353.000000 lvl=247 freq = 2200.000000 Hz pwr = 15191353.000000 lvl=247 freq = 2210.000000 Hz pwr = 15191353.000000 lvl=247 freq = 2220.000000 Hz pwr = 15191353.000000 lvl=247 freq = 2250.000000 Hz pwr = 15191353.000000 lvl=247 freq = 2300.000000 Hz pwr = 1229633.875000 lvl=61 freq = 2400.000000 Hz pwr = 1229633.875000 lvl=61 freq = 3000.000000 Hz pwr = 69920.218750 lvl=3 freq = 3500.000000 Hz pwr = 34523.902344 lvl=1 freq = 4000.000000 Hz pwr = 21944.585938 lvl=1

podnośna 1200 Hz

freq = 500.000000 Hz pwr = 419.161530 lvl=0 freq = 600.000000 Hz pwr = 1563.212891 lvl=0 freq = 700.000000 Hz pwr = 1563.212891 lvl=0 freq = 800.000000 Hz pwr = 1563.212891 lvl=0 freq = 900.000000 Hz pwr = 8458.195312 lvl=0 freq = 950.000000 Hz pwr = 8458.195312 lvl=0 freq = 1000.000000 Hz pwr = 8458.195312 lvl=0 freq = 1100.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1180.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1190.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1200.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1210.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1220.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1230.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1250.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1300.000000 Hz pwr = 17934266.000000 lvl=128 freq = 1500.000000 Hz pwr = 14059.884766 lvl=0 freq = 2000.000000 Hz pwr = 2022.837646 lvl=0 freq = 2100.000000 Hz pwr = 1150.462524 lvl=0 freq = 2150.000000 Hz pwr = 1150.462524 lvl=0 freq = 2180.000000 Hz pwr = 1150.462524 lvl=0 freq = 2190.000000 Hz pwr = 1150.462524 lvl=0 freq = 2200.000000 Hz pwr = 1150.462524 lvl=0 freq = 2210.000000 Hz pwr = 1150.462524 lvl=0 freq = 2220.000000 Hz pwr = 1150.462524 lvl=0 freq = 2250.000000 Hz pwr = 1150.462524 lvl=0 freq = 2300.000000 Hz pwr = 806.450989 lvl=0 freq = 2400.000000 Hz pwr = 806.450989 lvl=0 freq = 3000.000000 Hz pwr = 394.281921 lvl=0 freq = 3500.000000 Hz pwr = 356.505646 lvl=0 freq = 4000.000000 Hz pwr = 229.909637 lvl=0

Dziwi mnie tylko to, że przy jednakowej amplitudzie sygnału wejściowego (bo jest wyliczony :-), algorytm daje wyniki mocno różniące się na wyjściu. W moim zastosowaniu to nie przeszkadza - ot taka ciekawostka :-)

W dniu 2011-01-29 23:52, Verox pisze:

formatting link

?Użytkownik "EM" napisał w wiadomości grup dyskusyjnych:ihrso4$aqf$ snipped-for-privacy@news.onet.pl...

Przypomniały mi się czasy Packet Radio w latach `90, skakałem jak głupek po pokoju gdy poskładałem modem, zestroiłem i na ekranie zaczęły lecieć ramki, Amiga + Lincoln i byłem gość POL1PE :)

do dekodowania FSK nie potrzebujesz Groetzla , bo nie musisz dekodowac dwoch czestotliwosci rownoczesnie (Frequency Shift - wiec czestotliwosc sie przesuwa, albo jest niska, albo wysoka). innymi slowy, wystarczy ze napiszesz prosty dyskriminator z przelomem przy np. 1700hz i wsio. na wejscie mozna dodac jeszcze jakis prymitywny filtr aktywny poprawiajacy SNR - dwa lm358 i pare elementow bedzie dzialac o niebo szybciej i lepiej niz proba wyluskania sygnalu z danych z 12bit ADC ...

osobiscie troche bawilem sie dekoderami fsk na pic16f628 , i fakt faktem uzycie czegos 'silniejszego' (tzn. samplujacego wejscie przez adc , a nie tylko zero-crossing) jest wskazane - uklad jest bardzo czuly na intermodulacje i przesterowanie (wykrywa harmoniczne) wiec potrzeba nie tylko analogowego filtru na wejscie, ale i limitera...

jesli jednak sygnal jest 'ladny' to ukladzik bezproblemowo daje rade :)

--

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required