单片机ADC采样算法----限幅滤波法
限幅滤波法就是通过软件来限制本次采样值的上次采样值的偏差,若本次采样值和上次采样值的偏差超过了设定的最大偏差值,则丢弃本次的采样值。
下面看C代码的实现
//返回两个整数差
unsigned int num_sub( unsigned int a, unsigned int b )
{return ( a >= b ? ( a - b ) : ( b - a ) );
}#define A 200 //允许最大误差值unsigned int filter1( void )
{static unsigned int value;unsigned int new_value;new_value = ReadVol_CH2();if( num_sub( new_value, value ) > A ){return value;}value = new_value;return new_value;
}
A为连续两次采样的最大误差值,若两次采样值的差超过了允许最大误差,则丢弃本次采样值。若误差小于允许最小误差,则认为本次采样值有效。
void main( void )
{while( 1 ){val = ReadVol_CH2(); //读取AD采样值val1 = filter1();printf( "A%d\r\n", val );printf( "B%d\r\n", val1 );}
}
主程序中循环读取AD口的采样值,并将采样值通过限幅滤波算法进行滤波,通过串口分别打印原始采样值和滤波后的值,并通过串口将数据打印来,并在串口波形软件上显示。
蓝色曲线为采样的原始数据波形图,橙色曲线为经过限幅滤波算法滤波后的波形图。通过两组曲线可以看出,经过限幅滤波算法后,将原始曲线中的尖峰数据滤除掉了,使得采样数据更加平滑。
限幅滤波法可以滤除偶然因素引起的脉冲干扰,但是要求对系统的采样数据范围要有准确的判断,否则如果允许误差值设置不合理,可能会将系统中正常的数据滤掉。
单片机ADC采样算法----限幅滤波法相关推荐
- 单片机ADC采样算法----中位值滤波法
中位值滤波法就是通过连续采样奇数个数据,然后对数据从小到大排序,取中间的值做为本次采样值. 下面看C代码的实现 #define M 11unsigned int filter2( void ) {un ...
- 单片机ADC采样算法----限幅消抖滤波法
限幅消抖滤波法相当于"限幅滤波法"+"消抖滤波法" . 下面直接看C代码的实现 #define A 200 #define N 20 //返回两个整数差 ...
- 单片机ADC采样算法----限幅平均滤波法
限幅平均滤波法相当于"限幅滤波法"+"递推平均滤波法",每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理. 下面看C代码的实现 #define ...
- 单片机ADC采样算法----递推平均值采样法
在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采 ...
- c语言adc采集取平均值,单片机ADC采样算法----递推平均值采样法
在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采 ...
- 单片机ADC采样算法----消抖滤波法
消抖滤波法的实现步骤为:设置一个滤波计数器,将每次采样值与当前有效值比较,如果采样值等于当前有效值,则计数器清零.如果采样值不等于当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出),如 ...
- 单片机ADC采样算法----加权递推平均滤波法
加权递推平均滤波法是对递推平均滤波法的改进,即不同时刻的数据加以不同的权.通常是,越接近现时刻的数据,权取得越大.给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低. 下面直接看C代码的实现 d ...
- 单片机ADC采样算法----中位值平均滤波法
中位值平均滤波法滤波法就是通过连续采样N个数据,然后对数据从小到大排序,然后去掉最大值和最小值,对剩余的N-2个值计算算数平均值.也就是中位值滤波和算数平均滤波的结合. 下面看C代码的实现 #defi ...
- 单片机ADC采样算法----一阶低通滤波
关于低通滤波,先看一下百度百科上的定义. 算法实现的公式如下: y(n) = q*x(n) + (1-q)*y(n-1) 其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中 ...
最新文章
- qlabel 边加载边更新_盘点十四款国产进口边三轮,挎斗子摩托车,售价从1万至60多万...
- 白话:服务降级与熔断的区别
- 四川网络推广介绍什么样的网站架构更能吸引蜘蛛爬行抓取?
- 【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录
- MUI调用原生自定义方法实现计算缓存与清空缓存
- uboot 的 bootcmd 和bootargs参数详解
- 《ArcGIS Runtime SDK for Android开发笔记》——(15)、要素绘制Drawtools3.0工具DEMO
- Excel 二次开发系列(3): 创建Excel二次开发环境
- LINUX 编译安装 PHP 环境
- cat3 utp是不是网线_网线UTP-CAT5、UTP-CAT5e、UTP-cat6产品简介讲解
- 基于自适应惯性权重的樽海鞘群算法
- py文件转换成exe格式
- python+request 哔哩哔哩视频下载
- Windows 10 应用创建模糊背景窗口的三种方法
- 项目管理知识体系指南(七)项目质量管理
- jvm 面试之参数实战
- 教育类型网站用户体验分析——以UMU学习平台、学生安全教育平台、师路南通为例...
- 陕西万德软件有限公司
- JSONObject使用方法
- mac上的PCB设计软件现状
热门文章
- TFTP服务器在Cisco设备上的应用(上传、下载IOS)
- (python)数据结构------列表
- Java_基础—用LinkedList模拟栈数据结构的集合并测试
- 1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别
- Cognos访问权限之让拒绝更友善
- 单链表的插入操作的实现(0952)SUWST-OJ
- IE下get传中文乱码的问题完美解决方案
- Android Debug Bridge 技术实现原理
- Windows编程革命简史
- LFS安装过程记录(1)-准备工作