找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 28|回复: 0

消抖滤波

[复制链接]

351

主题

341

回帖

2433

积分

管理员

积分
2433
发表于 2025-6-17 22:04:38 | 显示全部楼层 |阅读模式
//
// 消抖滤波 Debounce Filter
//
// 将每次采样值与当前有效值比较,如果采样值=当前有效值,则计数器值清零
// 如果采样值≠当前有效值,则计数器值+1,如果计数器>N,则将本次值替换当前有效值,并清零计数器
//
// 适用:变化缓慢,临界值跳动的被测参数(对象)
//

#T_On(IN := NOT #T_Off.Q,
      PT := #Period / 2);
#T_Off(IN := #T_On.Q,
       PT := #Period / 2);
#Trigger(CLK := #T_On.Q);  // 采样触发,周期 = Period

IF #Trigger.Q THEN
    IF #Sample_In = #Valid_Value THEN
        #Counter := 0;
    ELSE
        #Counter := #Counter + 1;
    END_IF;
    IF #Counter > #MAX_COUNT THEN
        #Filter_Out := #Valid_Value := #Sample_In;
        #Counter := 0;
    END_IF;
END_IF;






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|笔记

GMT+8, 2025-7-7 06:43 , Processed in 0.036648 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表