摘要 工频干扰是各类工控测量系统中最常见的一种干扰信号,对有用信号的检测起着极大的妨碍作用。因此,在各类测量系统中,都需考虑工频干扰的抑制问题。本文以自适应相干模板法为基础,讨论用该方法在单片机应用系统中去除工频干扰的快速实现问题。
关键词 工频干扰 自适应相干模板法 滤波
引言
针对工频干扰的特点,本文使用参考文献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 建立初始模板
如前所述,利用自适应相干模板法去除工频干扰的关键在于建立工频干扰的模板,而为实现连续滤波,首先需建立一个初始模板。
由于信号的采样率为200 Hz,是工频干扰50 Hz的4倍,即在一个工频干扰周期内有4个采样值,所以,建立的模板包括4个值,对应4个不同相位的采样值。另外,由于M值为256,因此,最初采集的1024个(=256×4)数据(16位)是用来建立初始模板的:将1024个数据根据mod(n/4)(n=0,1,2,…,1023)取值的不同,分别将数据进行累加存入不同地址的内存单元中(共需3字节×4=12字节)。当1024个数据分别累加完毕,此时对应内存单元中存放的数据即为
。这4个数据分别取高16位(中、高字节,即求
)就是工频干扰的初始模板。
2.2 滤除工频干扰
在建立初始模板之后,就可对信号进行工频干扰的滤除:对于第1024个(n = 1024)采样数据,由于mod(n/4)=0,因此,只要将该采样值减去初始模板值0,即进行减法运算
,就完成了该时刻信号的工频干扰的滤除。但为快速、连续、实时地实现50 Hz滤波,还需将初始模板值0进行修改,即将存放
的内存单元的内容修改为
。同理,对于第1025个(n = 1025)采样数据,此时mod(n/4)= 1,要滤除该时刻信号中包含的工频干扰,只需减去初始模板值1,即完成减法运算
。当然,也需修改初始模板值1,即将存放
的内存单元内容修改为
。
依此类推,以后采入的每一个数据都做相应处理:滤波和修改模板,最终就可实现整个信号的快速、连续、实时去除工频干扰。由于滤波过程中涉及减法运算,而单片机对于有符号数的运算处理较复杂,因此,在进行减法运算之前,应先将被减数加上一个常数,以保证运算结果都为正值。图2为滤波程序流程框图。下载详细程序清单(5K)。

图2 程序流程框图
结论
本文主要讨论了自适应相干模板法去除工频干扰在单片机应用系统中的快速实现问题。与模拟滤波方法相比较,该方法具有成本低、滤波效果好等特点;而与其它数字滤波方法比较,该方法易于实现、速度快、频响特性极佳。
参考文献
1 李刚、林凌、虞启琏,滤除工频干扰的自适应相干模板法,中国生物医学工程学报,第16卷第3期,pp280-283,1997.9
2 孙涵芳、徐爱卿,单片机原理及应用,北京航空航天大学出版社,1988.2
