限幅消抖滤波法相当于“限幅滤波法”+“消抖滤波法”    。

下面直接看C代码的实现

#define A 200
#define N 20
//返回两个整数差
unsigned int num_sub( unsigned int a, unsigned int b )
{return ( a >= b ? ( a - b ) : ( b - a ) );
}unsigned int filter10( void )
{unsigned int count = 0;unsigned int new_value = 0;static unsigned int last_value = 0;new_value = ReadVol_CH2();if( num_sub( new_value, last_value ) < A ){new_value = new_value;}else{new_value = last_value;}while( new_value !=  last_value){count++;if( count >= N ){last_value = new_value;return new_value;}new_value = ReadVol_CH2();if( num_sub( new_value, last_value ) < A ){new_value = new_value;}else{new_value = last_value;}}return last_value;
}void main( void )
{while( 1 ){val = ReadVol_CH2();        //读取AD采样值val1 =  filter10();printf( "A%d\r\n", val );printf( "B%d\r\n", val1 );}
}

主函数中实时采样AD端口的波形值,然后将采样值经过限幅消抖滤波法进行滤波,然后用串口输出原始采样值和滤波后的值,并在串口波形软件上显示采样的数据波形。

图中蓝色曲线为原始数据曲线,橙色曲线为经过滤波算法后的曲线。

限幅消抖滤波法继承了“限幅”和“消抖”的优点,改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统。

单片机ADC采样算法----限幅消抖滤波法相关推荐

  1. 单片机ADC采样算法----限幅平均滤波法

    限幅平均滤波法相当于"限幅滤波法"+"递推平均滤波法",每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理. 下面看C代码的实现 #define ...

  2. 单片机ADC采样算法----限幅滤波法

    限幅滤波法就是通过软件来限制本次采样值的上次采样值的偏差,若本次采样值和上次采样值的偏差超过了设定的最大偏差值,则丢弃本次的采样值. 下面看C代码的实现 //返回两个整数差 unsigned int ...

  3. 单片机ADC采样算法----一阶低通滤波

    关于低通滤波,先看一下百度百科上的定义. 算法实现的公式如下:  y(n) = q*x(n) + (1-q)*y(n-1)     其中Y(n)为输出,x(n)为输入,y(n-1)为上一次输出值,其中 ...

  4. 单片机ADC采样算法----消抖滤波法

    消抖滤波法的实现步骤为:设置一个滤波计数器,将每次采样值与当前有效值比较,如果采样值等于当前有效值,则计数器清零.如果采样值不等于当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出),如 ...

  5. 单片机ADC采样算法----递推平均值采样法

    在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采 ...

  6. c语言adc采集取平均值,单片机ADC采样算法----递推平均值采样法

    在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采 ...

  7. 单片机ADC采样算法----加权递推平均滤波法

    加权递推平均滤波法是对递推平均滤波法的改进,即不同时刻的数据加以不同的权.通常是,越接近现时刻的数据,权取得越大.给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低. 下面直接看C代码的实现 d ...

  8. 单片机ADC采样算法----中位值平均滤波法

    中位值平均滤波法滤波法就是通过连续采样N个数据,然后对数据从小到大排序,然后去掉最大值和最小值,对剩余的N-2个值计算算数平均值.也就是中位值滤波和算数平均滤波的结合. 下面看C代码的实现 #defi ...

  9. 单片机ADC采样算法----中位值滤波法

    中位值滤波法就是通过连续采样奇数个数据,然后对数据从小到大排序,取中间的值做为本次采样值. 下面看C代码的实现 #define M 11unsigned int filter2( void ) {un ...

最新文章

  1. TensorFlow损失函数
  2. C++对象模型7——类的成员函数、反汇编虚析构函数、RTTI、多态的开销
  3. BusinessObject Port 配置
  4. 关于阻塞I/O 非阻塞I/O 同步I/O 异步I/O epoll select的学习
  5. vnc改ip_如何使用VNC进行远程桌面控制
  6. boost::log::to_log_manip用法的测试程序
  7. Kafka集群在马蜂窝大数据平台的优化与应用扩展
  8. 在传统.NET Framework 上运行ASP.NET Core项目
  9. mybatis.net - 5 嵌入资源与引用资源
  10. 开源分布式搜索平台ELK+Redis+Syslog-ng实现日志实时搜索
  11. 单片机ad显示程序c语言,pic单片机ad转换c程序分享
  12. php -- PDO异常处理
  13. 什么样的人不适合互联网创业
  14. Spring Boot2.0之热部署原理
  15. 【笔记】TAOCP Vol4 - Combination
  16. 2021年中国发改委和财政部PPP项目整体现状分析,城市基础建设仍是重中之重「图」
  17. android 常用模块,超实用的几款Xposed模块,安卓发烧必备
  18. 高数篇:06零点问题与微分不等式
  19. 一个写着玩的 bitcoin 客户端
  20. c语言控制输出间隔大小,C/C++ 输出间隔控制

热门文章

  1. Response.Redirect()和Response.RedirectPermanent()区别
  2. 查看修改oracle数据库字符集
  3. 一起谈.NET技术,.NET程序员必备参考图片
  4. 编译内核模块找不到内核头文件解决办法
  5. Java高级面试题解析(二):百度Java面试题前200页(精选)
  6. WDA演练一:用户登陆界面设计(一)
  7. Policy-Based Reinforcement Learning
  8. Update与JOIN使用
  9. 【Java】面向对象是什么
  10. 【线程】——单例模式