ADC显示消抖优化算法 && PID算法示例

本文详细介绍了ADC信号消抖滤波的两种方法,包括基于计数器的比较和取平均值策略,旨在优化变化缓慢参数的滤波效果,同时讨论了其在快速变化参数和干扰处理上的局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// ADC 消抖显示优化算法


/*  优化的消抖滤波法
1、方法:
    设置一个滤波计数器
    将每次采样值与当前有效值比较:
    如果采样值=当前有效值,则计数器复位
	方法1:
    如果采样值>或<当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)
    如果计数器溢出,则将本次值替换当前有效值,并复位数器
	方法2:(本算法)
	如果采样值>当前有效值,则计数器+1,如果采样值<当前有效值,则计数器-1,并判断计数器是否>=上限N(溢出)或<=下限N(下溢出)
	如果计数器溢出,则计算溢出的N点(分上溢N点和下溢N点)均值作为当前有效值,并复位数器。
2、优点:
    对于变化缓慢的被测参数有较好的滤波效果,
    可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动
3、缺点:
    对于快速变化的参数不宜
    如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入交易系统
*/

#define  TARGET_N_I  (5u)
#define  TARGET_N_V  (5u)
typedef struct ShakeFreeFilterType {
  uint16_t count;
  uint16_t target_n;
  uint32_t value;
  uint32_t new_value;
  uint8_t first_flag;
  uint32_t *temp_value;
} SFF_T;

static uint32_t sff_i_buf[2*TARGET_N_I] = {0};
static SFF_T sff_i = {
  .count =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值