Биквадратный фильтр
Аналого-цифровые устройста. Г.И.Волович, 2005.
Наиболее близко по идее построения к фильтру на основе метода переменных состояния примыкает так называемый биквадратный фильтр, схема которого приведена на Рис. 1. Если принять R1*R3=R2*R7 то V2 можно использовать как выходное напряжение звена эллиптического фильтра. Если же R7 = oo и R8 = oo то выходное напряжение V3 соответствует звену 2-го порядка полиномиальных фильтров: Баттерворта, Чебышева и Бесселя. Так же как и фильтр, построенный на основе метода переменных состояний, биквадратный фильтр мало чувствителен к неточности элементов и прост в настройке.
Параметры схемы, реализующей какой-либо из фильтров Баттерворта, Чебышева и Бесселя, выходным сигналом для которых является напряжение V2 при условиях R7 = oo и R8 = oo , определяют следующим образом. Выбирают требуемое значение емкости С1 базируясь на полосе пропускания, а затем находят значения остальных элементов по формулам.
Рис. 1. Схема биквадратного фильтра
> | restart: with(MSpice): ESolve(Q,`Biqvadtat/OP-PSpiceFiles/SCHEMATIC1/SCHEMATIC1.net`); |
MSpice v8.93: http://pspicelib.narod.ru
Заданы источники: [Vвх]
Заданы узлы: {VINP}
Получены решения:
V_NET:=[V1, V4, V2, V5, V3, V6]:
J_NET:=[JC2, JR2, JR6, JR4, JR8, JR1, JR7, JVвх, JR5, JC1, JR3]:
Для упрощения формул примем, что ОУ идеальные и обладают бесконечным усилением.
> | A1:=A: A2:=A: A3:=A: |
> | H[2]:=collect(limit(V2/Vвх,A=infinity),s); H[3]:=collect(limit(V3/Vвх,A=infinity),s); |
> | C1:=C: C2:=C: R3:=R: R4:=R: R3:=R2*R7/R1: H[2]:=simplify(H[2]); |
Перейдем ч частотную область
> | K[2]:=simplify(converth(H[2],f),'size'); |
> | Fp[2]:=I*solve(diff(abs(K[2]),f)=0,f)[2],(` - центральная частота`); |
Найдем частоты уровня режекции 3dB и полосу пропускания
> | F_3dB:=solve(evalc(abs(K[2]))=limit(K[2],f=0)/sqrt(2),f): |
> | print(`Полоса пропускания по уровню 3dB`); BW[2]:=simplify(F_3dB[3]-F_3dB[5]); |
Теперь подставим номиналы компонентов и построим АЧХ фильтра
> | Values(AC,RLCVI,[]): C:=10e-9: R:=300e3: |
Номиналы компонентов:
R2:=30e3: [30K]
C2:=10e-9: [10n]
R4:=300e3: [300K]
R6:=100e3: [100K]
R8:=100e3: [100K]
R7:=100e3: [100K]
R1:=10e3: [10K]
C1:=10e-9: [10n]
R5:=10e3: [10K]
R3:=300e3: [300K]
A3:=1e6: [1e6]
A1:=1e6: [1e6]
A2:=1e6: [1e6]
AC источник: Vвх:=1: AC: Vвх:=1: Pfase(degrees):=0:
> | H[2]:=H[2]; H[3]:=H[3]; print(`Полоса пропускания по уровню 3dB`); BW[2]:=evalf(abs(BW[2])),`[Гц] - 3ДБ полоса пропускания`; fo[2]:=evalf(Fp[2]); ploth([H[2],H[3]],f=10..10e3,"2) semi[H[2],H[3]] биквадратного фильтра"); |