ADC Filter

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(限幅滤波)
(限幅滤波)
第18行: 第18行:
  
 
<source lang=cpp>
 
<source lang=cpp>
#define A 10                /* A值可根据实际情况调整 */
+
#define A 10                /* A值可根据实际情况调整 */
  
char value;  
+
char value;
  
char filter()
+
char filter()
{
+
{
     char new_value;
+
     char new_value;
     new_value = get_ad();
+
     new_value = get_ad();
     if ( ( new_value - value > A ) || ( value - new_value > A )
+
     if ((new_value - value > A) || (value - new_value > A))
    return value;
+
        return value;
     return new_value;  
+
     else
 
+
        return new_value;
}  
+
}
 
</source>
 
</source>
  
 
<br><br>
 
<br><br>

2018年11月26日 (一) 17:40的版本

限幅滤波

方法:
  • 根据经验判断,确定两次采样允许的最大偏差值(设为A)
  • 每次检测到新值时判断:
    • 如果本次值与上次值之差<=A,则本次值有效
    • 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
优点
  • 能有效克服因偶然因素引起的脉冲干扰
缺点:
  • 无法抑制那种周期性的干扰
  • 平滑度差
#define A 10                 /* A值可根据实际情况调整 */

char value;

char filter()
{
    char new_value;
    new_value = get_ad();
    if ((new_value - value > A) || (value - new_value > A))
        return value;
    else
        return new_value;
}



个人工具
名字空间

变换
操作
导航
工具箱