#include<math.h>
#define FIRNUMBER 25
#define SIGNAL1F 1000
#define SIGNAL2F 4500
#define SAMPLEF 10000
#define PI 3.1415926
float InputWave()
float FIR()
float fHn[FIRNUMBER]={ 0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,
-0.018,0.049,-0.02,0.11,0.28,0.64,0.28,
-0.11,-0.02,0.049,-0.018,-0.009,0.01,
-0.002,-0.002,0.001,0.0,0.0
}
float fXn[FIRNUMBER]={ 0.0 }
float fInput,fOutput
float fSignal1,fSignal2
float fStepSignal1,fStepSignal2
float f2PI
int i
float fIn[256],fOut[256]
int nIn,nOut
main()
{
nIn=0nOut=0
f2PI=2*PI
fSignal1=0.0
fSignal2=PI*0.1
fStepSignal1=2*PI/30
fStepSignal2=2*PI*1.4
while ( 1 )
{
fInput=InputWave()
fIn[nIn]=fInput
nIn++nIn%=256
fOutput=FIR()
fOut[nOut]=fOutput
nOut++
if ( nOut>=256 )
{
nOut=0 /* 请在此句上设置软件断点 */
}
}
}
float InputWave()
{
for ( i=FIRNUMBER-1i>0i-- )
fXn[i]=fXn[i-1]
fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0
fSignal1+=fStepSignal1
if ( fSignal1>=f2PI )fSignal1-=f2PI
fSignal2+=fStepSignal2
if ( fSignal2>=f2PI )fSignal2-=f2PI
return(fXn[0])
}
float FIR()
{
float fSum
fSum=0
for ( i=0i<FIRNUMBERi++ )
{
fSum+=(fXn[i]*fHn[i])
}
return(fSum)
}
只滤除或衰减特定的频率时,可使用陷波滤波器,例如用它滤除电源频率引起的交流声、滤除基波后测量波形失真率等。采用双T电路时,如果采用大的Q值,无用的频率附近的信号也会跟着衰减,因此陷波器的Q值要求可变。
双T电路由3个电阻、3个电容组成,基本上是双对称型的。单个无源滤波元件其衰减特性Q=0.25,具有很好的宽频响应特性。
参数确定:R2=R3,C1=C2,R4=R2/2,C2=2C1,FO=1/2πR2.C1,在衰减极点处谐振。如果偏离以上条件就不能获得最大衰减量,同时须注意各种元件的误差。 OP放大器A1~A3均起缓冲放大器的作用,A2用来加正反馈,以改变阻抗,反馈量由R5和R6的分压值确定。无反馈时的Q为0.25,如果设反馈的Q为Q’。
扩展资料:
电阻可采用误差为±1%的金属膜电阻。确定了所需的Q值之后,如果不再需要调整,最好去掉VR1,因为即使加了VR1,一边观察频率特性,一边调整也是相当困难的。
C1~C3用聚酯薄膜电容,最好选用误差为±1%以内的产品,不过也可以从误差±5%的元件中挑选,再用电阻值微调。
应用说明为了与50HZ、60HZ电源频率相对应,可以更换双T电路,或者把本电路的陷波滤波器作成50HZ和60HZ两级串联。如果使用频率限制滤波器测量失真时,可进行3级串联调谐设计,使之具有中心频率±1%的衰减带宽。
当带阻滤波器的阻带很窄时, 被称为陷波滤波器 , 又称点阻滤波器。一个理想点阻滤波器的频率响应是要在消除的信号频率点, 其值等于零;而在其他频率处, 其值不为零, 且要等于1。
参考资料来源:百度百科--陷波滤波器