单片机上常用的10个滤波算法

您所在的位置:网站首页 单片机常用显示器件 单片机上常用的10个滤波算法

单片机上常用的10个滤波算法

2023-10-15 23:01| 来源: 网络整理| 查看: 265

限幅滤波

1 方法

根据经验判断两次采样允许的最大偏差值A

每次采新值时判断:若本次值与上次值之差A,本次无效,用上次值代替本次。

2 优缺点

    克服脉冲干扰,无法抑制周期性干扰,平滑度差。

3 代码

/* A值根据实际调,Value有效值,new_Value当前采样值,程序返回有效的实际值 */#define A 10char Value;char filter(){ char new_Value; new_Value = get_ad(); //获取采样值  if( abs(new_Value - Value) > A)   return Value;   //abs()取绝对值函数 return new_Value;} 中位值滤波

1 方法

连续采样N次,按大小排列

取中间值为本次有效值

2 优缺点

    克服波动干扰,对温度等变化缓慢的被测参数有良好的滤波效果,对速度等快速变化的参数不宜。

3 代码

#define N 11char filter(){ char value_buf[N]; char count,i,j,temp; for(count = 0;count < N;count++) //获取采样值 { value_buf[count] = get_ad(); delay(); } for(j = 0;j int sum = 0; for(count = 0;count temp = Value_buf[i]; Value_buf[i]= Value_buf[i+1]; Value_buf[i+1]=temp; } for(count =1;count char new_value; new_value=get_ad(); return ((100-a)*value + a*new_value);} 加权递推平均滤波

1 方法

    对递推平均滤波的改进,不同时刻的数据加以不同权重,通常越新的数据权重越大,这样灵敏度高,但平滑度低。

2 优缺点

    适用有较大滞后时间常数和采样周期短的系统,对滞后时间常数小,采样周期长、变化慢的信号不能迅速反应其所受干扰。

3 代码

/* coe数组为加权系数表 */#define N 12char code coe[N]={1,2,3,4,5,6,7,8,9,10,11,12};char code sum_coe={1+2+3+4+5+6+7+8+9+10+11+12};char filter(){ char count; char value_buf[N]; int sum=0; for(count=0;count char new_value,count=0; new_value=get_ad(); while(value!=new_value) { if(Abs(value-new_value)


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3