摘要工频干扰是各类工控测量系统中最常见的一种干扰信号,对有用信号的检测起着极大的妨碍作用。因此,在各类测量系统中,都需考虑工频干扰的抑制问题。本文以自适应相干模板法为基础,讨论用该方法在单片机应用系统中去除工频干扰的快速实现问题。
关键词工频干扰 自适应相干模板法 滤波
引言
针对工频干扰的特点,本文使用参考文献1所提出的自适应相干模板法。这是一种极其简单、有效的滤除工频干扰的算法,十分有利于单片机快速实现,在采样率不太高的情况下,能达到实时滤波。该算法之所以利于单片机快速实现,是因为算法本身多数为加法和减法运算,不涉及乘法运算,且通过合理的选择M值,可将除法运算巧妙地简化为移位运算或更简单地直接甩掉低位字节[2]。
1 自适应相干模板法
1.1 滤除工频干扰的原理
参考文献1所提出的自适应相干模板法,是根据工频干扰的特点,从原始信号中得到工频干扰的模板,再从原始信号中减去该模板,达到滤除工频干扰的目的。
假设X(n)为原始信号,S(n)为其中的有用信号,N(n)为工频干扰信号,则
X(n)=S(n)+N(n)
定义模板信号为
式中,fs是信号的采样频率,fg是工频干扰的频率(50 Hz)。在自适应模板法中,要求fs为fg的整数倍,即fs=k·50Hz(k为正整数)。
由于N(n)为周期信号,若S(n)为零均值信号,当M足够大时,有
所以,只要从原始输入信号中减去模板信号就能达到滤除工频干扰的目的,即
对(1)式两端取Z变换,可得该系统的传递函数为
1.2 幅频响应特性
根据系统传递函数(2)式,利用MATLAB语言,对不同采样频率、不同M值的幅频响应特性进行比较,如图1所示。
从图1 A组可看出,该滤波器不仅对50 Hz有滤波效果,对所有频率为50 Hz整数倍的信号都有滤波作用。因此,若采用自适应相干模板法滤除工频干扰,则当有用信号频带范围较宽,信号采样率较高时,将对工频干扰50 Hz及其各谐波信号都有很好的抑制作用。
因此不仅要求采样率为50 Hz的整数倍,而且要求有用信号的最高频率分量不超过100 Hz,否则,频率为100 Hz的有用信号也和工频干扰一样被滤除。这样,滤波后的信号将产生失真。
从图1 B组可看出,滤波器的幅频特性受M值影响较大。当M值较大时,通频带的纹波系数较小,阻带宽度也较窄。也就是说,M值越大对滤除理想的50 Hz来说效果越好;然而,实际工频干扰具有一定的频率变化范围,当M值大到超过某一值后将导致工频干扰滤除效果下降,因此,在实际设计滤波器时,M值的选取要综合考虑。一般M值可选256。
图1 系统幅频响应特性
2 单片机实现
用自适应相干模板法去除工频干扰,可以达到实时滤波,这由信号的采样频率、单片机的速度决定。若信号的采样频率不高,单片机速度较快,则在信号的采样间隔时间内就能实现工频干扰的滤除。因此,在使用该方法前,应大概估计信号滤波所需的时间(与信号的通道数成正比),再适当选择采样率和晶振。
为方便说明,下面以A/D采样精度为16位、单片机为89C51、fs=200 Hz、M=256为例,来讨论单通道信号中工频干扰去除的快速实现问题。由于A/D精度为16位,因此,单片机中所涉及的运算一般为双字节或三字节加法或减法运算,且由于M值取为256,使得除法运算也变得极其简单,直接简化为甩掉低字节即可。
2.1 建立初始模板
如前所述,利用自适应相干模板法去除工频干扰的关键在于建立工频干扰的模板,而为实现连续滤波,首先需建立一个初始模板。