1 切比雪夫等波纹逼近低通滤波器设计方法
在数据采集系统中,输入信号均含有种种噪声和干扰,它们来自被测信号源本身、传感器和环境等。为了进行准确测量和控制,必须消除被测信号中的噪声和干扰。工程上常用的软件滤波方法有:算术平均值法、滑动平均值法、防脉冲干扰平均值法等。这些方法一般可以消除由于偶然因素引起的脉冲干扰,但对周期性干扰尤其是工频干扰和白噪声抑制作用较差,而且平滑度不高。
切比雪夫等波纹逼近方法是FIR滤波器设计方法之一。它采用“最大误差最小化”优化准则,即mini(max|E(w)|),其中权函数误差E(w)=W(w)[Hd(w)-H(w)],W(w)为加权函数,Hd(w)为期望频率响应,H(w)为实际频率响应。该方法使用Remez交换算法和切比雪夫逼近理论设计滤波器,在期望的和实际的滤波器频率响应之间实现最佳匹配。应用这种方法设计的滤波器能够获得较好的通带和阻带性能,并能准确地指定通带和阻带边缘。由于该滤波器在通带和阻带的误差是均匀分布的,因此其频率响应在通带和阻带内显示出等波纹性,阶次可以比较低。从上述分析,切比雪夫等波纹逼近滤波器是最优的。
决定切比雪夫等波纹逼近低通滤波器系数的参数主要有:滤波器长度M,通带和阻带截止频率wp、ws,相应频带的幅度m,权系数w。其中权系数w由通带和阻带波动Ap、Ar决定。使用权系数w,是考虑在设计滤波器时对通带和阻带常要求不同的逼近精度,故乘以不同的权系数,以统一使用最小化最大误差。长度M由wp、ws、Ap、Ar决定。
Kaiser提出近似计算单通带、单阻带滤波器长度M的一个简单公式:
本文所研究的对象为可燃性气体检测报警系统。传感器检测气体浓度信号,把输出的模拟电压值送到单片机,经A/D转换成数字量后,再进行低通滤波、线性化处理以及LED显示浓度等。由于输入信号为缓慢变化的可燃性气体,在滤波器设计中,可把通带、阻带的截止频率选得较低,这里wp=0.1,ws=0.3(采样频率150Hz)。为便于进一步处理,通带的幅频特性应该平坦,幅值增益接近1。当Ap=0.22db、Ar=30db时,根据MATLAB仿真,恰能满足要求,此时M=16。切比雪夫等波纹逼近低通滤波器幅相频率特性如图1所示。由图可见,该滤波器对通带、阻带截止频率控制得很好,过渡带衰减得较快。要达到同样要求的滤波指标,使用窗函数方法设计的滤波器却需要很高的阶数(105阶),而过高的阶数不易在单片机或其他微控制器上实现。所以采用切比雪夫等波纹逼近方法设计的滤波器不但滤波性能优良,而且阶数可以做得比较低,易在单片机或其他微控制器中实现。
2 MSP430F133中的ADC12模块特点及使用方法
系统采用MSP430F133单片机,它是美国德州仪器(TI)公司生产的一种新型16位Flash微控制器。其突出的优点是低电源电压、超低功耗、多种功能。由于其功能远远超过其他系列单片机,因而又称之为混合型单片机。MSP430F133芯片中的ADC12是12位高精度A/D转换器,它采用逐次逼近原理,12位分辨率,最高采样速率可达2×105次/秒。利用芯片内置的自动扫描功能,ADC12可以不需要CPU的协助而独立工作。应用这款单片机设计智能仪器,可以明显地简化外围电路器件。
为了得到精确的转换,适当的采样时间是必须的(这里选择SHT0=8即Tsample=4×ADC12CLK×64)。根据系统设计要求,MSP430F133对一路模拟信号进行巡回处理,虽然ADC12提供了多次—单通道A/D转换模式,但1次连续采集的点数(20个)超过了最大存储器限额(16个)。为了保证采样间隔相等、精度相同,本系统选择单次—单通道A/D转换模式。同时,A/D转换的参考电平选择外部2.5V的参考电压供电,因为ADC12内部提供的参考电平会随时间、温度有一定的漂移。
A/D处理程序采用查询方式,即1次连续采集20个点,将采集的数据暂存到片内RAM,然后再对这些数据进行卷积滤波。当一组数据处理结束后,再采集第二组数据。由于MSP430高速的处理能力,故选择CPU默认时钟频率为800kHz(DCO提供);ADC12的转换时钟选择内部自带的RC振荡器ADC12OSC,频率为5MHz;从完成一组数据采集到最终显示可燃性气体浓度的时间小于0.05秒,这样的处理速度完全能够满足对可燃性气体浓度实时检测的要求。
3 切比雪夫等波纹逼近低通滤波器在MSP430F133单片机中的实现
可燃性气体浓度信号经过TGS813气体传感器转变成电信号,经前置放大后送入单片机。图2为单片机随机现场采集的一组原始信号。从图中可以看出采集的信号存在一定幅值波动,而且幅值不是在一个范围内上下波动,这时采用均值滤波效果不好。图3为原始信号的频谱,该频谱除了直流分量外,还包含多种频率成份,即夹杂一些噪声和干扰。
MSP430F133单片机具有强大的数据处理能力,采用汇编语言可以编写出高效率的源程序。程序采用定点运算模式即能满足精度要求。通过上面给定指标设计出的切比雪夫等波纹滤波器系数为(滤波器长度M=16,由于系数偶对称,所以只需存储一半系数):
h=[-0.02443 -0.02362 -0.01615 0.01153 0.05906 0.11953 0.1709 0.20291]
把每个系数都扩大1 280倍(放大倍数小,则系数之间误差变大,扩大没有意义;放大倍数太大,则乘除法运算时容易产生溢出),四舍五入取整,并转换成16进制,以系数表格形式存放在单片机内部的Flash存储器中,则:
图6为切比雪夫等波纹逼近滤波主程序框图。程序采用模块化结构设计,并使用查表的方法进行卷积。在卷积求点Y(16)、Y(17)、Y(18)、Y(19)以及折线插值求对应浓度时,都调用了16×16位定点乘法和32÷16位定点除法运算子程序。由于存储的滤波器系数为12位,采集的电压值亦为12位,所以定点乘法以及定点除法运算不会产生溢出。当发生溢出时,则程序舍掉当前数据,重新采集一组新数据进行处理,从溢出到再次采集,程序执行时间小于0.05秒。
4 结束语
本文以缓慢变化的可燃性气体浓度信号为例,进行切比雪夫等波纹逼近低通滤波器设计,并在MSP430F133单片机中加以实现。通过仿真及现场测试,得到较满意的效果,可以用于实际系统。切比雪夫等波纹逼近滤波方法能够全面控制给定的设计指标,通带和阻带达到最小等波动特性,并且滤波器的阶次相对较低。在该系统中,从完成一组数据采集到最终LED显示可燃性气体浓度的时间不超过0.05秒,这样的处理速度完全能够满足对可燃性气体浓度实时检测的要求。 |