历史上的今天
今天是:2025年03月30日(星期日)
2020年03月30日 | 单片机ADC采样算法----限幅消抖滤波法
2020-03-30 来源:eefocus
限幅消抖滤波法相当于“限幅滤波法”+“消抖滤波法” 。
下面直接看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%drn", val );
printf( "B%drn", val1 );
}
}
主函数中实时采样AD端口的波形值,然后将采样值经过限幅消抖滤波法进行滤波,然后用串口输出原始采样值和滤波后的值,并在串口波形软件上显示采样的数据波形。

图中蓝色曲线为原始数据曲线,橙色曲线为经过滤波算法后的曲线。
限幅消抖滤波法继承了“限幅”和“消抖”的优点,改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统。
史海拾趣
|
KF750按键的蓝光是多个圈圈层叠,触摸的时候有“涟漪”的效果。今天有个客户想在一个产品上把原来的普通按键做成这个效果,触摸的好处理,但这个发光的材料好像是EL片。坛子里有知道的朋友吗?多谢! … 查看全部问答> |
|
我是一名初学8051者 最近看过很多关于8051的原理书 对单片机的基本原理略懂一二 想动手做些实验 一方面想加强自己对汇编指令或者说编程的熟悉程度 另一方面想对单片机有更彻底的了解 会些基本的应用 不知道怎么去选择购买板 ...… 查看全部问答> |
|
FL2440的板子,修改12M的晶体为16.9344M后,无法启动??? 请教高手们: 原FL2440的开发板,晶体为12MHz,修改为16.9344M后,无法启动,不知何因? 先说一下FL2440的bootloader的组成: 飞凌开发板提供的bootloader由uboot和eboot两部分组成,前面的uboot实现 ...… 查看全部问答> |
|
我在编译mamece3的时候出现如下错误 LINK : fatal error LNK1104: cannot open file \'subsystem:windowsce,4.00\' 请问高手如何解决这个问题,谢谢… 查看全部问答> |
|
用IAR给MSP430f4152烧写程序,总提示找不到单片机。仿真器用的UIF。 出错信息是: IarIdePm The debugging session could not be started。 Either the debugger initialization failed,or else the file \"F:\\Examination\\E-Meter\\Debug\\ ...… 查看全部问答> |




