历史上的今天
今天是:2024年09月18日(星期三)
2021年09月18日 | 单片机ADC采样算法----消抖滤波法
2021-09-18 来源:eefocus
消抖滤波法的实现步骤为:设置一个滤波计数器,将每次采样值与当前有效值比较,如果采样值等于当前有效值,则计数器清零。如果采样值不等于当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出),如果计数器溢出,则将本次值替换当前有效值,并清计数器。也就是只有采样值连续变化N次之后,才将采样值做为有效值。
下面直接看C代码的实现
define N 12
unsigned int filter9( void )
{
unsigned int count = 0;
unsigned int new_value = 0, value = 0;
new_value = ReadVol_CH2();
while( value != new_value )
{
count++;
if( count >= N )
{
value = new_value;
return new_value;
}
new_value = ReadVol_CH2();
}
return value;
}
void main( void )
{
while( 1 )
{
val = ReadVol_CH2(); //读取AD采样值
val1 = filter9();
printf( "A%drn", val );
printf( "B%drn", val1 );
}
}
主函数中实时采样AD端口的波形值,然后将采样值经过消抖滤波法进行滤波,然后用串口输出原始采样值和滤波后的值,并在串口波形软件上显示采样的数据波形。

图中蓝色曲线为原始数据曲线,橙色曲线为经过滤波算法后的曲线。
消抖滤波法对于变化缓慢的被测参数有较好的滤波效果,可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动。
但是对于快速变化的参数不宜,如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统。
上一篇:STM8单片机产生随机数
下一篇:STM8单片机常见问题及解决方案
史海拾趣
|
windows下要做一个小的驱动,实现把得到的数据通过网卡发送到网络上去。要个思路 从来没做过驱动开发 突然让我做个这个 一点思路也没有。。。 想问一下 这个程序的大体思路 和该看那些资料? 还有就是开发环境用不用配置?都用什么?… 查看全部问答> |
|
Hi All, 我有一个项目,是要在WINCE下面用程序来控制WIFI的启动/停止,及自动选择AP,并且在不需要用户干预的情况下设置WEB/WAP的密钥,请问该如何做? 是否WINCE自己就能够处理? 如果不能处理,有什么 ...… 查看全部问答> |
|
Intel ICH8/ICH9 (MAC) GbE LAN Controller and 82566/82562V (PHY) Software Developer\'s Manual 这份文档死活找不到。 在Intel官方的网站上怎么都找不到。 不知道有哪位朋友有,共享一下? 或者有没有intel内部的朋友,帮忙下载一份? ...… 查看全部问答> |
|
各位大侠: 最近在自学wince,想在wince开机时,如果点击了触摸屏,则弹出一dialog,否则,就进入应用程序(我随便写的My.exe) 请问,需要做哪方面的工作,还望各位不吝赐教!!!… 查看全部问答> |
|
我在调试电路的时候发现一个问题芯片是MSP430F149在仿真头调试的时候通信正常,断电之后运行就发现串口不能通信了,如果再次插上下载线(下载线和电脑相连)就又 我在调试电路的时候发现一个问题芯片是MSP430F149在仿真头调试的时候通信正常,断电之后运行就发现串口不能通信了,如果再次插上下载线(下载线和电脑相连)就又可以通信了,这为什么? MAX232的工作电压是5V的,输出电平今处理后才和单片机连接的.且有几 ...… 查看全部问答> |
|
《EEWORLD大学堂》《LaunchPad学习资料集锦》之链接 最最全的入门学习资料就在大学堂 https://bbs.eeworld.com.cn/TI/TI_study20111008/index.html 活动过后就很难找到大学堂了,坛内搜索都难找,希望版主能将大学堂的所学过的东西整合到一起,方便我们学习查找!! 元芳,你怎么看???… 查看全部问答> |
|
我发现前面几篇对图画显示RAM (GDRAM)介绍的不是很详细,我就在下面再详细地介绍一下: 图画显示RAM (GDRAM) 提供64*256位元的GDRAM 提供64*32个位元组的记忆空间(由扩充指令设定绘图RAM地址),最多可以控制256*64点的二维绘图缓存 ...… 查看全部问答> |




