单片机实现数字滤波——加权平均滤波

引言

一个计算机数据采集系统在生产过程中会受到各种干扰,从而降低了有用信号的真实性。虽然在输入通道上接入一个RC低通滤波器来抑制工频及其以上频率的干扰,但对频率很低的干扰却由于制作上的难度而难以实现。采用数字形式来模拟RC低通滤波器的输入输出数学关系,可以得到较好的滤波效果。常用数字滤波方法有限幅滤波、算术平均滤波、中值滤波惯性滤波等。以下以单片机为CPU、8-bit A/D and D/A converter的PCF8591以及UA741。对含有干扰的正弦信号进行采样与惯性数字滤波进行实现。

1 惯性数字滤波

在这里插入图片描述
在这里插入图片描述

2 电路图

用Proteus绘制如下电路图
在这里插入图片描述
UA741将正弦信号S1脉冲干扰信号S2混合,配置如上图所示,模拟产生含干扰的信号源,其输出信号Vin电平在0V-5V之间。
设置U3(V-) = -12VU3(V+) = 12V

3 算法实现代码

	int Y[2];
	int X;
	uchar  adc_d; 	 // 接受到的AD转换数据
	uchar  dac_d;	 // 要显示的DA转换数据
	
	X=(uint)adc_d;		//adc_d强制转换为无符号整形提高计算精度
	Y[0]=X+A*(Y[1]-X)/100;		//运用惯性数字滤波公式进行滤波计算输出值	

	/*限幅*/
	if(Y[0]<0)
	{ 
		Y[0]=0;
	}
	else if(Y[0]>255) 
	{
		Y[0]=255;
	}
	
	/*将滤波后的值赋给dac_d准备输出,并存入Y[1]*/
	dac_d=Y[0]; Y[1]=Y[0];
  • 惯性滤波的时间参数A的取值范围为0-100

4 滤波结果

取A = 10时
在这里插入图片描述
取A = 90时
在这里插入图片描述
取A=10和90观察滤波波形,说明惯性滤波器的时间参数τ越大滤波效果越好,但会造成相位滞后,且输出幅值会减小。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值