采集滤波
简单地一个adc采集获取电感的数值是远远不够,采集到的信息可能是不准确的,需要采集多次,通过各种滤波算法处理才能得到一个较好的数值,这样用起来才可靠。
在这里我只贴出一种算法,给大家简单地描述下:
for(num = 0; num < 10; num++)
{
i = adc_once(ADC1_SE9,ADC_12bit); j = adc_once(ADC1_SE9,ADC_12bit); k = adc_once(ADC1_SE9,ADC_12bit); // B1-4
//2.取中值
if (i > j)
{
tmp = i; i = j; j = tmp;
}
if (k > j)
tmp = j;
else if(k > i)
tmp = k;
else
tmp = i;
sum+=tmp;
}
AD_VAL4=sum/10;
sum=0;
如上图这里所用的滤波算法就是中值平均滤波法
方法就是:相当于“中值滤波法”+“算术平均滤波法”,连续采样10次,去掉一个最大值和一个最小值,最后再算术平均。
优点:融合了两种滤波法的优点, 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差。
缺点:测量速度较慢, 比较浪费 RAM(不过对于智能车所使用的MCU,问题不是太大)
全部0条评论
快来发表一下你的评论吧 !