单片机中十种常见的ADC滤波算法

前言
单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进行复杂的运算。下面给大家介绍十种常见的adc滤波算法。
一、限幅滤波
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<(n-1);j++)  for(i = 0;ivalue_buf[i+1])  {   temp = value_buf[i];   value_buf[i] = value_buf[i+1];   value_buf[i+1] = temp;  } return value_buf[(n-1)/2];} 三、算数平均滤波
1、方法
连续采样n次,取平均
n较大时平滑度高,灵敏度低
n较小时平滑度低,灵敏度高
一般n=12
2、优缺点
适用于存在随机干扰的系统,占用ram多,速度慢。
3、代码
#define n 12char filter(){ int sum = 0; for(count = 0;count a)   return value;             //abs()取绝对值函数  return new_value;}五、中位值平均滤波 1、方法
采样n个值,去掉最大最小
计算n-2的平均值
n= 3~14
2、优缺点
融合了中位值,平均值的优点
消除脉冲干扰
计算速度慢,ram占用大
3、代码
char filter(){ char count,i,j; char value_buf[n]; int sum=0; for(count=0;count 1、方法
每次采样数据先限幅后送入队列
取平均值
2、优缺点
融合限幅、均值、队列的优点
消除脉冲干扰,占ram较多
3、代码
#define a 10#define n 12char value,i=0;char value_buf[n];char filter(){ char new_value,sum=0; new_value=get_ad(); if(abs(new_value-value) 1、方法
取a=0~1
本次滤波结果=(1-a)* 本次采样 + a * 上次结果
2、优缺点
良好一直周期性干扰,适用波动频率较高场合
灵敏度低,相位滞后
3、代码
/*为加快程序处理速度,取a=0~100*/#define a 30char value;char filter(){ 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 1、方法
先限幅 后消抖
2、优缺点
融合了限幅、消抖的优点
避免引入干扰值,对快速变化的信号不宜
3、代码


分析PCB制板电镀铜故障原因及预防措施
打开稳定低温锂金属负极的极化和可逆性限制
汽车业的发展离不开人工智能的助力和引导
智能手机需求强劲 第三季NAND Flash供应商营收增长两成
控制系统的时域分析法--二阶系统的暂态响应
单片机中十种常见的ADC滤波算法
小米mix2和iPhone6s哪个好?小米mix2和iPhone6s区别对比评测
物联网网关的功能介绍
oppor11什么时候上市?oppor11最新消息:oppor11即将上市,oppor11不仅摄像头配置超高,专业人像模式同样很强大
英国涉及华为的禁令正式法律化,事涉五眼联盟
华为荣耀magic这部神机记得么,华为又出了一部荣耀v9性能只高不低
赛微CW2217锂电池电量计芯片 超低功耗 专利电量计算法
2023年十佳Linux服务器发行版
MSP-300-016-B-5-N-2压力传感器MEAS基本简介
真空接触器选型_真空接触器的优点
2019年加密货币和区块链将会发生什么
距离2017还剩11天,小米5c或压轴上场
经纬恒润国内首个基于Mobileye EyeQ™6的高级驾驶辅助系统即将量产
四线法测量和二线法测量有什么区别
一种调频无线话筒的制作