摘要:基于MSP430F1611单片机,采用数字频谱分析与模拟带通滤波器组相结合的方式,研制新型两线制数字蒸汽流量计,以扩展量程比,保证现场测量,并实现低功耗工作,解决目前此类流量计存在的关键性技术问题。采用低功耗运放和数字电位器组成程控放大器,以适应蒸汽传感器输出信号强度较大范围的变化;根据少点数FFT计算结果,选择带通滤波器组,既满足蒸汽传感器信号频率范围变化大的需要,又对蒸汽信号进行滤波;设计有效的电源管理模块和电流输出电路,为仪表两线制工作提供足够的电流。
0引言
蒸汽流量计具有测量介质广泛、无活动部件、压力损失低、输出信号频率与状态体积流量成正比等优点,获得较为广泛的应用。但是,蒸汽流量计的现场测量有待改进,量程比有待扩展。为此,国内外有关公司和学者将数字信号处理方法应用于蒸汽信号的处理,有效地保证现了场测量和扩展量程比。由于以上的算法都比较复杂,需要进行大量的运算,而仪表有实时性的要求,所以,必须采用DSP(数字信号处理器)才能完成任务。但是,DSP芯片的功耗大,一般工作电流都在100mA以上,不能满足两线制仪表4~20mA的要求。而这种两线制、低功耗的仪表是许多过程工业所需要的。基于DSP的信号处理系统无法满足这些要求。虽然,国内一些学者采用低功耗单片机开发低功耗、两线制蒸汽流量计,如:文献[4]用PIC单片机开发了两线制蒸汽流量计,文献[5]用MSP430单片机设计了低功耗蒸汽流量计,但是,他们仍然采用的是常规的信号处理模式,即放大、整形和计数,所以,无法有效地从噪声中提取蒸汽信号。若采用低功耗单片机去实现数字信号处理算法,也无法做到低功耗和两线制,因为用单片机实现数字信号处理算法,单片机必须总是全速运行,任何低功耗工作模式无法使用。例如,文献[6]采用小波变换消除信号中的噪声,用MSP430单片机去实现系统,但是,测试结果表明,无法做到低功耗和两线制,因为仪表本身的工作电流超过4mA。国外的一些公司为蒸汽流量计一些信号处理模块设计了专用的集成电路(ASIC),用硬件的方式来对蒸汽信号进行处理,以便实现低功耗和实时工作。
采取用低功耗单片机MSP430F1611做少点数FFTr结合硬件模拟滤波器组的信号处理方式,来实现蒸汽信号的处理,再设计有效的电流管理和电流输出模块,既能从噪声中提取蒸汽信号,保证现场测量,扩展量程比,又能做到低功耗和两线制工作。
1硬件设计
1.1总体方案
设计的目标是既采用数字信号处理方法,又要保证仪表是低功耗工作,所以,采用低功耗单片机进行少点数快速傅立叶变换(FFT),实现周期图谱分析,确定蒸汽信号的频率值;设计一组硬件带通滤波器,其通带覆盖蒸汽信号所在的频带,根据谱分析结果来选择具体的带通滤波器,进行滤波,限度地消除各种谐波和现场噪声对测量的影响,提高测量。采用数字电位器和运算放大器组成程控放大器,通过峰值检测确定蒸汽信号的幅值,调整程控放大器的放大倍数,使信号的幅值达到范围,适应大流量和小流量的测量的需要,扩展量程比。选用低功耗的单片机芯片,并设计与之配套的输出电路和电源管理电路,保证仪表工作电流小于4mA,输出电流为4~20mA,实现两线制工作。
1.2硬件框图
该系统的硬件框图如图1所示,包括压电传感器、差分电荷放大器、电压放大器、程控放大器、低通滤波器、电压跟随器、带通滤波器组、带通选择开关电路、峰值检测电路、整形电路、单片机、人机接口电路、4~20mA输出与电源管理电路、恒流源、温度传感器、压力传感器、差分放大器、16位模数转换器。
1.3工作过程
压电传感器输出的电荷信号经过差分电荷放大器转变为电压信号,由于幅值非常小,所以,再经过固定的电压放大器和程控放大器。放大后的信号经过低通滤波器,滤除信号中的高频干扰,然后分为2路。第1路信号由电压跟随器(缓冲器)输出,被单片机自带的ADC采样和转换,变成数字量。单片机对信号进行少点数的FFT,做周期图谱分析,得到信号的频率值,来选择带通滤波器组的通道。第2路信号送至带通滤波器组,进行滤波;由单片机的频谱分析结果来决定输出某路滤波后的信号。经过带通滤波器组的输出信号分为2路。第1路送至峰值检测电路;峰值检测电路将信号的峰值送至单片机ADC的输入端;单片机对信号的峰值进行采样和转换,并根据峰值来调整程控放大器的放大倍数,使信号的幅值达到范围;第2路送至由比较器组成的整形电路进行整形,整形后的信号送至单片机的定时器输入端,采用捕获方式,利用多周期等方法进行计数。单片机根据计数结果,将流量信息显示在LCD上,并通过自身的DAC转换,送至4~20rnA输出与电源管理电路,经过V/I转换成4~20mA电流信号输出。下面简要介绍其中的部分硬件电路。
1.4带通滤波器组
虽然蒸汽流量传感器信号经过了低通滤波器,一些高频信号被消除。但是,由于蒸汽信号频率的变化范围较宽,从0.5Hz~3.7kHz。在这个频带范围内,可能包含蒸汽流量信号频率、机械振动频率、流场扰动噪声频率和其它噪声频率。若将此信号直接进行整形和计数,由于各种噪声的影响,很容易造成整形电路的误触发,使测量结果出现较大的误差。
针对这个问题,设计一组模拟带通滤波器,包括1个低通滤波器和7个带通滤波器,这7个带通滤波器的电路结构相同、参数不同,从而通带互不相同,但是相互连接,覆盖蒸汽流量计的频带范围,并且相邻通带间有一定的重叠。由1个高通滤波器和1个低通滤波器来实现1个带通滤波器,这样比单运放带通滤波器的幅频特性好,即这样形成的通带部分的幅频特性比较平坦,截止区域衰减得更快。考虑到整个蒸汽信号的频率范围在0.5~3700Hz的范围,若用1组带通滤波器组去滤波,效果不佳,所以,针对不同情况设计了若干组滤波器组,这样既具有一定的通用性和互换性,又保证有较好的滤波效果。例如,针对15~200mm口径的液体流量测量设计1组带通滤波器组的参数,其工作频率覆盖1~500Hz;针对25—150mm口径的气体流量测量设计1组带通滤波器的参数,其工作频率覆盖19~2300Hz。具体选择哪个滤波器的输出信号进行整形和计数,由单片机对蒸汽信号进行频谱分析的结果来决定。即单片机对采集到的蒸汽传感器信号进行周期图谱分析,确定蒸汽信号的范围;据此,确定用哪个带通滤波器滤波后的信号进行整形和计数,这样可以地消除各种噪声对蒸汽信号的影响,避免误触发,保证计数的。
1.5电源管理与电流输出模块
4~20mA输出和电源管理模块由4~20mA电流变送器XTR115、DC/DC、3个LDO和磁珠BEAD组成。24V直流电压先经过DC/DC由24V变为3.3V,经过LDO变成3V电压,作为数字部分的电源,3.3V再通过另1路LDO变换成3V电压,作为模拟电路部分的电源,模拟地和数字地之间通过磁珠连接,这样数字部分跟模拟部分电平匹配,而且单片机在3V电压下消耗电流更小。同时,由24V直流电压经过LDO变为7V,供温压补偿部分恒流源工作。系统消耗的电流由XTR115检测并调整输出电流。由于系统电源跟输入之间没有进行隔离,将表壳(大地)和系统地(模拟地、数字地)之问进行隔离来满足绝缘的要求(即浮地)。
2软件研制
2.1总体框图
该系统软件总体框图如图2所示,由主监控程序模块、保护模块、中断模块、初始化模块、程控放大器调整模块、计算模块、电流输出模块、人机接口模块组成。其中,初始化模块包括LCD初始化、流体介质和仪表口径初始化、峰值检测模块初始化、4~20mA电流输出模块初始化、温度和压力补偿模块初始化、掉电保护模块初始化、流量计算模块初始化、带通滤波器选择初始化。

2.2主监控程序流程图
图2中的主监控程序模块是整个软件系统的总调度程序,调用各个模块中的子程序,实现本系统的所要求的功能。主监控程序的流程如图3所示。它是一个循环程序,系统一上电,主监控程序自动运行,进入不断查询标志和进行相应处理的循环中。
基本过程为:系统上电后,立即进行初始化;初始化后,首先查询Fn、计算标志位是否置位,若置位,则调用FFT计算模块,对经过电荷放大、电压放大、低通滤波和电压跟随后的蒸汽传感器信号做FFT计算、频谱分析和校正,估计出能量所在的频率,根据这个频率来选择带通滤波器,并设置峰值检测时间的间隔,处理完成后清除标志位;然后,查询发触发捕获信号的标志位是否置位。

2.3脉冲计数
采用多周期等测量方法进行脉冲计数。设置定时器A(TA)为蒸汽信号脉冲计数器,设置定时器B(TB)为填充脉冲计数器,让TA的PWM模块(TA1)定时发触发捕获信号(定时时问由测量频率的下限而定),TA和TB根据相邻2次触发捕获信号之间的时间间隔,分别捕获蒸汽信号脉冲的个数和填充脉冲个数,根据TA和TB捕获得到的脉冲数以及TB的工作时钟频率计算出蒸汽信号的频率,如图4所示。定时器A的工作时钟由外部提供,外部脉冲每增加1次,定时器A计数器计数值就会增加1次,即定时器A是用来对外部脉冲进行计数的。定时器B用来产生时间间隔,每次定时时间到就发触发捕获信号。根据这个捕获信号,定时器A的1个PWM单元(TA1)就产生上升沿,定时器A的捕获单元(TA2)和定时器B捕获单元(TB2)根据这个上升沿,将其各自的计数器值捕获进来,计算出相邻两次信号的TA的计数差值Ⅳ和TB的计数差值N,则:
式中:F为定时器B的工作时钟频率;F为定时器A的工作时钟频率,即被测蒸汽流量信号的频率。

2.4频率估算
对信号进行采样,计算频率值,再选择带通滤波器组的通道,接着设置峰值采样时间间隔,即具体选定带通滤波器组中的一个带通滤波器,设置峰值采样过程充放电时间。该系统采用少点数FFTr估计蒸汽信号的频率。首先对采样得到的信号序列进行零均值处理,消除直流分量;然后,对序列进行FFT运算。为了克服单片机的运算速度不够快和内存资源有限的问题,我们采取了以下的技术措施,在单片机上实时实现了FFrI1运算,并保证了算法的:
(1)采用汇编语言编制FFT程序,运算速度快;
(2)数据统一使用Q13定点数表示,即用16位来表示1个数据,位(左边的第1位)是符号位,剩下的15位表示数据的大小,其中,高2位(左边的第2位和第3位)用来表示数据中的整数部分,在计算中作为保护位,13位(右边的13位)表示数据中的小数部分,采样来的数据先放在低12位,然后,左移1位,这样可以减少内存占用量;(3)采用定点数计算,即在乘法和加法计算过程中使用的数据其小数点都是固定的,以提高计算速度;(4)在FFT运算过程中,每经过碟形因子的计算,其结果可能会扩大3倍,随着计算级数的增加,用Q13格式表示的数据肯定会发生溢出,所以,在计算过程中必须对数据进行移位(右移),以防止数据的溢出,但是,在实际计算中,并非每级计算的结果都会溢出,若此时对结果进行移位,就会降低F丌计算结果的,因为移位使数据变小,即减少了小数部分的有效位,为此,先判断这计算结果是否大于1,当大于1时,才移位,小于1就不移位。由FFT运算结果计算出信号的功率谱,按照能量占优原则,根据功率谱峰值,估计出蒸汽流量信号的频率;,利用重t2"校正法进行频谱校正,提高蒸汽流量信号频率测量的。根据蒸汽流量信号的频率,由单片机控制多路选择电路,选择对应于当前蒸汽流量信号频率的带通滤波器,将此带通滤波器与后面的整形电路相连。根据蒸汽信号频率设置峰值采样过程中的充放电时间间隔。
2.5带通滤波器选择
设计的1个低通滤波器和7个带通滤波器的通频带将整个要处理的蒸汽信号频率覆盖,同时,相邻滤波器的通带之间有重叠部分,以避免当蒸汽信号频率处于相邻通带边缘时,引起带通滤波器的频繁切换,即避免频繁地变换带通滤波器。当频率超出上次选择的带通滤波器的频率范围时,就查找覆盖此频率的滤波器,选出合适的滤波器。具体选择过程为:当频率没有超过当前滤波器通带的上下,就仍然选择当前的滤波器;当频率正好落在2个滤波器通带的交叉带中时,将依据这2个滤波器通带的交叉点来进行选择,即把这2个滤波器幅频特性的相交点作为1个分界线:当频率低于交叉点时,就选择低通带的滤波器,高于交叉点就选择高通带的滤波器。

3测试与实验
当系统研制完成后,我们在实验室进行了系统功耗和电流输出的测试、脉冲计数和抗谐波干扰的测试、少点数FFT功率谱计算的测试、温度和压力补偿测试,在重庆耐德工业股份有限公司进行水流量和气流量标定实验,以考核系统的性能。由于篇幅所限,下面仅介绍部分测试和实验结果。
3.1电流输出和功耗测试
将该系统与40mm口径的仪表相匹配,组成蒸汽流量计,进行实际流量标定,或者用信号发生器输入标准的频率值。将日本YOKOGAWA公司CAIO0型小型通用校验仪串接在该系统的电流输出线上,测试系统的输出电流。注意,此时系统加14V电压(这比通常的24V电压严格,是考虑到负载上的压降)。
首先,设定理论输出电流值等于或者大于4.000mA,考核电流输出的,即流量对应于4mA,流量对应于20mA。测试结果表明,相对误差小于0.19%。其次,设为0.000mA,即将该系统DA控制电流输出的模块断开,考核系统自身消耗电流值,测试结果为3.775mA,小于4mA。这两项指标均满足仪表的要求。
3.2FFT计算测试
因为要用FFT计算的结果来确定选择哪个带通滤波器,所以,要考核其计算。由于FFT运算的误差发生在非整周期采样时,所以,选择这些误差点来进行测试。由于泄漏误差,信号基频为:

3.3实际流量测试
将系统与重庆耐德工业股份有限公司40mm口径的蒸汽仪表相匹配,采用气体钟罩方式进行标定,读取系统的频率值,如表1所示。可见,量程比达到20.6:1。
将系统与重庆耐德工业股份有限公司80mm口径的蒸汽仪表相匹配,采用标准表法进行气体流量标定,读取系统的频率值,如表2所示。其中的标准表是为0.2%的涡轮流量计。可见,量程比达到18.5:1。
表140mm口径数字蒸汽流量计气体标定实验数据

表280mm口径数字蒸汽流量计气体标定实验数据

4结束语
提出少点数功率谱分析与模拟带通滤波器组相结合的方式,并在硬件和软件方面采取了一些有效措施,用单片机研制成功两线制数字蒸汽流量计,既扩展量程比、保证现场测量,又实现低功耗工作,克服了目前基于DSP的数字蒸汽流量计无法低功耗工作,而基于MCU的低功耗蒸汽流量计又无法进行数字信号处理、性能不佳的问题。