You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.0 KiB
37 lines
1.0 KiB
% rtlsdr_bpf.m
|
|
%
|
|
% David Rowe 24 August 2018
|
|
%
|
|
% Calculate component values for cascaded HP-LP 2-8 MHz Chebychev filter
|
|
%
|
|
% From "RF Circuit Design", Chris Bowick, Ch 3
|
|
|
|
1;
|
|
|
|
function C = find_C(Cn, fc, R)
|
|
C = Cn/(2*pi*fc*R);
|
|
endfunction
|
|
|
|
function L = find_L(Ln, fc, R)
|
|
L = R*Ln/(2*pi*fc);
|
|
endfunction
|
|
|
|
% 3rd order HP filter, 1dB ripple Cheby, 3MHz cut off, >20dB down at
|
|
% 1MHz to nail stong AM broadcast signals, Table 3-7A. Use a Rs=50,
|
|
% Rl=50, so Rs/Rl = 1. Note we assume a or phantom load in between
|
|
% cascaded HP-LP sections of 50 ohms.
|
|
|
|
L1 = find_L(1/2.216, 3E6, 50);
|
|
C1 = find_C(1/1.088, 3E6, 50);
|
|
L2 = find_L(1/2.216, 3E6, 50);
|
|
|
|
printf("L1: %f uH C1: %f pF L2: %f uH\n", L1*1E6, C1*1E12, L2*1E6);
|
|
|
|
% 3rd order LPF, 8MHz cut off so >30dB down at 21MHz, which aliases back to 7MHz
|
|
% with Fs=28MHz on RTLSDR (14 MHz Nyquist freq). Rs=50, Rl=50, Rs/Rl = 1
|
|
|
|
C2 = find_C(2.216, 9E6, 50);
|
|
L3 = find_L(1.088, 9E6, 50);
|
|
C3 = find_C(2.216, 9E6, 50);
|
|
|
|
printf("C2: %f pF L3: %f uH C3: %f pF\n", C2*1E12, L3*1E6, C3*1E12);
|
|
|