夏 明,魏东兴,姜 涛
(1.大连理工大学 信息与通信工程学院,辽宁 大连116024;2.大连欧瑞自动化有限公司,辽宁 大连116023)
在工业和民用领域中,如电力、机械制造、炼油、化工、轻工及供热供暖等行业需要采用以燃油、燃气或煤炭为燃料的热能设备[1]。当此类设备处于点火不成功或意外熄灭状态时,若未及时停止投送燃料,再次点火时,可能引起爆炸,造成重大安全生产事故。因此,对热能设备燃烧状态的有效检测至关重要。燃烧状态的检测手段以火焰检测为主,目前的火焰检测方式主要有:温度检测、图像检测、红外检测、可见光检测及紫外线检测等[2]。其中,温度检测和图像检测分别基于温度传感器和图像传感器,红外、可见光及紫外检测则采用光电器件作为敏感元件,与温度和图像传感器相比,光电器件以其响应速度快,硬件电路简单,成本低,容易实现,体积小,在火焰检测系统中得到了广泛应用。
基于光电器件检测火焰的参量主要有火焰强度和火焰频率,分别对应于火焰信号的“直流分量”和“交流分量”[3]。火焰强度代表了火焰的亮度信息,火焰强度值大于设定阈值,作为”“有火”的必要条件之一,该条件可以滤除强度相对恒定的背景光干扰,提高可靠性;而火焰频率反映了火焰的脉动变化特征,当火焰频率大于设定阈值作为“有火”必要条件之二,当上述两个条件都满足时,则表示“有火”。强度信息可以用火焰信号的统计平均值表示,频率信息则需要对火焰信号进行频域分析。
本系统前端采用光电管作为火焰信号检测敏感元件,使用多级放大器结合多路ADC 通道,用成本低廉、可靠性高的单片机(micro controller unit,MCU)实现自适应增益调整和信号处理,并完成了512 点的定点快速傅里叶变换(fast Fourier transform,FFT)运算,系统软件设计采用汇编语言完成,以提高代码的执行效率和相关硬件逻辑的可靠控制及系统资源的自主分配,保证了运算的实时性。
火焰检测系统的信号检测部分由信号采集单元和处理单元构成,如图1 所示。信号采集单元将光电器件输出的火焰信号通过有源带限(低通)滤波、多级信号放大、多通道ADC,多通道ADC 是由MCU 内部自带的多路ADC 单元实现,由MCU 对ADC 结果进行相应的处理,其中,多级信号放大结合多通道ADC 实现自适应增益调整功能。
图1 火焰检测系统框图Fig 1 Block diagram of flame detection system
研究表明:各种火焰闪烁频率范围处于2 ~600 Hz[4]或100 Hz ~1 kHz[5]之间。通过对现场实测数据的分析,热能设备的火焰频率分量主要集中于200 Hz 内,本系统的信号频率上限fH=200 Hz,奈奎斯特采样频率为2fH=400 Hz。因此,采样前的防混叠滤波器的截止频率为fH,该滤波器可使用阻容器件结合运算放大器构成的有源带限滤波器实现,除了防止采样混叠外,还可以滤除高频干扰噪声。
自适应增益调整的目的是为了增大火焰检测的输入动态范围,即小信号能获得足够的灵敏度,输入大信号时系统不会饱和,以适应各种火焰信号检测应用场合。自适应增益调整电路由多级放大器和多通道ADC 组成,各级放大器的输出分别接到一个ADC 通道上。
图1 中,第一级放大器增益A1和ADC1对应于大信号输入的数据采集,而第M 级放大器增益AM和ADCM对应于小信号的输入采集,MCU 根据输入信号的大小动态切换ADC 通道,实现增益的自适应调整。增益动态调整如式(1)所示
式中 gJ为前J 级放大器的总增益;Ai为第i 级放大器的增益;J 为ADC 值sin满足范围条件对应的放大器级数,即
式中 smax和smin分别为ADC 通道切换的上下限。
根据式(2)可以计算出M 级放大器的动态范围为
设ADC 的输入最小值为smin,最大值为smax,根据式(3)可以算出ADC 的动态范围为
则自适应增益调整电路总动态范围为
火焰检测系统对火焰信号的处理流程如图2 所示。
图2 火焰信号的处理流程Fig 2 Flow chart of flame signal processing
信号处理主要完成三个功能:自适应增益调整、火焰信号参量的计算和火焰状态的判决。其中,自适应增益调整根据式(1)实现,火焰状态可通过计算ADC 采样信号统计平均值和频率分量获得。判决规则为火焰强度I 和火焰频率F 均大于设定的阈值,认为火焰信号正常,即,“有火”。
采样窗口的时长决定了采样频率分辨率,窗口时长与分辨率呈反比,本系统的频率分辨率设定为1 Hz,则窗口长度为1 s,采样频率应大于奈奎斯特采样频率,故采样频率fs=512 Hz,即在1 s 内采样点数为512 个,以方便FFT 计算。
设ADC 的输入值为s(n),n=0,1,2,…,N-1,N 为采样点数。火焰强度就是这N 个AD 值的均值,即
当前的火焰强度与设置的火焰强度阈值的比较结果作为当前火焰状态判决条件之一。
计算火焰频率的过程主要是通过对信号频率分量进行统计实现的,即对信号进行傅里叶变换,可用FFT 实现。在本系统中,考虑到MCU 的内部资源和运算速度,FFT 计算过程采用定点运算实现,因为定点数运算可以有效降低运算过程对RAM 存贮器容量的要求,同时,定点运算的速度远高于浮点运算。所以,必须对采样信号进行预处理。
2.3.1 去除直流分量
信号中的直流分量占有很大比例,为了防止采用定点运算的FFT 计算结果在零频率值溢出,需要将直流分量去除,对余下的交流分量进行FFT 运算,可以有效减小运算中间结果的数值,保证计算过程不出现数值溢出的情况。
2.3.2 旋转因子的定点化和存储
由FFT 运算过程中需要计算旋转因子,即
如果实时的计算旋转因子,会消耗RAM 空间和计算时间。因此,预先将旋转因子中的实部cos(2πk/N)和虚部sin(2πk/N)计算出来,并在允许的精度范围内用定点数表示,这里保留16 位(2 字节)有效位,如式(8)和式(9)所示
与512 个采样点相对应,旋转因子总共需要占用2048 个字节的空间,该空间可以定义在程序存贮器(ROM)中作为一个查找表(look up table,LUT),节省了MCU 的RAM 空间开销。进行FFT 计算时,直接通过LUT 获得旋转因子的实部和虚部,简化了计算过程,提高了计算速度。
2.3.3 码位倒置
为了使FFT 运算结果依正序输出,需要将FFT 要计算数据进行码位倒置。将ADC 值s(n)的序号n 用9 位二进制数表示,对应与512 个采样点,对这些二进制数进行位顺序反转,即可得到新序号,例如:(b0b1b2b3b4b5b6b7b8)变换为(b8b7b6b5b4b3b2b1b0)。倒置后的序号存放到ROM 中一个长度为1 024 个字节的LUT 中,在FFT 运算过程中,可以通过查表将AD 值按照该LUT 中的序号排好,实现火焰信号数据顺序的倒序,节省计算时间。
2.3.4 FFT 运算
FFT 运算主要是计算蝶形运算单元,第m 级蝶形单元如式(10)所示[6]
式中 k=0,1,2,…,2m-1。
N(2L)个点的FFT 共有L 级蝶形,在每一级的蝶形图当中共有2L-1个旋转因子,并且每一级共有N/2L个蝶形组。每个蝶形组中根据每一个旋转因子都会进行一次蝶形运算,因此,每一级的蝶形运算的个数共有2L-1×N/2L个,即N/2 个蝶形运算。
FFT 运算的基本思想是利用三层循环来完成的[7]:第一层循环是对蝶形图级数L 的控制;第二层循环是根据第一层循环提供的级数来对旋转因子个数2L-1进行控制;第三层循环是根据第二层循环提供的每一个旋转因子进行一次N/2L个蝶形运算,第二层循环共2L-1次,因此,每一级的蝶形运算的个数为N/2。
在计算过程中,每进行一次蝶形结点与旋转因子相乘后,都要对其结果右移15 次,如式(11)所示
式中 q 为参与本次蝶形运算的结点序号。经过三层循环的计算后,完成FFT 计算。
2.3.5 获得火焰频率
FFT 的运算结果是N 个复数的集合,其中每个复数对应一个频率点,第n 个频率点的频率为
火焰频率的计算是对FFT 结果中每个频点进行求模运算,即求信号频谱的幅频特性,然后从N 个幅值中找到最大值,其对应的频率就是当前火焰信号的频率,作为当前火焰状态判决条件之二。
本系统采用的核心器件是Atmel 公司的AVR 系列单片机中的ATmega64L 芯片,系统时钟频率为8 MHz,放大器级数M=6,采用两片四运放芯片LM2902 实现,ADC 通道M=6,每级放大器增益为Ai=2,ADC 通道切换阈值为smin=10,smax=1 023,根据式(5)可计算出系统的动态范围G=76 dB;采样时间为1 s;采样点数N=512;采样频率fs=512 Hz;ADC 采样值为10 位,用两个字节表示,共占用1 024 字节RAM 空间;每个定点FFT 计算结果采用4 字节表示,实部、虚部分别占2 字节,一共需要2 048 字节,总RAM 使用空间为3 000 字节左右。系统的火焰参量计算刷新时间为1 s。
为了验证火焰检测系统处理信号的结果,由火焰信号发生器提供100,150 Hz 的火焰测试信号,将MCU 进行FFT运算的结果数据取出,获得两个频率的频谱图,如图3 和图4所示。
图3 频率为100 Hz 的火焰信号的频谱分析Fig 3 Spectral analysis on flame signal on at frequency of 100 Hz
图4 频率为150 Hz 的火焰信号的频谱分析Fig 4 Spectral analysis on flame signal on at frequency of 150 Hz
由图3 和图4 可知,零频率分量较小,这是由于算法中消除了信号中的直流分量,有效避免了较大的直流分量在FFT 运算结果中产生溢出,两图中幅值最大的频率分别为100,150 Hz,与输入测试信号的频率相同,说明本系统的频率计算准确,并且图中最大频率分量对应的幅值约为2 400,8 000,均远小于定点运算极值65 535,说明了本系统满足定点FFT 运算的要求。
本系统信号处理过程中最耗时的是FFT 运算,因此,有必要对其运行时间进行测量。当FFT 计算开始时,将一个通用IO 口输出高电平,当计算结束时,输出低电平,形成一个脉冲,通过用示波器测量该脉冲的宽度,测得在MCU时钟为8 MHz 下的FFT 运算时间大约为300 ms,只占刷新时间的30%。
本文设计了一种基于8 位AVR 单片机的火焰检测系统的信号处理方法。硬件放大处理电路结合多路ADC 通道实现了自适应增益调整,并获得较大的输入动态范围;对火焰信号进行统计平均求取火焰强度;利用定点化和查表法简化了FFT 运算并计算出火焰频率,这样,通过前文所述的两个火焰判决条件就可以判断出当前的火焰状态;系统时钟为8 MHz 时,可在300 ms 内完成512 点FFT 运算,频率分辨率为1 Hz。本火焰检测系统可用于检测不同类型的火焰信号,具有动态范围大、实时性强、可靠性高的特点。
[1] 陈广华.锅炉的燃烧分析及火焰检测系统[J].北京交通大学学报,2008,29(4):82-84.
[2] 黄晓玲.紫外型火焰检测器的研制[J].仪器仪表学报,1999,20(5):523-525,550.
[3] 赵 芳,李玉刚.火电厂锅炉火焰检测技术研究[J].内蒙古石油化工,2011(2):113-114.
[4] 耿艳彪,姜万生,徐娅萍,等.DSP 锅炉火焰检测系统设计[J].机械与电子,2010(1):40-42.
[5] 任军丽,纪铁军,童子权,等.智能火焰检测器的研究[J].哈尔滨理工大学学报,2002,7(4):47-49,53.
[6] 胡广书.数字信号处理——理论、算法与实现{M].北京:清华大学出版社,2003.
[7] 肖宛昂.嵌入式系统中FFT 算法研究[J].单片机与嵌入式系统应用,2003(1):68-69.