c语言adc值滤波函数,ADC滤波处理的十种方法

1 //1.限幅滤波法(又称程序判断滤波法)

2 /*

3 * description: 根据经验判断,确定两次采样允许的最大偏差值(设为A),4 * 每次检测到新值时判断:新值和旧值差值如果超过A,5 * 则用旧值,否则用新值6 * advantage: 能够克服因偶然因素引起的脉冲干扰7 * disadvantage: 无法抑制那种周期性的干扰,平滑度差8 */

9 /*A值可根据实际情况调整10 value为有效值,new_value为当前采样值11 滤波程序返回有效的实际值*/

12 #define A 10

13

14 charvalue;15

16 charfilter()17 {18 charnew_value;19 new_value =get_ad();20 if ( ( new_value - value > A ) || ( value - new_value >A )21 returnvalue;22 returnnew_value;23

24 }25

26

27 //2.中位值滤波法

28 /*

29 * description: 连续采样N次(N取奇数),把N次采样值按大小排列,30 * 取中间值为本次有效值31 * advantage: 能够有效克服偶然因素引起的波动干扰,32 * 对温度、液位等变化缓慢的被测参数有良好的滤波效果33 * disadvantage: 对流量、速度等快速变化的参数不宜34 */

35 /*N值可根据实际情况调整36 排序采用冒泡法*/

37 #define N 11

38

39 charfilter()40 {41 charvalue_buf[N];42 charcount,i,j,temp;43 for (

你可能感兴趣的:(c语言adc值滤波函数)