数据波动比较大,但又希望延迟比较小,可以尝试使用递推平均滤波
#define filter_num 5
float recursive_average_filter(uint16_t filter_object)
{
uint32_t sum = 0;
float temp = 0;
static uint16_t filter_buf[filter_num + 1];
filter_buf[filter_num] = filter_object;
for(char i = 0; i < filter_num; i++){
filter_buf[i] = filter_buf[i + 1]; // 所有数据左移,低位扔掉
sum += filter_buf[i];
}
temp = ((float)sum / filter_num);
return temp;
}
滤波效果如下图: