Выводы
В процессе выполнения курсовой работы была спроектирована схема фильтра нижних частот. Для расчета схемы фильтра была разработана программа, реализующая изложенную выше методику расчета схемы фильтра нижних частот с максимально плоской аппроксимацией АЧХ ( по Баттерворту ). В результате выполнения этой программы была получена схема фильтра нижних частот восьмого порядка, состоящая из четырех последовательно включенных звеньев второго порядка, построенных по схеме с многопетлевой обратной связью.
Далее было проведено моделирование АЧХ полученной схемы фильтра с помощью пакета ALLTED. В качестве задания на моделирования использовался файл, автоматически сгенерированный разработанной программой. Полученные результаты несколько отличаются от рассчитанных с помощью разработанной программы, однако, в целом требования к параметрам АЧХ были удовлетворены, что свидетельствует о правильности описанной выше методики. Отклонения предполагаемых результатов от полученных при моделировании вызваны очевидно тем, что методика расчета предполагает, использование идеального операционного усилителя, а при моделировании в пакете ALLTED используется модель, приближенная к реальному операционному усилителю. Учитывая это обстоятельство, а также неизбежный разброс номиналов емкостных и резистивных компонентов в реальном устройстве, можно сделать вывод о том, что полученная схема фильтра нижних частот восьмого порядка имеет недостаточный запас по минимальному затуханию в полосе задерживания (при моделировании запас = 30.29 дБ - 30 дБ = 0.29 дБ ; в теории запас = 30.33 дБ -30 дБ =0.33 дБ ).Таким образом, при построении реального устройства следует взять порядок фильтра равным 9 вместо 8, что обеспечит достаточный запас по минимальному затуханию в полосе задерживания ( порядка 4.4 дБ).
СОДЕРЖАНИЕ
П1. Листинг разработанной программы, реализующей методику расчета
П2. Результаты расчета фильтра с помощью разработанной программы
П3. График АЧХ фильтра, полученный с помощью разработанной программы
П4.Протокол расчета схемы фильтра с помощью разработанной программы
П5. Листинг задания на исследование в пакете ALLTED
П6. График АЧХ фильтра, полученный в пакете ALLTED
П7. Структурная схема ARC- фильтра
П1. Листинг разработанной программы, реализующей методику расчета
{ Программа расчета активных RC-фильтров нижних частот }
{ с аппроксимацией частотных характеристик по Баттерворту }
{ ФЭЛ НТУУ "КПИ" - Киев 2000 }
Program ARC;
Uses Crt,Graph;
Const
R0 = 1e+5; { нормирующий коэффициент }
MAX_ORDER = 50; { максимальный порядок фильтра }
POINTS = 400; { количество точек для расчета АЧХ }
atd_file = filter.atd;
tab_file = filter.tab;
txt_file = filter.txt;
Type
complex = record { комплексное число }
im : double;
re : double;
end;
ShemType = (invert,MOS,bikvadrat); { тип схемной реализации звена }
section = record { описание звена }
shem : ShemType; { тип схемы }
R1,R2,R3,R4,C1,C2:double; { номиналы компонентов схемы }
Q : double; { добротность }
end;
Var
Fc : double; { частота среза }
F1 : double; { граничная частота полосы задерживания }
Af : double; { макс. неравномерность в полосе пропускания }
Bf : double; { мин. затухание в полосе задерживания }
F0 : double; { нормирующая частота }
N : integer; { порядок фильтра }
H : double; { числитель передаточной функции }
Hi : double; { числитель передаточной функции каждого звена }
sigma0:double; { радиус полуокружности на которой находятся полюса }
Poles : array[1..MAX_ORDER div 2 + 1] of complex; {массив полюсов}
Sections: array[1..MAX_ORDER div 2 + 1] of section; {массив звеньев}
AFC : array[1..POINTS] of double; {массив АЧХ}
sect : integer; {кол-во звеньев}
low_freq :double; { нижняя граница частоты для расчета АЧХ }
high_freq:double; { верхняя граница частоты для расчета АЧХ }
ch : char;
Function Lg(x:double):double; { десятичный логарифм }
var result:double;
begin
result:=Ln(x)/2.30258509299405E+0000; { Lg(x)=Ln(x)/Ln(10)}
Lg:=result;
end;
Function Pow10(x:double):double; { 10 в степени x }
var result:double;
begin
result:=exp(x*2.30258509299405E+0000);
pow10:=result;
end;
Function Pow(a:double;x:double):double; { pow(a,x)=a^x }
var result:double;
begin
if (a<=0) then Halt(1);
result:=exp(x*ln(a));
pow:=result;
end;
Procedure _Add(a:complex; b:complex; var c:complex);{комплексное сложение}
begin
c.re:= a.re + b.re;
c.im:= a.im + b.im;
end;
Procedure _Sub(a:complex; b:complex; var c:complex);{комплексное вычитание}
begin
c.re:= a.re - b.re;
c.im:= a.im - b.im;
end;
Procedure _Mult(a:complex; b:complex; var c:complex);{комплексное умножение}
begin
c.re:= a.re*b.re - a.im*b.im;
c.im:= a.re*b.im + a.im*b.re;
end;
Function _Abs(a:complex):double; { модуль комплексного числа }
var result:double;
begin
result:=sqrt(sqr(a.re)+sqr(a.im));
_Abs:=result;
end;
Procedure _Div(a:complex; b:complex; var c:complex);{комплексное деление}
begin
b.im:=-b.im;
_Mult(a,b,c);
c.re:= c.re/(sqr(b.re)+sqr(b.im));
c.im:= c.im/(sqr(b.re)+sqr(b.im));
end;
Procedure LowPassFilter_Parameters;{ ввод исходных данных для расчета }
var ch : char;
error : boolean;
begin
error:=true;
while error do
begin
ClrScr;
TextColor(LIGHTGREEN);
writeln(Ввод исходных данных для расчета ARC-ФНЧ);
writeln(----------------------------------------);
GoToXY(1,4);
write(Частота среза Fc, Гц : ); read(Fc); writeln;
writeln(Неравномерность коэф. передачи );
write(в полосе пропускания Aф, дБ : ); read(Af); writeln;
writeln(Граничная частота полосы);
write(задерживания F1, Гц : ); read(F1); writeln;
writeln(Минимальное затухание );
write(в полосе задерживания Bф, дБ : ); read(Bf); writeln;
TextColor(LIGHTRED);
if (Fc<=0) or (F1<=0) then
writeln (Ошибка в исходных данных : Fc<=0 или F1<=0)
else
if (Af<=0) or (Bf<=0) then
writeln (Ошибка в исходных данных : Aф <=0 или Bф <=0)
else
if Af>=Bf then
writeln (Ошибка в исходных данных : Aф >= Bф !)
else
if Fc>F1 then
writeln (Ошибка в исходных данных : Fc >= F1 !)
else
error:=false;
writeln(Нажмите Enter);ch:=#255;
while ch<>#13 do ch:=Readkey;
TextColor(LIGHTGREEN);
end;
end;
Procedure LowPassFilter_Norming;{ нормирование частот }
begin
F0:=Fc;
Fc:=1;
F1:=F1/F0;
end;
Procedure LowPassFilter_Batterworth_Order; { расчет порядка фильтра }
var order:double;
begin
order:=0.5*lg((pow10(0.1*Bf)-1)/
(pow10(0.1*Af)-1))/
lg(F1);
if order>MAX_ORDER then
begin
TextColor(LIGHTRED);
writeln(Программа не может рассчитать фильтр);
writeln(Требуемый порядок фильтра превышает ,MAX_ORDER);
writeln(Требуется порядок фильтра = ,order);
writeln(Нажмите Enter);ch:=#255;
while ch<>#13 do ch:=Readkey;
TextColor(LIGHTGREEN);
Halt(1);
end;
if order<=0 then
begin
TextColor(LIGHTRED);
writeln(Программа не может рассчитать фильтр);
writeln(Получен отрицательный или нулевой порядок фильтра = ,order);
writeln(Нажмите Enter);ch:=#255;
while ch<>#13 do ch:=Readkey;
TextColor(LIGHTGREEN);
Halt(1);
end;
N:=Trunc(order)+1;
if (N mod 2 = 1) then sect:= N div 2 + 1
else sect:= N div 2;
end;
Procedure LowPassFilter_Batterworth_Sigma0;{расчет радиуса полуокружности}
begin
sigma0:=pow(pow10(0.1*Af)-1,-1/(2*N));
end;
Procedure LowPassFilter_Batterworth_H;{расчет числителя передаточной функции}
begin
H := 1.0/sqrt(pow10(0.1*Af)-1);
Hi:=H;
end;
Procedure LowPassFilter_Batterworth_Poles;{расчет полюсов фильтра}
var i:integer;
begin
for i:=1 to sect do
begin
poles[sect-i+1].re:= - sigma0 * sin ((2*i-1)*Pi/(2*N));
poles[sect-i+1].im:= - sigma0 * cos ((2*i-1)*Pi/(2*N));
end;
{ при нечетном N звену первого порядка соответствует poles[1]}
end;
{ выбор схемной реализации и расчет номиналов }
Procedure LowPassFilter_Building;
var i : integer;
C : double;
delta : double;
beta : double;
gamma : double;
scale : double;
D:double;
begin
{ C задается таким образом, чтобы при денормировании получить 1.0}
C:=(2*pi*f0)/(pow10(Trunc(lg(f0))+1.0));
i:=1;
{ при нечетном N звену первого порядка соответствует poles[1]}
if (N mod 2 = 1) then {построение звена первого порядка}
begin
delta:= -poles[1].re;
sections[1].shem := invert; {на инвертирующем ОУ}
sections[1].C1 := C;
sections[1].R1 := 1/(C*Hi);
sections[1].R2 := 1/(C*delta);
i:=2;
Hi:=1;
end;
while i<=sect do {построение звена второго порядка}
begin
beta := -2*poles[i].re;
gamma:= sqr(poles[i].re)+sqr(poles[i].im);
sections[i].Q:=sqrt(gamma)/beta;
if sections[i].Q<=10 then with sections[i] do
begin
shem := MOS; {с многопетлевой обратной связью}
C1 := C;
scale:= 1.001*4*gamma*(Hi/gamma+1)/(beta*beta);
C2 := C1*scale;
D := beta*beta*C2*C2 - 4*C1*C2*gamma*(Hi/gamma+1);
R2 := 2*(Hi/gamma+1)/(beta*C2 + sqrt(D));
R1 := R2*gamma/Hi;
R3 := 1.0/(C1*C2*R2*gamma);
end
else with sections[i] do
begin
shem := bikvadrat; {биквадратное звено}
C1 := C;
R4 := 1.0/C1;
R1 := 1.0/(Hi*C1*C1*R4);
R2 := 1.0/(beta*C1);
R3 := 1.0/(R4*C1*C1*gamma);
end;
i:=i+1;
Hi:=1;
end;
end;
{ денормирование электрических параметров }
Procedure LowPassFilter_Denorming;
var i:integer;
begin
for i:=1 to sect do
begin
sections[i].R1:= sections[i].R1 * R0;
sections[i].R2:= sections[i].R2 * R0;
sections[i].R3:= sections[i].R3 * R0;
sections[i].R4:= sections[i].R4 * R0;
sections[i].C1:= sections[i].C1 / (R0*2*pi*f0);
sections[i].C2:= sections[i].C2 / (R0*2*pi*f0);
end;
end;
Procedure LowPassFilter_Info;{ вывод результатов расчета фильтра}
var i,j:integer;
f:text;
begin
Assign(f,txt_file);
Rewrite(f);
ClrScr;
writeln( Результаты расчета ФНЧ с аппроксимацией АЧХ по Баттерворту );
writeln(------------------------------------------------------------------------------);
writeln(Исходные данные : Частота среза Fc = ,Fc*F0:10:4, Гц);
writeln( Неравномерность Аф = ,Af :10:4, дБ);
writeln( Граничная частота F1 = ,F1*F0:10:4, Гц);
writeln( Затухание BФ = ,Bf :10:4, дБ);
writeln(------------------------------------------------------------------------------);
writeln(порядок,тип звена Q С1,мкФ С2,мкФ R1,кОм R2,кОм R3,кОм R4,кОм );
writeln(------------------------------------------------------------------------------);
writeln(f, Результаты расчета ФНЧ с аппроксимацией АЧХ по Баттерворту );
writeln(f,------------------------------------------------------------------------------);
writeln(f,Исходные данные : Частота среза Fc = ,Fc*F0:10:4, Гц);
writeln(f, Неравномерность Аф = ,Af :10:4, дБ);
writeln(f, Граничная частота F1 = ,F1*F0:10:4, Гц);
writeln(f, Затухание BФ = ,Bf :10:4, дБ);
writeln(f,------------------------------------------------------------------------------);
writeln(f,Порядок фильтра = ,N);
writeln(f,Количество звеньев = ,sect);
writeln(f,------------------------------------------------------------------------------);
for i:=1 to sect do
begin
j:= whereY;
if sections[i].shem=invert then
begin
gotoxy( 1,j);writeln(1 инверт.ОУ);
gotoxy(24,j);writeln(sections[i].C1*1.0e+6:8:4);
gotoxy(42,j);writeln(sections[i].R1/1.0e+3:8:3);
gotoxy(51,j);writeln(sections[i].R2/1.0e+3:8:3);
writeln(f,Звено первого порядка);
writeln(f,на инвертирующем ОУ );
writeln(f,C1=,sections[i].C1*1.0e+6:10:4, мкФ);
writeln(f,R1=,sections[i].R1/1.0e+3:10:4, кОм);
writeln(f,R2=,sections[i].R2/1.0e+3:10:4, кОм);
writeln(f,---------------------);
end;
if sections[i].shem=MOS then
begin
gotoxy( 1,j);writeln(2 звено МОС);
gotoxy(15,j);writeln(sections[i].Q:8:4);
gotoxy(24,j);writeln(sections[i].C1*1.0e+6:8:4);
gotoxy(33,j);writeln(sections[i].C2*1.0e+6:8:4);
gotoxy(42,j);writeln(sections[i].R1/1.0e+3:8:3);
gotoxy(51,j);writeln(sections[i].R2/1.0e+3:8:3);
gotoxy(60,j);writeln(sections[i].R3/1.0e+3:8:3);
writeln(f,Звено второго порядка);
writeln(f,с многопетлевой ОС );
writeln(f,Q =,sections[i].Q:10:4);
writeln(f,C1=,sections[i].C1*1.0e+6:10:4, мкФ);
writeln(f,C2=,sections[i].C2*1.0e+6:10:4, мкФ);
writeln(f,R1=,sections[i].R1/1.0e+3:10:4, кОм);
writeln(f,R2=,sections[i].R2/1.0e+3:10:4, кОм);
writeln(f,R3=,sections[i].R3/1.0e+3:10:4, кОм);
writeln(f,---------------------);
end;
if sections[i].shem=bikvadrat then
begin
gotoxy( 1,j);writeln(2 биквадрат.);
gotoxy(15,j);writeln(sections[i].Q:8:4);
gotoxy(24,j);writeln(sections[i].C1*1.0e+6:8:4);
gotoxy(42,j);writeln(sections[i].R1/1.0e+3:8:3);
gotoxy(51,j);writeln(sections[i].R2/1.0e+3:8:3);
gotoxy(60,j);writeln(sections[i].R3/1.0e+3:8:3);
gotoxy(69,j);writeln(sections[i].R4/1.0e+3:8:3);
writeln(f,Звено второго порядка);
writeln(f,биквадратное );
writeln(f,Q =,sections[i].Q:10:4);
writeln(f,C1=,sections[i].C1*1.0e+6:10:4, мкФ);
writeln(f,R1=,sections[i].R1/1.0e+3:10:4, кОм);
writeln(f,R2=,sections[i].R2/1.0e+3:10:4, кОм);
writeln(f,R3=,sections[i].R3/1.0e+3:10:4, кОм);
writeln(f,R4=,sections[i].R4/1.0e+3:10:4, кОм);
writeln(f,---------------------);
end;
if (j = 20) then
begin
TextColor(LIGHTRED);
writeln(Нажмите Enter, чтобы посмотреть остальные звенья );
ch:=#255;
while ch<>#13 do ch:=Readkey;
TextColor(LIGHTGREEN);
ClrScr;
GoToXY(1,1);
writeln(------------------------------------------------------------------------------);
writeln(порядок,тип звена Q С1,мкФ С2,мкФ R1,кОм R2,кОм R3,кОм R4,кОм );
writeln(------------------------------------------------------------------------------);
end;
end;
writeln(------------------------------------------------------------------------------);
writeln(Порядок фильтра = ,N);
writeln(Количество звеньев = ,sect);
writeln(------------------------------------------------------------------------------);
Close(f);
TextColor(LIGHTRED);
writeln(Нажмите Enter);ch:=#255;
while ch<>#13 do ch:=Readkey;
TextColor(LIGHTGREEN);
end;
{ расчет АЧХ спроектированного фильтра }
Procedure LowPassFilter_AFC;
var g:text;
i,j:integer;
f,df,w:double;
K :complex;
pp :complex;
Hi , delta : double;
beta, gamma : double;
begin
Assign(g,tab_file);
Rewrite(g);
writeln(g,Таблица значений ЛАЧХ фильтра нижних частот:);
writeln(g,--------------------------------------------);
writeln(g, Частота Ку );
writeln(g,----------------------------);
low_freq :=1.0;
high_freq:=F1*F0*2.0;
df:=high_freq/POINTS;
f:=0.0;
j:=1;
while j<=POINTS do
begin
w:=2*pi*f;
K.re :=1; K.im :=0;
for i:=1 to sect do
begin
if sections[i].shem=invert then
begin
with sections[i] do
begin
Hi:=1/(R1*C1);
delta:=1/(R2*C1);
end;
K.re :=K.re*Hi;
K.im :=K.im*Hi;
pp.re:= delta;
pp.im:= w;
_Div(K,pp,K);
end;
if sections[i].shem=MOS then
begin
with sections[i] do
begin
Hi :=1/( R1*R3*C1*C2 );
beta :=( 1/R1 + 1/R2 + 1/R3 )/C2;
gamma:=1/(R2*R3*C1*C2);
end;
K.re :=K.re*Hi;
K.im :=K.im*Hi;
pp.re:=gamma - w*w;
pp.im:=beta*w;
_Div(K,pp,K);
end;
if sections[i].shem=bikvadrat then
begin
with sections[i] do
begin
Hi :=1/(R1*R4*C1*C1);
beta :=1/(R2*C1);
gamma:=1/(R3*R4*C1*C1);
end;
K.re :=K.re*Hi;
K.im :=K.im*Hi;
pp.re:=gamma - w*w;
pp.im:=beta*w;
_Div(K,pp,K);
end;
end;
AFC[j]:=20*lg(_Abs(K));
writeln(g,f:8:2, Гц ,AFC[j]:8:2, дБ );
f:=f+df;
j:=j+1;
end;
Close(g);
end;
{создание файла задания для моделирования АЧХ}
Procedure LowPassFilter_ALLTED;
var f:text;
i:integer;
k:integer; { узел для входа текущего звена }
r:integer;
c:integer;
qq:integer;
begin
Assign(f,atd_file);
Rewrite(f);
writeln(f,OBJECT; );
writeln(f,SEARCH PRAM; );
writeln(f,CIRCUIT ARCFLT; );
writeln(f,Ein(1,0)=1; );
k:=1; r:=1; c:=1; qq:=1;
for i:= 1 to sect do
begin
if sections[i].shem=invert then
with sections[i] do
begin
writeln(f,R,r,(,k ,,,k+1,)=,R2/1e+3:10:6,;); r:=r+1;
writeln(f,R,r,(,k+1,,,k+2,)=,R1/1e+3:10:6,;); r:=r+1;
writeln(f,C,c,(,k+1,,,k+2,)=,C1*1e+9:10:6,;); c:=c+1;
writeln(f,Q,qq,(0,,k+1,,0,,k+2,)=k140ud12.oulm;); qq:=qq+1;
k:=k+2;
end;
if sections[i].shem=MOS then
with sections[i] do
begin
writeln(f,R,r,(,k ,,,k+1,)=,R1/1e+3:10:6,;); r:=r+1;
writeln(f,R,r,(,k+1,,,k+3,)=,R2/1e+3:10:6,;); r:=r+1;
writeln(f,R,r,(,k+1,,,k+2,)=,R3/1e+3:10:6,;); r:=r+1;
writeln(f,C,c,(,k+2,,,k+3,)=,C1*1e+9:10:6,;); c:=c+1;
writeln(f,C,c,(,k+1,,, 0,)=,C2*1e+9:10:6,;); c:=c+1;
writeln(f,Q,qq,(0,,k+2,,0,,k+3,)=k140ud12.oulm;); qq:=qq+1;
k:=k+3;
end;
if sections[i].shem=bikvadrat then
with sections[i] do
begin
writeln(f,R,r,(,k ,,,k+1,)=,R1/1e+3:10:6,;); r:=r+1;
writeln(f,R,r,(,k+1,,,k+4,)=,R2/1e+3:10:6,;); r:=r+1;
writeln(f,R,r,(,k+1,,,k+2,)=,R3/1e+3:10:6,;); r:=r+1;
writeln(f,R,r,(,k+2,,,k+3,)=,R4/1e+3:10:6,;); r:=r+1;
writeln(f,R,r,(,k+3,,,k+6,)=,R4/1e+3:10:6,;); r:=r+1;
writeln(f,R,r,(,k+4,,,k+5,)=,R4/1e+3:10:6,;); r:=r+1;
writeln(f,C,c,(,k+1,,,k+4,)=,C1*1e+9:10:6,;); c:=c+1;
writeln(f,C,c,(,k+5,,,k+6,)=,C1*1e+9:10:6,;); c:=c+1;
writeln(f,Q,qq,(0,,k+1,,0,,k+4,)=k140ud12.oulm;); qq:=qq+1;
writeln(f,Q,qq,(0,,k+5,,0,,k+6,)=k140ud12.oulm;); qq:=qq+1;
writeln(f,Q,qq,(0,,k+3,,0,,k+2,)=k140ud12.oulm;); qq:=qq+1;
k:=k+6;
end;
end;
writeln(f,Gn(,k,,0)=0; );
writeln(f,& );
writeln(f,TASK; );
writeln(f,DC; );
writeln(f,AC; );
writeln(f,TF K1=V,k,/UEin;);
writeln(f,CONST LFREQ=,low_freq /1.0e+6:10:6,;);
writeln(f,CONST UFREQ=,high_freq/1.0e+6:10:6,;);
writeln(f,LPLOT DB.K1,PH.K1;);
writeln(f,& );
writeln(f,END; );
Close(f);
end;
Procedure LowPassFilter_Plot;
var Dr: Integer;
Mode: Integer;
i:integer;
A,max,scale:double;
st:string;
begin
Dr := VGA;
Mode:=2;
InitGraph(Dr,Mode,c:pgi);
SetGraphMode(2);
max:=AFC[1];
for i:=1 to POINTS do if Abs(AFC[i])>max then max:=Abs(AFC[i]);
max:=(Round(max) div 10 + 1 )*10;
scale:=400/(max+5);
SetColor(LIGHTGRAY);
Rectangle(100,20,100+POINTS,420);
A:=0;
while A<=max do
begin
Line(100,20+Round((A+5)*scale),100+POINTS,20+Round((A+5)*scale));
Str(-Round(A):4,st);
OutTextXY(60,10+Round((A+5)*scale),st);
A:=A+10;
end;
SetColor(WHITE);
OutTextXY(60,10,K, дБ);
A:=0; SetColor(LIGHTGRAY);
while A<=high_freq do
begin
i:= Round(POINTS*A/high_freq);
Line(100+i,20,100+i,420);
Str(Round(A):4,st);
OutTextXY(80+i,430,st);
A:=A+2*pow10(Trunc(Lg(high_freq/2)));
end;
SetColor(WHITE);
OutTextXY(130+POINTS,430,f, Гц);
SetColor(LIGHTGREEN);
for i:=1 to POINTS-1 do
Line(100+i,20+Round(scale*(5-AFC[i])),101+i,20+Round(scale*(5-AFC[i+1])));
OutTextXY(100,460,Press any key to exit);
readkey;
CloseGraph;
end;
Begin
ClrScr; TextColor(LIGHTGREEN);
GoToXY(20, 9); writeln(---------------------------------------------);
GoToXY(20,10); writeln(Программа расчета ARC - фильтра нижних частот);
GoToXY(20,11);
writeln( с аппроксимацмей АЧХ по Баттерворту );
GoToXY(20,12); writeln(---------------------------------------------);
GoToXY(20,17); writeln( X.X. XXXXX );
GoToXY(20,18); writeln( студент гр. ДА-XX);
GoToXY(20,19); writeln( ФЭЛ НТУУ "КПИ" );
GoToXY(20,24); writeln( Киев 2000 );
TextColor(LIGHTCYAN+BLINK);
GoToXY(20, 1); write( Нажмите Enter );
ch:=#255;
while ch<>#13 do ch:=Readkey;
TextColor(LIGHTGREEN);
LowPassFilter_Parameters;
LowPassFilter_Norming;
LowPassFilter_Batterworth_Order;
LowPassFilter_Batterworth_H;
LowPassFilter_Batterworth_Sigma0;
LowPassFilter_Batterworth_Poles;
LowPassFilter_Building;
LowPassFilter_Denorming;
LowPassFilter_Info;
LowPassFilter_AFC;
LowPassFilter_ALLTED;
LowPassFilter_Plot;
End.
П2. Результаты расчета фильтра с помощью разработанной программы
Результаты расчета ФНЧ с аппроксимацией АЧХ по Баттерворту
------------------------------------------------------------------------------
Исходные данные : Частота среза Fc = 500.0000 Гц
Неравномерность Аф = 2.0000 дБ
Граничная частота F1 = 800.0000 Гц
Затухание BФ = 30.0000 дБ
------------------------------------------------------------------------------
порядок,тип звена Q С1,мкФ С2,мкФ R1,кОм R2,кОм R3,кОм R4,кОм
------------------------------------------------------------------------------
2 звено МОС 0.5098 0.0100 0.0231 23.910 29.236 14.012
2 звено МОС 0.6013 0.0100 0.0280 26.504 24.785 13.644
2 звено МОС 0.9000 0.0100 0.0628 17.709 16.561 9.117
2 звено МОС 2.5629 0.0100 0.5090 6.219 5.815 3.201
------------------------------------------------------------------------------
Порядок фильтра = 8
Количество звеньев = 4
------------------------------------------------------------------------------
П3. График АЧХ фильтра, полученный с помощью разработанной программы
П4.Протокол расчета схемы фильтра с помощью разработанной программы
Результаты расчета ФНЧ с аппроксимацией АЧХ по Баттерворту
------------------------------------------------------------------------------
Исходные данные : Частота среза Fc = 500.0000 Гц
Неравномерность Аф = 2.0000 дБ
Граничная частота F1 = 800.0000 Гц
Затухание BФ = 30.0000 дБ
------------------------------------------------------------------------------
Порядок фильтра = 8
Количество звеньев = 4
------------------------------------------------------------------------------
Звено второго порядка
с многопетлевой ОС
Q = 0.5098
C1= 0.0100 мкФ
C2= 0.0231 мкФ
R1= 23.9096 кОм
R2= 29.2360 кОм
R3= 14.0115 кОм
---------------------
Звено второго порядка
с многопетлевой ОС
Q = 0.6013
C1= 0.0100 мкФ
C2= 0.0280 мкФ
R1= 26.5037 кОм
R2= 24.7851 кОм
R3= 13.6438 кОм
---------------------
Звено второго порядка
с многопетлевой ОС
Q = 0.9000
C1= 0.0100 мкФ
C2= 0.0628 мкФ
R1= 17.7092 кОм
R2= 16.5609 кОм
R3= 9.1165 кОм
---------------------
Звено второго порядка
с многопетлевой ОС
Q = 2.5629
C1= 0.0100 мкФ
C2= 0.5090 мкФ
R1= 6.2186 кОм
R2= 5.8154 кОм
R3= 3.2013 кОм
---------------------
П5. Листинг задания на исследование в пакете ALLTED
OBJECT;
SEARCH PRAM;
CIRCUIT ARCFLT;
Ein(1,0)=1;
R1(1,2)= 23.909567;
R2(2,4)= 29.236003;
R3(2,3)= 14.011520;
C1(3,4)= 10.000000;
C2(2,0)= 23.130316;
Q1(0,3,0,4)=k140ud12.oulm;
R4(4,5)= 26.503661;
R5(5,7)= 24.785087;
R6(5,6)= 13.643847;
C3(6,7)= 10.000000;
C4(5,0)= 28.019317;
Q2(0,6,0,7)=k140ud12.oulm;
R7(7,8)= 17.709180;
R8(8,10)= 16.560866;
R9(8,9)= 9.116527;
C5(9,10)= 10.000000;
C6(8,0)= 62.758473;
Q3(0,9,0,10)=k140ud12.oulm;
R10(10,11)= 6.218637;
R11(11,13)= 5.815403;
R12(11,12)= 3.201299;
C7(12,13)= 10.000000;
C8(11,0)=508.954375;
Q4(0,12,0,13)=k140ud12.oulm;
Gn(13,0)=0;
&
TASK;
DC;
AC;
TF K1=V13/UEin;
CONST LFREQ= 0.000001;
CONST UFREQ= 0.001600;
LPLOT DB.K1,PH.K1;
&
END;
П6. График АЧХ фильтра, полученный в пакете ALLTED
П7. Структурная схема ARC- фильтра
R1 = 23.909567 кОм C1= 10.000000 нФ
R2 = 29.236003 кОм C2= 23.130316 нФ
R3 = 14.011520 кОм C3= 10.000000 нФ
R4 = 26.503661 кОм C4= 28.019317 нФ
R5 = 24.785087 кОм C5= 10.000000 нФ
R6 = 13.643847 кОм C6= 62.758473 нФ
R7 = 17.709180 кОм C7= 10.000000 нФ
R8 = 16.560866 кОм C8=508.954375 нФ
R9 = 9.116527 кОм
R10 = 6.218637 кОм
R11 = 5.815403 кОм
R12 = 3.201299 кОм
- Введение
- 1.Постановка задачи расчета ARC-фильтра
- 2. Исходные данные к расчету
- 3. Нормирование характеристик и электрических величин
- 4.Аппроксимация нормированной передаточной функции фильтра нижних частот
- 5. Каскадная реализация фильтра по передаточной функции K(p)
- 6. Денормирование электрических величин
- 7. Расчет ненормированной АЧХ фильтра
- 8. Описание программы , реализующей методику расчета
- 9. Расчет схемы фильтра с помощью разработанной программы
- 10. Моделирование полученной схемы фильтра с помощью пакета ALLTED
- 11. Сравнение полученных результатов
- Выводы