网站地图
行业应用
行业应用
您的位置: 首页 >> 行业应用 >> 传感器数据滤波入门:从毛刺到有效信号的顺序

传感器数据滤波入门:从毛刺到有效信号的顺序

发布时间:2026-09-26
传感器数据滤波入门:从毛刺到有效信号的顺序

传感器数据滤波不是把曲线磨平就完事,正确的顺序是先剔掉不可能出现的异常值,再压平随机抖动,之后才谈多传感器融合。现场八成的读数跳动,用限幅加中值加一阶低通这三板斧就能解决,剩下两成往往得先回去查布线。这篇按实际处理顺序,把每一步的处理对象、参数区间和坑点讲透,配示意图,做采集和信号处理的工程师照着走就行。

传感器 原始信号 RC 低通 硬件抗混叠 ADC 采样 满足奈奎斯特 限幅 + 中值 先去毛刺 低通/EMA 再平滑 硬件抗干扰与软件滤波各管一半;顺序是先限幅中值去异常,再低通平滑
图:整条传感器数据滤波链路——注意顺序,先去异常值,再压随机噪声

一、传感器数据滤波前先分清:毛刺、噪声和漂移是三回事

真实温度纹丝不动停在 25 度,测量值却在 25.1、24.9、25.0、25.2 之间来回抖,还冷不丁蹦出一个 37.5 的尖峰。围着真值抖的那部分叫随机噪声,单个蹦出去的叫毛刺,一整天慢慢往一个方向爬的才叫零点漂移。

三者来源不同,处理手段也不同:毛刺靠限幅和中值,噪声靠低通或平均,漂移只能靠标定、温度补偿或者换器件。分不清对象就上算法,属于白干。

同一段数据里的三种异常,治它们的办法完全不同 毛刺:单点尖峰 限幅 / 中值处理 噪声:围绕真值抖动 低通 / 平均处理 漂移:缓慢单向爬升 标定 / 温度补偿
图:先认类型再挑算法——把漂移当噪声滤,只会越滤越偏

二、采样与频率:看不清频谱,滤波一定选错

采样率 100Hz 就是每 10ms 采一个点,时域里是一串离散点。要判断信号和噪声各占哪段频率,得转到频域看频谱:好比有用信号集中在 0~10Hz、高频噪声在 10Hz 以上,那么一个截止频率 1~5Hz 的低通就能把两者分开。

一条铁律:采样率必须大于信号上限频率的 2 倍,这是奈奎斯特条件。采不够就会出现混叠,高频噪声被「折叠」成低频假信号,这时候软件再怎么滤都救不回来。所以硬件 RC 低通一定要摆在 ADC 前面,顺序不能反。

四类滤波器一句话记住:低通放低频,高通放高频,带通只放中间一段,带阻(陷波)只掐掉一段。搞不清该用哪类,先把这个对应关系背下来。

采样与频率基础:时域采样、频谱与低通高通带通带阻四类滤波器特性
图2:时域看采样点,频域看滤波该切在哪

三、异常值抑制:限幅和中值是把快刀,参数别拍脑袋

限幅的思路很直:新值和上一个有效值一比,差值超过阈值就当异常拒收,输出维持旧值。它专治单点跳变,逻辑短到单片机上一行 if 就写完,不占内存。

中值滤波专治脉冲毛刺:把窗口内的点排序,取中间那个。序列 10、11、12、100、13 排完序是 10、11、12、13、100,取中值 12,那个 100 一点都沾不上。窗口要用奇数个点,偶数取中值还得插值,工程上没必要折腾。

方法治什么参数起点代价与副作用
限幅单点跳变阈值取正常单周期变化量上限的 1.5~2 倍阈值太紧会把真变化当异常,输出像卡死
中值脉冲毛刺窗口 3~5 点,取奇数窗口越大延迟越大,上电初期窗口不满会取到假中值
滑动平均随机噪声窗口 4~16 点延迟约等于 N/2 个采样周期,随窗口线性增长
一阶低通 / EMA随机噪声α 按截止频率算,常用 0.05~0.3α 太小响应迟钝,超限报警跟着滞后
限幅阈值别拍脑袋设太紧。机械快速动作时位移读数本来就该突变,阈值一紧,真变化被当异常拒掉,输出看着像「卡死」,其实是滤波把真相滤没了。起点取正常单周期变化量上限的 1.5~2 倍,再拿实测数据回头微调。
异常值抑制:限幅滤波拒绝异常跳变,中值滤波剔除脉冲毛刺
图3:限幅管跳变,中值管毛刺,各管一段
现场实录:某压机位移读数每分钟蹦一次到满量程,操作工以为传感器坏了。拆开看是液压站启动瞬间的浪涌经信号线耦合进来,单点跳变而已。加一级 5 点中值加限幅阈值 3mm 就干净了,传感器本身一点毛病没有。

四、平均类滤波的取舍:越平滑,越迟钝

滑动平均是很常用的降噪手段,窗口内 N 个点求平均。工程上的巧思是增量更新:sum 减掉上一个点、加上新点,再除以 N,每来一个新点只做一次加一次减,计算量和窗口大小无关。

窗口 N 是纯取舍:N 越大曲线越平,延迟也越大,延迟大致是 N/2 个采样周期。信号毛刺大就加大窗口,系统响应要求快就减小窗口,两头不能都要。100Hz 采样下窗口 10 点,延迟就是 50ms,对快速定位的轴来说已经不小了。

滤波输出如果喂给 PID 做反馈,窗口一定要小。延迟混进控制回路,参数调得再漂亮的 PID 也会来回震荡;很多人调参调一整天,其实是平均窗口拖了后腿。先怀疑延迟,再怀疑 PID 参数。
平均类滤波:滑动窗口越大越平滑但延迟越大
图4:平滑与延迟,天平的两端

五、传感器数据滤波里的 EMA:一个变量就能做低通

EMA(指数加权移动平均)的公式就一行:y[n] = α·x[n] + (1−α)·y[n−1]。只保存一个历史值,单片机上几个字节就够,是资源很省的低通实现。

α 就是方向盘:取 0.01 这种小值,输出平滑但反应慢半拍;取 0.8 这种大值,跟得紧但滤波弱。α 不用瞎试,按采样率和目标截止频率有现成公式:α = 1 − e^(−2π·Fc/Fs)。

举个例子:采样率 100Hz、想要 5Hz 截止,代进去 2π×5/100 ≈ 0.314,α ≈ 1 − e^(−0.314) ≈ 0.27。换个采样率 α 就得重算,它不是能到处套的通用常数。

报警判断别直接搭在 EMA 输出上。α 偏小时,真实超限要等好几个采样周期才在输出里显现,报警就慢了;该快的信号就走小延迟方案,别为了曲线好看误了报警。曲线好看和报警及时,是两个指标。
EMA滤波:不同alpha系数下平滑强度与响应速度的对比
图5:α 小则稳,α 大则快

六、FIR 与 IIR:稳定性和算力之间的取舍

FIR 只用输入的历史值,天然稳定,还能做成线性相位——信号通过后波形形状不变,只是整体延迟一截,代价是阶数通常要高、计算量大。对波形有要求、又不差算力的场合,选它省心。

IIR 同时用输入和输出的历史值,低阶就能做出很陡的过渡带,算力省,但因为有反馈项,系数设计不好会发散震荡。前面讲的都能归队:滑动平均属于 FIR,EMA 就是一阶 IIR。

IIR 系数别从网上直接抄。别人是按他的采样率算的系数,你一换采样率,频率特性整个偏移,严重的直接震荡发散。换采样率必须重新算系数,或者干脆用设计工具重新生成。
FIR与IIR滤波器结构与特点对比
图6:FIR 稳、IIR 省,按需求挑

七、按频率特性挑低通,50Hz 工频用陷波

同样是低通,性格不一样:巴特沃斯通带平坦、幅频单调下降,没特别要求就选它;切比雪夫 I 型过渡带更陡,代价是通带有波纹;贝塞尔相位特性好、波形失真小,在意波形形状就选它;椭圆过渡带更陡,但通带阻带都带波纹。

另一种高频登场的干扰是 50Hz 工频。信号线和动力线捆在一个线槽、接地又做得随意时,频谱上 50Hz 处会立起一根尖峰,看着就像信号在抖。这时候上陷波器,在 50Hz 精准挖个坑,其它频率基本不受影响。

怎么滤都压不干净的干扰,先回去查布线。信号线和变频器、动力线同槽属于硬件耦合,软件滤波只能缓解、不能根治——先分槽、屏蔽、单点接地,再回头谈滤波算法。顺序反了,算法只会背锅。
常见低通滤波器幅频特性对比与50Hz工频干扰陷波处理
图7:四种典型低通的性格,外加陷波专治工频

八、多传感器融合:互补滤波与卡尔曼

一个传感器撑不住的场景才需要融合。经典组合是陀螺仪加加速度计:陀螺仪短期准、长期会漂移;加速度计低动态时能靠重力方向校正,但短期噪声大。互补滤波一行搞定:Angle = α·(Angle + Gyro·dt) + (1−α)·AccelAngle,高频信陀螺,低频信加计。

再进一步是卡尔曼:预测、更新、状态估计三步走,按两边的噪声统计自动分配权重。举个数字:模型预测 10.2 米,测量给了 10.8 米,融合结果落在 10.4 米,不偏听偏信。Q(过程噪声)和 R(测量噪声)这两个参数,决定折中偏向谁。

Q 和 R 不是玄学常数,要按传感器实际噪声实测标定;直接抄例程的值,融合结果经常还不如不融合。另外单靠陀螺加加计搞不定航向角,Yaw 的长期校准得再加磁力计。
IMU融合:互补滤波与卡尔曼滤波原理对比
图8:互补是一行公式,卡尔曼按统计折中

九、工程滤波链:先去异常,再平滑

实际项目里滤波从来不单打独斗。举个压力采集的例子:采样率 100Hz,首级做合法性检查拦住离谱值,第二级 5 点中值把 3500 这类毛刺挤出去,末级截止 5Hz 的一阶低通把随机抖动压平,输出就干净了。

顺序有讲究,先处理异常值再平滑随机波动。反过来先做平均,一个毛刺会被摊进整串数据里,把一大段输出全污染,等于把单点错误放大成趋势。这条顺序错了,后面算法再多也补不回来。

中值滤波刚上电时窗口还没攒满点,别急着输出,不然取到的是假中值。等窗口填满再开放输出,或者在合法性检查里跳过前几个周期,成本几乎为零。
工程滤波链:合法性检查、中值滤波、一阶低通的完整处理流程
图9:先去毛刺,再平滑,顺序不能反

十、选型与嵌入式资源账:RAM 和 CPU 都是钱

按场景选方案,查表省事。温湿度这类慢变量用限幅加 EMA;光照、ToF 测距用中值加 EMA;ADC 采电压用滑动平均或 IIR;IMU 姿态用互补或卡尔曼;心电这类强工频场景用带通加陷波。

应用场景推荐链路参数起点
温湿度、压力等慢变量限幅 + EMA采样 1~10Hz,α 取 0.05~0.2
光照、ToF 测距中值 + EMA中值窗口 3~5 点
ADC 电压采集滑动平均 或 二阶 IIR窗口 8~16 点
IMU 姿态解算互补滤波 或 卡尔曼采样 100~1000Hz,按实测标定 Q/R
强工频干扰场合带通 + 50Hz 陷波陷波 Q 取 20~40

资源账也得算清:滑动平均窗口 N=100,float 每点 4 字节就要留 400 字节缓存;EMA 只保存一个浮点数,4 字节搞定。128 抽头的 FIR 在 10kHz 采样率下约等于每秒上百万次乘加,主频紧张就上 CMSIS-DSP 这类现成库、用 DMA 搬运、开硬件浮点单元。

滤波方案选型表与嵌入式RAM、CPU资源占用对比
图10:选型查表,资源算账

传感器数据滤波常见问题

问:传感器数据滤波是不是开了就比不开好?
答:不是。滤波必然带来延迟,控制系统越是要快,越要克制。先判断数据里到底有没有异常值和噪声,没有就别硬滤,直接透传反而更准。

问:限幅和中值,先做哪一个?
答:一般先限幅再中值。限幅先把离谱的挡掉,中值再处理窗口里的脉冲,两级串起来比单用一级干净得多,计算量也没上去多少。

问:一阶低通的 α 能不能直接取 0.1?
答:可以当起点,但要按采样率折算。同样 α=0.1,采样率 10Hz 和 1000Hz 对应的实际截止频率差了 100 倍,效果完全不是一回事。用 α = 1 − e^(−2π·Fc/Fs) 反推。

问:位移传感器接进 PLC 后读数跳,是滤波没做好吗?
答:先查接地和走线,再谈滤波。屏蔽线单点接地、信号线与动力线分槽,这两条做到位,很多跳变自己就没了。硬件耦合改成软件滤,属于治标。

问:卡尔曼滤波是不是比中值加低通高级,就该用?
答:看对象。单传感器、单变量的位置反馈,限幅加中值加一阶低通就够了;只有多传感器需要互相校正、且噪声统计可测时,卡尔曼才划算。算法复杂度和调试成本都要算进去。

传感器数据滤波的链路怎么搭、参数怎么定,易测电气位移传感器工程师欢迎您的咨询。

版权所有:深圳市易测电气有限公司 备案号:粤ICP备19052563号 网安粤公网安备 44030602003587号 技术支持:星海互联