1引言
仪器仪表设备在现场测试过程中,由于生产变量的测试数据对生产过程具有重要的意义,因此对各种物理量测试数据精度要求是比较高的。
在前向测试通道上采用的抗干扰措施中,滤波方法是抑制干扰的一种有效途径。在工业现场中,可利用硬件滤波器电路或软件滤波器算法提高测试数据的准确性。硬件滤波措施是使用较多的一种方法,技术比较成熟,但同时也增加了设备,提高了成本,而且电子设备的增加有可能带来新的干扰源。而采用软件滤波算法不需增加硬件设备,可靠性高,功能多样,使用灵活,具有许多硬件滤波措施所不具备的优点,当然它需要占一定的运行时间。
2常用的几种软件滤波方法
(1)中值滤波法:即每次取N个AD值,去除其中的最大值和最小值而取剩余的N-2个A/D转换值的平均值。
(2)程序判断滤波法:即根据经验确定出两次采样的最大偏差ΔY,若先后两次采样的信号相减数值大于ΔY,表明输入为干扰信号,应去除;用上次采样值与本次采样值比较,若小于或等于Δ Y,表明没有受到干扰,此时本次采样值有效,这样可以滤去随机干扰和传感器不稳定而引起的误差。
(3)利用格拉布斯(Grubbs)准则进行处理:根据误差理论,要有效地剔除偶然误差,一般要测量10次以上,兼顾到精度和响应速度,取15次为一个单位。在取得的15个数据中,有些可能含有较大的误差,需要对它们分检,剔除可疑值,提高自适应速度。对可疑值的剔除有多种准则,如莱以达准则、肖维勒(Chauvenet)准则、格拉布斯(Grubbs)准则等。以Grubbs准则为例,它认为若某测量值 xi对应的残差Vi满足下式
Vi = xi- >g(n,a)× σ(X)
时应将该数据舍去。式中,为n次采集到的AD 值的平均值,=(∑xi)/n ;σ(X)为测量数据组的标准差,由贝塞尔函数可得: σ(X)=[(∑Vi2 )/(n-1)]1/2;g(n, a)是取决于测量次数n和显著性水平a (相当于犯“弃真” 错误的概率系数),a通常取0.01或0.05。通过查表可得:当 n=15时,a=0.05, g(n,a)=2.41。
把15次采集到的AD值存入一个数组中然后求平均值,计算残差,求标准差σ(X)。将残差绝对值与2.41倍的标准差σ(X)比较。剔除可疑值以后,再求平均值,求出新的平均值以后,应再重复以上过程,验证是否还有可疑值存在。据我们对测量装置大量的实际测试结果看,这样做没有什么必要,因为一般只有第一遍即可达到要求。
然而这种方法也有它的不足, 利用Grubbs准则需要处理大量的数据,而在一般的工业现场测试设备中,仪表结构大多采用嵌入式结构,如AVR单片机。这些MCU程序空间和数据空间有限,若处理大量数据,难以满足资源要求。而且,由于Grubbs准则要求MCU进行大量数据处理,使得系统降低了信号采集速率,影响实时性。
3.AD7705内置的数字滤波器
上述的几种软件滤波方法对抑制个别的异常数据方面具有一定作用,然而对于由工频干扰引起的平稳随机干扰信号不太理想。随着近几年来集成电路的快速发展,一些数字滤波器也集成到数据处理芯片当中,而且数字滤波器的设计参数通过软件可编程实现,具有极大的灵活性和实用性。
3.1 芯片介绍及应用
目前市场上由美国AD公司新近推出的AD7705 就是一例[1]。它是内置了数字滤波器的带信号调理电路的16位A/D转换器件,可应用于低频测量的2通道的模拟前端。该器件可以接受直接来自传感器的低电压输入信号,然后产生串行的数字输出,利用∑-Δ转换技术实现16位无丢失代码性能。选定的输入信号被送到一个基于模拟调制器的增益可编程专用前端,片内数字滤波器处理调制器的输出信号,通过片内控制寄存器可调节滤波器的截止点和输出更新率,从而对数字滤波器的第一个陷波进行编程。
AD7705有以下几个特点:
(1)差分输入通道ADC,具有16位无丢失代码和0.003%非线形误差;
(2)MCU的接口为串行的三线接口模式;
(3)可编程增益1~128,信号极性以及更新速率配置有工作寄存器,通过对寄存器的操作可以选择等;
(4) 器件还包括自标定和系统校准功能,以消除器件本身或系统的增益和编程误差;
(5) 内带数字信号处理电路,由软件可编程进行设置。
引脚排列如图1。
主要管脚说明如下:
MCLK IN:为转换器提供主时钟信号,能以晶体/谐振器或外部时钟的形式提供。
MCLK OUT:当主时钟为晶体/谐振器时,晶体谐振器被接在MCLK IN和MCLK OUT之间;如果在MCLK IN引脚处连接一个外部时钟,MCLK OUT将提供一个反向时钟信号。
CS :片选,低电平有效的逻辑输入。
A1N2(+)[A1N1]:对于AD7705,差分模拟输入通道2的正输入端;对于AD7706,模拟输入通道1的输入端。
A1N1(+)[A1N2]:差分模拟输入通道1的正输入端。
A1N1(-)[COMMON]:差分模拟输入通道1的负输入端。
A1N2(-)[A1N3]:差分输入模拟通道2的负输入端。
DRDY :逻辑输出。这个输出端上的逻辑低电平表示可从AD7705的数字寄存器获取新的输出字。
DOUT:串行数据输出端。
DIN:串行数据输入端。
SCLK:串行时钟,施密特逻辑输入。
从AD转换器件发展趋势来看,目前的16位A/ D转换器除具有较高的转换精度外,还具有高度的集成化、可编程等特点 [2,3]。AD7705符合这些特点,其简化的应用电路如图2。
图2给出了一个完整的前向测试通道,图中 AD7705可直接接收传感器输入信号,而不用外接信号调理电路,模拟量输出增益可实现软件可编程调节。输出的AD值通过SPI三线口模式发送给MCU。图中,MCU采用的是P87LPC764,它是 PHILIPS公司新推出的增强型8位单片机,内核与MCS51系列兼容,内置电源检测、看门狗WDT
、 IIC总线等资源。 AD7705的数据接口采用了SPI接口标准。SPI 接口利用4根线可完成主从之间的数据通信。接口非常方便。这4根口线分别为时钟线(SCLK)、数据输入线(SDI)、数据输出线(SDO)和片选线(CS)。DIN线用来向片内寄存器传输数据,而DOUT线用来访问寄存器里的数据。SCLK是串行时钟输入,所有的数据传输都和SCLK信号有关。DRDY线作为状态信号,以提示数据什么时候已准备好从寄存器读数据。输出寄存器中有新的数据时,DRDY变为低电平,在数据寄存器更新前,若DRDY变为高电平,则提示这个时候不读数据,以免在寄存器更新的过程中读数据。CS作为片选信号,在本电路中由于只用一片AD7705故CS端接地。
3.2 低通滤波及陷波处理
AD7705包含一个片内低通滤波器,用它处理器件的∑-Δ调制器的输出信号。所以,该器件不仅提供模数转换功能,而且还具备一定的滤波能力。AD7705内嵌了数字低通滤波器,数字滤波发生在模-数转换之后,它能消除模-数转换过程中产生的噪音。此外,数字滤波器容易实现可编程性。依靠数字滤波器设计,用户可以编程截断频率和输出更新频率。
AD7705的数字滤波器是一个低通(sin x/x)3 滤波器(也称为sinc3),其在Z 域的转换功能可描述为,
在3次域可描述为,
图3是截止频率为15.72Hz的滤波器频率响应,这一频率与滤波器的第一个陷波频率(50Hz)对应,这曲线显示从直流到300Hz。在数字滤波器采样频率的两边这个频率曲线各重复一次。这种滤波器响应与一个平均滤波器的相似。因此,图中的输出速率为50Hz,滤波器的第一个陷波频率为50Hz。这种(sin x/x)3 滤波器的陷波位置多次在第一个陷波的倍数处重复。在这些陷波处滤波器提供大于100dB 的衰减。
AD7705内部带有数字滤波器,具有抑制干扰功能。对于50Hz的工频干扰在第一陷波位置已衰减180dB,这样有效抑制工频干扰。另外,我们在每次采集AD值时,每采集10个AD值作为一组数据,去除其中的最大值,最小值而取剩余的8个A/D转换值的平均值,这样可有效去除数据随机误差。