我在使用一款三轴加速度计的时候,其为ADC采样的工作模式,我使用一阶低通滤波算法进行数据平滑处理。
C语言的源代码如下:
#define ALPHA 0.05f
float low_pass_filter(float dat, float prev_dat)
{
float ret = 0.0;
ret = ALPHA * dat + (1.0f - ALPHA) * prev_dat;
return (ret);
}我把数据导入到了excel表格,使用其绘图功能。从图表上看,滤波效果还是特别明显的。

上图中,蓝色为RAW格式的采集数据,橙色为经过一阶低通滤波后的数据。
滤波对数据的平滑作用非常明显,可以过滤掉小的毛剌。对于算法,我最近也进行了改进,没有使用浮点数和浮点乘法,而是直接使用的采样值uint16_t的格式进行的平滑处理,最后才转换再生成浮点结果的方式。
我要赚赏金
