数字滤波技术总结

数字滤波技术简介

所谓数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重。故实质上它是一种程序滤波。
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。
采用数字滤波算法克服随机干扰的误差具有以下优点:
1、数字滤波无需其他的硬件成本,只用一个计算过程,可靠性高,不存在阻抗匹配问题。尤其是数字滤波可以对频率很低的信号进行滤波,这是模拟滤波器做不到的。

2、数字滤波使用软件算法实现,多输入通道可共用一个滤波程序,降低系统开支。

3、只要适当改变滤波器的滤波程序或运算,就能方便地改变其滤波特性,这对于滤除低频干扰和随机信号会有较大的效果。

4、在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波等。

限幅滤波

def:该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。


#define  Max_wr //允许的最大差值
char data; //上一次的数据
char filter1()
{
  char datanew; //新数据变量
  datanew = get_data(); //获得新数据变量
  if((datanew - data) > A || (data - datanew > A))
  	  return data;
  else
      return datanew;
}

eg:我们通过实验采集到的数据波形如下图所示:
在这里插入图片描述
上图为通过实验采集到的数据波形,下图为经过限幅滤波后的波形,可以看到很多毛刺都被滤除了。

#define N 11 //定义获得的数据个数
char filter2()
{
	  char value_buff[N]; //定义存储数据的数组
	  char count,i,j,temp;
	  for(count=0;count<N;count++)
	  {
	      value_buf[count]=get_data();
	      delay(); //如果采集数据比较慢,那么就需要延时或中断
	  }
	  //冒泡排序
	  for(j=0;j<N-1;j++)
	  {
  			for(i=0;i<N-j-1;i++)
  			{
		      if(value_buff[i]>value_buff[i+1]
		      {
		          temp=value_buff[i];
		          value_buff[i]=value_buff[i+1];
		          value_buff[i+1]=temp;
		      }
		}  
	}
return value_buff[(N-1)/2];
}

说明:限幅滤波程序设计简单、运算速度快、占用RAM少,是一种最简单的基本滤波方法。能够克服偶然因素引入的脉冲干扰,也可以消除波形上的尖峰毛刺,但是不能抑制周期性的干扰,而且其完全削除大幅度的阶跃信号,容易造成控制失调,一般不适用于开关电源这类变化剧烈,需要迅速反馈的场景,适用于水温控制等变化缓慢,安全性高的应用。使用时,关键要选取合适的门限制A的。通常这可由经验数据获得,必要时可通过实验得到。

中值滤波算法

该运算的过程是对某一参数连续采样N次(N一般为奇数),然后把N次采样的值按从小到大排列,再取中间值作为本次采样值,整个过程实际上是一个序列排序的过程。

在这里插入图片描述
上图为通过实验采集到的数据波形,下图为经过中值滤波后的波形,可以看到其滤波效果较限幅滤波较好,毛刺基本被滤除。

适用性分析:
这种滤波方法能够有效的克服偶然因素引起的波动干扰,特别是对于像温度、液位等变化缓慢的被测参数有良好的滤波效果,但是对于流量、速度或者其他快速变化的信号参数则不适合使用这种方法。中值滤波法的程序设计要稍复杂一些,排序可以使用冒泡法或者选择排序法等,由于引入了排序算法,所以该方法不能处理速度要求很高的信号。其运算处理速度和占用的RAM直接受所选择的数值N决定。
中值滤波比较适用于去掉由偶然因素引起的波动和采样器不稳定而引起的脉动干扰。若被测量值变化比较慢,采用中值滤波法效果会比较好,但如果数据变化比较快,则不宜采用此方法。

算术平均滤波

该方法也是先将原来设计要求的采样间隔△T进行细分,在AT内采样N次,但是对于采集进来的数据不是进行排序,而是进行算术平均,算术平均的结果作为本次采样值。N值的选取比较关键,N值较大者处理信号的平滑度会较高,但是灵敏度降低;相反,N值较小者处理信号的灵敏度提高,但是平滑度降低。该算法的基本原理很简单,就是连续取N次采样值后进行算术平均。

#define N num
char filter()
{
	int sum=0;
	for(count=0;count<N;count++)
	{
	    sum+=get_data();
		delay():
	}
	return (char)(sum/N);
}

在这里插入图片描述
上图为通过实验采集到的数据波形,下图为经过算术滤波后的波形。

这种滤波方法是适用于对具有随机干扰的信号进行处理,并且被处理的信号必须具有一个平均值,信号在这个平均值上下波动。该方法对于高速信号并不适用。对于毛刺信号,可以看到均值滤波将其分担到了周围的采样点上,不如中值滤波那样能够完全去除。但是对于随机噪声信号,由于其理论均值为0,均值滤波对第一段噪声有良好的滤除效果。该滤波方法运算处理速度和RAM的占用率也受所选择的数值N决定,可以使用时间复杂度较低的排序方法降低运算开销。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TD-LAS(Time-Domain Laser Absorption Spectroscopy,时域激光吸收光谱)是一种用于气体浓度测量的技术。ADC(Analog-to-Digital Converter,模数转换器)数字滤波是在测量信号被转化为数字信号之后对其进行滤波的处理方法。 TD-LAS采用激光束穿过待测气体,并根据样品吸收激光的程度来测量气体的浓度。激光经过气体吸收后,信号经过光敏探测器转化为电信号,然后通过ADC将模拟信号转化为数字信号。由于测量结果可能受噪声、混叠等因素的影响,数字滤波可以对信号进行处理,减小噪声、提高测量精度。 ADC数字滤波可以通过一系列信号处理算法实现,例如低通滤波器、中值滤波器等。低通滤波器可通过选取合适的截止频率来滤除高频噪声,减少信号的高频成分,保留较低频的信息。中值滤波器则通过计算滑动窗口内数据的中值,将窗口内的噪声减小到较小程度。 ADC数字滤波可以根据应用需求进行不同的设计。在TD-LAS测量中,数字滤波器可以根据实际测量信号的特点选择合适的滤波算法,以提高信号精度。此外,数字滤波还可以结合其他的信号处理方法,如滞后补偿等,进一步优化测量结果。 总结而言,TD-LAS ADC数字滤波是一种对TD-LAS测量信号进行滤波处理的方法,可以提高测量精度,减小噪声干扰,得出更准确的气体浓度测量结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<往事随风>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值