滤波器的设计实现分析.docx
《滤波器的设计实现分析.docx》由会员分享,可在线阅读,更多相关《滤波器的设计实现分析.docx(21页珍藏版)》请在冰豆网上搜索。
滤波器的设计实现分析
滤波器的设计与实现
摘要
本次课题设计的有源带通滤波器采用运放构及RC元件构成,运放采用op07,实现的要求是频率X围300Hz~3.0KHz、带外抑制10dB或以上、带内纹波小于1dB、电压增益X围0.5~2。
无源带通滤波器采用LC元件构成,实现的要求是频率X围1.2MHz~4.5MHz、带外抑制8dB或以上、带内纹波小于1dB、电压增益1、阻抗50Ω。
数字滤波器采用单片机系统板实现IIR和FIR数字低通滤波器,实现的要求是截止频率10Hz、带外抑制10dB或以上、带内纹波小于1dB。
关键字:
RCLC单片机运放op07
Abstract:
Thesubjectofasourcewiththefilterontheuseofthestructureandrcponents,andputtheminachievingtherequirementsareop07300hz~3.thefrequency,withthecurb0khz10dboraboveandthewaves,thevoltageoflessthan0.51db~gainof2.Nosourcewiththefiltertheuseoflcelements,theimplementationofthefrequencyof1.42mhz~5mhzandexternalcontain8dborabovethewaves,oflessthan1db,voltage,resistancetogaina50omega.Numbersystembasedontheboardtoadoptmonolithicintegratedcircuitsiirandfirfigureslowtofilter,theimplementationofthefrequency,withthecurb10hz10dborabove,ofwaves.inlessthan1db
Keywords:
Rclcmonolithicintegratedcircuitsplacedop07
一、系统方案论证与比较
1.有源带通滤波器设计
方案一:
选择Chebyshev高阶有源带通滤波器。
设计的是三阶滤波器。
电路图
如下
有源带通滤波器的幅频特性曲线的数字仿真图如下
带内纹波有点大,元器件数量多,电路设计复杂。
方案二:
选择Butterworth高阶有源带通滤波器。
电路图如下
有源带通滤波器的幅频特性曲线的数字仿真图如下
纹波比较小,电路设计比较简单。
基本上能够达到300~3000Hz。
方案选择:
方案二。
方案论证:
方案二的纹波小,电路设计简单,带宽为2700Hz,中心频率为960Hz。
运放选择LM318,带宽满足滤波器的带宽。
运放选择op07
2.无源带通滤波器设计
方案一:
三阶的Butterworth带通滤波器。
电路图如下
无源带通滤波器的幅频特性曲线的数字仿真图如下
方案二:
五阶的Butterworth带通滤波器。
电路图如下
无源带通滤波器的幅频特性曲线的数字仿真图如下
方案选择:
方案二。
方案论证:
阶数高些滤波效果好些。
3.数字滤波器设计
方案一:
采用FPGA设计采用各种函数来逼近理想滤波器的频率特性。
利用Matlab和QuartusII软件设计电路。
方案二:
采用单片机设计,采用各种函数来逼近理想滤波器的频率特性。
利用Matlab设计出归一化的抽头系数,利用c语言写出程序,在单片机stc89c52rc完成数字低通滤波器设计。
方案选择:
方案二。
方案论证:
采用单片机设计的简单,容易实现。
函数逼近值更准确。
二、系统设计
1.有源带通滤波器设计
1.1总方案框图
、
1.2子框图的作用
RC网络的作用
在电路中RC网络起着滤波的作用,滤掉不需要的信号,这样在对波形的选取上起着至关重要的作用,通常主要由电阻和电容组成。
放大器的作用
电路中运用了同相输入运放,其闭环增益RVF=1+R4/R3同相放大器具有输入阻抗非常高,输出阻抗很低的特点,广泛用于前置放大级。
反馈网络的作用
将输出信号的一部分或全部通过牧电路印象输入端,称为反馈,其中的电路称为反馈网络,反馈网络分为正、负反馈。
1.3原理图设计
1.4RC调整后的电路图和确定阻值
1.5调整后的幅频特性曲线的数字仿真图
2.无源带通滤波器设计
2.1设计框图
2.2原理框图
2.3LC调整后的电路图和值
2.4LC调整后的幅频特性曲线的数字仿真图
3.数字低通滤波器设计
3.1利用Matlab设计的数字滤波器的抽头系数值
FIR的值
-0.04226,-0.03047,0.0,0.0457,0.0986,0.1479,0.1828,0.1954,0.0986,0.0457,0,-0.03047,-0.04226
IIR的值
A:
-0.01096,0.169,-1.196,5.143,-14.93,30.75,-45.93,49.83,-38.57,20.33,-6.589
B:
0.0000004462,0.000004908,0.000002454,0.000007362,0.00001472,0.00002061,0.00001472,0.000007362,0.000002454,0.000004908,0.0000004462
3.2单片机模块
采用STC89C52RC单片机实现控制功能是其关键,采用单片机不但方便监控,并且大大减少硬件设计。
电路图如下
单片机控制部分
三、软件设计
设计思路
四、系统测试
1.测试方法
●电路测试。
用万用表检测整机电路是否存在短路或者断路,经检测后再接上电源,用万用表测量电源部分的各个输出电压值,经调试正常后方接到各部分电路。
●接入RC测试板,数字信号函数发生器,稳压源,示波器,输入不同频率值测试输入电压值和输出电压值。
●接入LC滤波器输入不同频率值测试输出值。
2.测试结果
RC带通滤波器数据
输入频率(Hz)
输入电压峰峰值(mV)
输出频率(Hz)
输出电压峰峰值(mV)
增益
200
268
60
-13.00
250
268
250
106
-8.06
280
268
280.9
144
-5.40
300
268
300
176
-3.65
310
268
308
184
-3.27
330
268
331
208
-2.20
350
268
352
228
-1.40
400
268
394.52
260
-0.26
500
268
496.62
280
0.38
550
268
555.6
284
0.50
580
268
581
280
0.38
600
268
594.53
280
0.38
700
268
694.4
276
0.26
800
268
793.7
272
0.13
900
268
892.9
268
0.00
1000
268
1000
268
0.00
1100
268
1111
268
0.00
1200
268
1190
260
-0.26
1300
268
1316
260
-0.26
1400
268
1397
264
-0.13
1500
268
1515
256
-0.40
1600
268
1603
256
-0.40
2000
268
2000
248
-0.67
2200
268
2193
244
-0.81
2400
268
2404
232
-1.25
2500
268
2500
216
-1.87
2700
268
2700
200
-2.54
2800
268
2778
188
-3.08
2900
268
2907
172
-3.85
3000
268
3030
148
-5.16
3500
268
3571
92
-9.29
4000
268
4000
68
-11.91
RC幅频特性曲线图
数字滤波器数据
利用Matlab设计的数字滤波器的抽头系数值
FIR的值
-0.04226,-0.03047,0.0,0.0457,0.0986,0.1479,0.1828,0.1954,0.0986,0.0457,0,-0.03047,-0.04226
IIR的值
A:
-0.01096,0.169,-1.196,5.143,-14.93,30.75,-45.93,49.83,-38.57,20.33,-6.589
B:
0.0000004462,0.000004908,0.000002454,0.000007362,0.00001472,0.00002061,0.00001472,0.000007362,0.000002454,0.000004908,0.0000004462
3.结果分析
虽然在电路的仿真过程中已经达到了设计要求,但是在实际的电路制作过程中会有不可避免的误差。
主要因素有:
(1)电子元件的参数不能完全达到标准,如电路中要求的7.4kΩ、4.95kΩ、2.74kΩ、876Ω电阻分别要用6.8kΩ、5.1kΩ、2.7kΩ、680Ω电阻代替,电路中要求的电容值没有,要求几个电容并联代替。
(2)在电路板的制作过程中电路板的焊接部良等。
(3)在实际的测试中仪器会带来不可避免的误差。
五、结论
虽然由集成运放和R、C组成的有源滤波电路,具有不用电感、体积小、重量轻,集成运放的开环电压增益和输入阻抗均很高,输出阻抗又低,构成有源滤波电路后还具有一定的电压放大和缓冲作用等优点。
但是因其品质因素Q值无法做的很大,也就导致其通频带宽度无法做的很窄,造成了该滤波器对频率的选择性不是很好,对干扰信号的抑制能力也不是很强,所以在设计滤波器方案的同时,要注意结合实际情况,根据具体设计要求来选择不同的设计方案。
参考文献
[1]王新贤,通用集成电路速查手册[M].XX科学技术,2004
[2]赖麒文,8051C语言彻底应用,科学,2002
[3]谢自美,电子线路设计.实验.测试第三版,华中科技大学,2010
[4]程昱X建伟,ProtelDXP电路设计白金教学,科学,2004
[5]李华军,杨将新,X东俊.单片机程序设计及应用[M].电子工业,2006
[6]X毅坤,陈善久,裘雪红.单片微型计算机及其应用[M].XX电子科技大学,2005]
[7]谭浩强,C语言设计第三版,清华大学,2008
[8]康光华,陈大钦,X林,电子技术基础,2005
[9]X金,电子设计与制作100例,电子工业,2009
[10]麦文,蒋涛,梁文海,X莉,数字系统设计实践-MCS51单片机系统
[11]程佩青,数字信号处理教程,清华大学,2010
附录
附1:
元器件明细表
ment
Designator
Quantity
Value
CapPol1
C1,C3
2
10nF
Cap
C2,C4,C5,C7,C8,C9,C10,C11,C12,C13
10
47nF
Cap
C6
1
33nF
Inductor
L1,L2,L3,L4,L5
5
100nH
Header2H
P1,P2,P3,P4,P5,P6
6
Res2
R2,R4,R6,R8,R9,R10,
6
10k
op07
U1,U2,U3,U4
4
Res2
R1
1
6.8k
Res2
R3
1
5.1k
Res2
R5
1
2.7k
Res2
R7
1
680
Res2
R11,R12
2
1
附2:
仪器设备清单
1、数字信号发生器
2、数字万用表
3、模拟示波器
4、示波器
5、MCU学习板
附3:
电路图图纸
附4:
实物图
RC
LC
附5:
程序清单
FIR程序:
#include
#defineuintunsignedint
#defineucharunsignedchar
/******************/
sbitrd=P3^7;
sbitwr=P3^6;
sbitdula=P2^6;
sbitwela=P2^7;
sbitadcs=P2^4;
sbitcsda=P2^0;
uintadvalue;
floatcodeH[15]={-0.04226,-0.03047,0.0,0.0457,0.0986,0.1479,0.1828,0.1954,0.0986,0.0457,0,-0.03047,-0.04226};
intstates[15];
floatsum;
intout;
/******************/
voiddelay(uchari)
{ucharj,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
/******************/
voidDA()
{
wela=0;
dula=0;
csda=0;
wr=0;
P0=out;
delay
(1);
csda=1;
}
/******************/
voidAD()
{
adcs=0;//选通AD转换器片选
wr=0;
delay
(1);//AD写入(主要是为了启动AD转换)
wr=1;
delay(10);
P1=0xff;//读取P1口之前先给其写全1
rd=0;//AD读使能
advalue=P1;
rd=1;
wr=1;
adcs=1;
}
voidFIR()
{
uchari;
sum=0;
for(i=14;i>0;i--)
{states[i]=states[i-1];}
states[0]=advalue;
for(i=0;i<15;i++)
{sum=sum+states[i]*H[14-i];}
out=(int)(sum);
}
voidtimer1()interrupt3
{TH1=0xD8;//定时器初值,定时10ms,100Hz
TL1=0xF0;
AD();
}
/*******主程序********/
voidmain()
{
ET1=0;
TR1=0;
TMOD=0x10;
TR1=1;
ET1=1;
EA=1;
while
(1)
{
FIR();
DA();
}
}
IIR程序:
#include
#defineuintunsignedint
#defineucharunsignedchar
/******************/
sbitrd=P3^7;
sbitwr=P3^6;
sbitdula=P2^6;
sbitwela=P2^7;
sbitadcs=P2^4;
sbitcsda=P2^0;
ucharadvalue;
floatcodeA[11]={-0.01096,0.169,-1.196,5.143,-14.93,30.75,-45.93,49.83,-38.57,20.33,-6.589};
floatcodeB1[11]={0.0000004462,0.000004908,0.000002454,0.000007362,0.00001472,0.00002061,0.00001472,0.000007362,0.000002454,0.000004908,0.0000004462};
intinput[11];
intoutput[11];
floatsum;
intout;
/******************/
voiddelay(uchari)
{ucharj,k;
for(j=i;j>0;j--)
for(k=25;k>0;k--);
}
/******************/
voidDA()
{
wela=0;
dula=0;
csda=0;
wr=0;
P0=out;
delay(50);
csda=1;
}
/******************/
voidAD()
{
ucharadvalue;
adcs=0;//选通AD转换器片选
wr=0;
delay
(1);//AD写入(主要是为了启动AD转换)
wr=1;
delay(10);
P0=0xff;//读取P1口之前先给其写全1
rd=0;//AD读使能
advalue=P1;
rd=1;
wr=1;
adcs=1;
}
/******************/
voidIIR()
{
uchari;
sum=0;
for(i=0;i<11;i++)
{sum=sum+input[i]*B1[10-i]+output[i]*A[10-i];}
for(i=10;i>0;i--)
{input[i]=input[i-1];
output[i]=output[i-1];
}
input[0]=advalue;
output[0]=sum;
out=(int)(sum);
}
voidtimer1()interrupt3
{TH1=0xD8;//定时器初值,定时10ms,100Hz
TL1=0xF0;
AD();
}
/*******主程序********/
voidmain()
{
ET1=0;
TR1=0;
TMOD=0x10;
TR1=1;
ET1=1;
EA=1;
while
(1)
{IIR();
DA();
}
}