嵌入式常用10种滤波算法介绍及其优缺点对比
扫描二维码
随时随地手机看文章
在嵌入式系统开发中,传感器数据采集与处理是核心环节之一。然而,受环境干扰、硬件特性等因素影响,采集到的数据往往混杂着噪声,这些噪声会干扰系统对真实信号的判断,甚至引发误操作。软件滤波算法作为一种无需额外硬件投入的信号处理手段,通过代码运算削弱噪声影响,成为嵌入式开发中不可或缺的技术。本文将详细介绍嵌入式开发中常用的10种滤波算法,分析其原理、优缺点及适用场景,帮助开发者根据实际需求选择合适的滤波方案。
一、限幅滤波法(程序判断滤波法)
原理
限幅滤波法是一种基于经验判断的简单滤波方法。开发者根据经验设定一个允许的最大偏差值A,每次采样得到新值时,将其与上一次的有效值进行比较。若两者差值小于或等于A,则认为新值有效;若差值大于A,则判定新值受干扰无效,舍弃该值并以上一次的有效值替代。
优缺点
优点:算法简单,计算量小,对硬件资源要求极低,能有效抑制因偶然因素引起的脉冲干扰,比如雷击导致的电压尖峰、电机启停造成的信号突变等。在光伏逆变器项目中,限幅滤波法可快速过滤雷击带来的异常电压值,保障系统稳定运行。 缺点:无法抑制周期性干扰,滤波后的信号平滑度较差;偏差值A的选择依赖经验,若设定过小,可能会滤除有效信号,若设定过大,则起不到滤波作用。
适用场景
适用于采样信号变化缓慢,且偶尔出现脉冲干扰的场景,如温度、液位等参数的采样。
二、中位值滤波法
原理
连续采集N个(N取奇数)采样值,将这些值按大小排序,取中间位置的值作为本次有效的采样结果。例如,连续采集7个温度值,排序后取第4个值作为最终结果。
优缺点
优点:对偶然出现的脉冲性干扰(坏点)有极佳的滤波效果,能有效剔除异常值。对于温度、液位等变化缓慢的被测参数,滤波效果良好。在传感器初始上电阶段,信号不稳定,中位值滤波法可快速得到相对稳定的数值。 缺点:对于流量、速度等快速变化的参数不适用,因为排序过程会丢失信号的瞬态变化信息;当N值较大时,排序计算量较大,对MCU性能有一定要求。
适用场景
适用于存在明显脉冲干扰,且被测量参数变化缓慢的场合,如环境温度采集、液位检测等。
三、算术平均滤波法
原理
对连续采集的N个采样值进行算术平均运算,将平均值作为本次有效的采样结果。N值的选择需根据实际情况确定,一般流量参数N取12,压力参数N取4。N值越大,信号平滑度越高,但灵敏度越低;N值越小,平滑度越低,但灵敏度越高。
优缺点
优点:适用于对具有随机干扰的信号进行滤波,当信号在某一数值范围附近上下波动时,能有效消除噪声。例如,在房间内湿度采集场景中,算术平均滤波法可平滑湿度值的小幅波动,得到更稳定的结果。 缺点:对于测量速度较慢或要求数据计算速度较快的实时控制系统不适用,且需要存储N个数据,比较消耗RAM资源。
适用场景
用于信号本身在某一值附近波动,且含随机噪声的情况,如压力、流量等参数的测量。
四、递推平均滤波法(滑动平均滤波法)
原理
递推平均滤波法是算术平均滤波的改进版,核心是建立一个长度为N的队列(通常为环形缓冲区)。每次采样到新数据,将其放入队尾,并丢弃队首的旧数据,保持队列长度始终为N,然后对队列中的N个数据进行算术平均运算。
优缺点
优点:对周期性干扰有良好的抑制作用,平滑度高,适合高频振荡的系统。与算术平均滤波法相比,降低了RAM消耗,只需开辟固定N个数据的存储空间。在变频器项目中,该方法可有效抑制PWM引起的100Hz干扰。 缺点:灵敏度低,对偶然出现的脉冲性干扰抑制作用较差;N值选取不当时可能引起延迟和相位滞后。
适用场景
适用于高频振荡的系统,如电流采样、音频信号处理等。
五、中位值平均滤波法(防脉冲干扰平均滤波法)
原理
结合了中位值滤波法和算术平均滤波法的优点,先连续采集N个采样值,去掉其中的最大值和最小值,然后对剩余的N-2个值进行算术平均运算,得到最终的滤波结果。
优缺点
优点:兼具中位值滤波法和算术平均滤波法的优势,既能有效抑制脉冲干扰,又能对随机噪声进行平滑处理,滤波效果较为理想。在工业现场的温度采集项目中,当存在偶尔的脉冲干扰和持续的随机噪声时,该方法能得到稳定的温度值。 缺点:计算量相对较大,需要进行排序和多次运算,对MCU性能有一定要求;同样不适用于快速变化的信号。
适用场景
适用于存在脉冲干扰和随机噪声,且信号变化缓慢的场合,如工业环境中的温度、压力监测等。
六、限幅平均滤波法
原理
先采用限幅滤波法对每次采样值进行处理,剔除超出允许偏差范围的异常值,然后将经过限幅处理后的若干个采样值进行算术平均运算,得到滤波结果。
优缺点
优点:融合了限幅滤波法和算术平均滤波法的特点,既能抑制脉冲干扰,又能平滑随机噪声,滤波效果比单一算法更优。在电机转速监测场景中,可先过滤掉因电机启停产生的脉冲干扰,再对转速值进行平均处理,得到稳定的转速数据。 缺点:计算步骤较多,相对复杂;需要设定限幅偏差值和平均采样个数,参数选择依赖经验。
适用场景
适用于既有脉冲干扰又有随机噪声,且信号变化缓慢的场合,如电机转速、电压电流监测等。
七、一阶滞后滤波法(低通滤波法)
原理
这是一种利用软件实现RC低通滤波器的动态滤波方法,融合了本次采样值和上次滤波输出值,取不同的权重。公式为:Y(n) = a * X(n) + (1-a) * Y(n-1),其中Y(n)为本次滤波结果,Y(n-1)为上次滤波结果,X(n)为本次采样值,a为滤波系数(0 < a < 1),a = T / (T + τ),T为采样周期,τ为时间常数。
优缺点
优点:对周期性干扰具有良好的抑制作用,适用于波动频率较高的场合;计算量极小,仅需一次乘法和加法运算,占用RAM极少,非常适合资源紧张的MCU。在高频振荡系统中,如小型电机的电流采样,一阶滞后滤波法能在低资源消耗下实现有效滤波。 缺点:存在相位滞后,灵敏度低,滞后程度取决于a值大小;不能消除滤波频率高于采样频率1/2(奈奎斯特频率)的干扰信号。
适用场景
适用于高频振荡系统,且MCU资源紧张、对计算速度有要求的场合,是嵌入式系统中使用较为广泛的滤波算法之一。
八、加权递推平均滤波法
原理
在递推平均滤波法的基础上,对队列中的每个采样值赋予不同的权重,近期采样值权重较大,远期采样值权重较小,然后进行加权平均运算得到滤波结果。权重的分配可根据实际情况确定,通常遵循“越新的数据权重越大”的原则。
优缺点
优点:能兼顾信号的实时性和平滑性,对系统的动态响应有较好的跟踪效果。在温度控制系统中,当温度发生变化时,加权递推平均滤波法能更快地响应温度变化,同时保持数据的稳定性。 缺点:权重的确定较为复杂,需要根据实际信号特性进行调整;计算量比递推平均滤波法大。
适用场景
适用于系统对信号的实时性和平滑性都有要求的场合,如温度控制、液位调节等。
九、消抖滤波法
原理
设置一个计数器,每次采样到新值时,若新值与当前有效值相同,则计数器加1;若不同,则计数器清零。当计数器达到设定的阈值时,才确认新值有效,更新有效值。
优缺点
优点:能有效消除因机械抖动或接触不良引起的信号波动,常用于按键检测等场景。在嵌入式设备的按键输入处理中,消抖滤波法可避免因按键抖动导致的多次触发。 缺点:响应速度较慢,需要多次采样才能确认信号有效;不适用于快速变化的信号。
适用场景
主要用于按键检测、开关量输入等需要消除抖动干扰的场合。
十、限幅消抖滤波法
原理
结合了限幅滤波法和消抖滤波法的特点,先对采样值进行限幅处理,剔除超出允许偏差范围的异常值,然后再进行消抖处理,当连续多次采样值稳定在一定范围内时,才确认信号有效。
优缺点
优点:同时具备限幅滤波和消抖滤波的功能,能有效抑制脉冲干扰和抖动干扰,滤波效果更全面。在工业控制中的开关量监测场景中,可应对复杂的干扰环境,确保信号准确。 缺点:算法相对复杂,需要设定限幅偏差值和消抖计数器阈值,参数调整较为繁琐。
适用场景
适用于既有脉冲干扰又有抖动干扰的开关量输入或缓慢变化信号的处理场合。
在嵌入式系统开发中,选择合适的滤波算法需要综合考虑多方面因素,包括信号特性(变化快慢、噪声类型)、系统实时性要求、MCU资源状况等。限幅滤波法和消抖滤波法适合资源有限、仅需处理简单干扰的场景;中位值滤波法和算术平均滤波法适用于存在脉冲干扰或随机噪声的缓慢变化信号;递推平均滤波法和一阶滞后滤波法更适合高频振荡系统;而中位值平均滤波法、限幅平均滤波法、加权递推平均滤波法和限幅消抖滤波法则融合了多种算法的优点,能应对更为复杂的干扰环境。开发者在实际项目中,应根据具体需求进行测试和调整,以达到最佳的滤波效果。





