Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom – w tych trudnych czasach –
Zdrowych, Spokojnych i Pogodnych Świąt Bożego Narodzenia oraz
Szczęśliwego Nowego Roku

Życzy Zespół Home Made


Odpowiedz 
 
Ocena wątku:
  • 1 Głosów - 5 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Odbiornik SDR - "samoróbka"
SQ6QV Offline
Tomek
***

Liczba postów: 107
Dołączył: 24-01-2014
Post: #11
RE: Odbiornik SDR - "samoróbka"
(16-12-2016 10:37)SQ2RUU napisał(a):  Mam do kolegów pytanie ( wiem - lamerskie...) gdzie można znaleźć opisy algorytmów SDR . Niestety google nic nie podpowiada. Jak pozbyć się "lustrzanych częstotliwości" po detektorze ?

Zanim zaczniesz budować... może najpierw się pobaw.
zobacz to repozytorium
https://github.com/simonyiszk/csdr

Jest tam oprogramowanie które blok po bloku robi całą potrzebną obróbkę.

przykładowo ta komenda to demodulacja SSB

rtl_sdr -s 2400000 -f 145000000 -g 20 - | csdr convert_u8_f | csdr shift_addition_cc `python -c "print float(145000000-144400000)/2400000"` | csdr fir_decimate_cc 50 0.005 HAMMING | csdr bandpass_fir_fft_cc 0 0.1 0.05 | csdr realpart_cf | csdr agc_ff | csdr limit_ff | csdr convert_f_s16 | mplayer -cache 1024 -quiet -rawaudio samplesize=2:channels=1:rate=48000 -demuxer rawaudio -

z tego można się bardzo wiele nauczyć, a bawiąc się linią komend można eksperymentować:

rtl_sdr -s 2400000 -f 145000000 = pobierz z RTLSDR 2.4 mln sampli /sek z częstotlwością środkową 145Mhz - wypadają z tego sample IQ.

csdr convert_u8_f = zamień dane unsigned 8-bit na float (czyli bajt na liczbę zmiennoprzecinkową

csdr shift_addition_cc - przesuwa częstotliwość środkową sygnału - tutaj
shift_addition_cc `python -c "print float(145000000-144400000)/2400000"`
czyli na 144.4Mhz

csdr fir_decimate_cc 50 0.005 HAMMING = to jest filtr dolnoprzepustowy wraz ze zmianą częstotliwości samplowania, 2400000 sampli /50 = 48000 sampli na sekundę. Filtr tnie na 12khz

csdr bandpass_fir_fft_cc 0 0.1 0.05 = to filtr pasmowy - wycina pasmo pomiędzy 0khz a 0.1*48khz = czyli pozostaje pasmo 0-4800Hz

to co zostanie jest wrzucane na te bloki - które sprowadzają sygnał do domeny rzeczywistej, robią AGC i wyjście audio

csdr realpart_cf | csdr agc_ff | csdr limit_ff | csdr convert_f_s16 | mplayer


--------------------------
Jak pozbyć się "lustrzanych częstotliwości" po detektorze ?

tnie je filtr cyfrowy na sygnale kwadraturowym

Może łatwiej to będzie wytłumaczyć na przykładzie nadawania
https://github.com/ha7ilm/rpitx-app-note

zobacz różnicę pomiędzy "generate LSB i generate USB"
csdr dsb_fc | csdr bandpass_fir_fft_cc -0.1 0 0.01
csdr dsb_fc | csdr bandpass_fir_fft_cc 0 0.1 0.01

czyli generuj DSB, a potem filtr przepuszcza jedną lub drugą wstęgę - cała reszta jest taka sama.

-----------
Także w teorii to jest skomplikowane, Ale gotowe bloki upraszczają to wszystko bardzo.

Teraz sobie zdałem sprawę, że chyba nie o to koledze chodziło, tylko o to:
http://stackoverflow.com/questions/37809...s-and-vice

co robi funkcja:
csdr shift_addition_fc

https://github.com/simonyiszk/csdr/blob/...csdr_gpl.c
Późno już Smile
(Ten post był ostatnio modyfikowany: 04-05-2017 1:37 przez SQ6QV.)
03-05-2017 23:25
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości