这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » ADC采样使用一阶低通滤波算法实现和效果

共1条 1/1 1 跳转至

ADC采样使用一阶低通滤波算法实现和效果

院士
2026-04-04 14:47:26     打赏

一阶低通滤波算法是一种常见的信号处理方法,用于滤除高频噪声,保留低频信号。其核心思想是通过加权平均当前采样值和上次滤波输出值来实现平滑效果。滤波系数α决定了新旧数据的权重,α越小,滤波结果越稳定但响应越慢;α越大,响应越快但可能保留更多噪声。该算法在嵌入式系统中广泛应用于ADC采样数据的平滑处理,具有实现简单、计算量小的优点,但也存在灵敏度与稳定性难以兼顾的问题。

我在使用一款三轴加速度计的时候,其为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表格,使用其绘图功能。从图表上看,滤波效果还是特别明显的。

一阶低通滤波.jpg

上图中,蓝色为RAW格式的采集数据,橙色为经过一阶低通滤波后的数据。

滤波对数据的平滑作用非常明显,可以过滤掉小的毛剌。对于算法,我最近也进行了改进,没有使用浮点数和浮点乘法,而是直接使用的采样值uint16_t的格式进行的平滑处理,最后才转换再生成浮点结果的方式。

这样优化了嵌入式MCU的算力性能。实际应用效果验证OK。





关键词: 一阶     低通     滤波     算法    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]