基于FPGA的痕量气体检测系统设计
2024-01-23解佳洛胡芳仁尤敦喜戴忠玉
解佳洛,胡芳仁,尤敦喜,戴忠玉
(南京邮电大学电子与光学工程、柔性电子(未来技术)学院,江苏南京 210003)
0 引言
痕量气体检测是指对气体中极微量的化学物质进行定量分析的一种技术。如氮氧化合物、碳氢化合物、硫化物等,其含量往往非常低,只有ppb(1 ppb=10-9)甚至更低的水平[1]。这些化学物质参与生物地球化学的循环,对环境产生了重大破坏,如酸雨、温室效应、臭氧层破坏等。因此痕量气体检测技术在监测和控制环境污染、开展医学检测和诊断、保障食品安全等方面具有重要意义。
美国Picarro公司研发的Picarro G-2401型分析仪采用腔衰荡光谱技术(CRDS),具有超高灵敏度的同时还能兼顾检测范围[2]。但由于该设备制造成本昂贵,需要精细的光学元件和复杂的实验设备。国内在痕量气体检测领域主要采用激光吸收光谱法、气相色谱法、红外吸收光谱技术。这些技术成本较低,具有较高的灵敏度、精度。比较有代表性的国产仪器有捷德 LD-5H、环球精密 GC-2014C[3]。近年来,国内痕量气体检测仪器需要进一步提高气体体积分数检测精度。
目前国内主流痕量气体检测仪器主控芯片通常采用微处理器或微控制器,如ARM、STM32、PIC等。为了进一步提升气体痕量检测的实时性、精度、可靠性和灵活性,本文设计了一种基于FPGA的高灵敏度的痕量气体检测系统。系统采用腔衰荡光谱技术原理(CRDS),使用具有高速、丰富资源且功耗较低的K7325T作为主控芯片,信号采集传输使用14 位A/D 转换芯片和千兆网口芯片。实现了对激光器的精确稳频,稳频精度能达到6 MHz,而一般采用CPU实现稳频只能达到20 MHz[4]。同时本系统能实现衰荡腔衰荡信号的高速采集,最终通过上位机拟合得到当前气体体积分数,通过标准差计算实验结果表明:5 min平均数据测量精度小于40 ppb,达到国外PicarroG2301的技术指标。
1 系统设计方案
本系统设计主要基于腔衰荡光谱技术,通过光对气体分子的吸收和散射产生损耗从而实现高灵敏光谱监测。激光脉冲在衰荡腔中的2块高反镜之间来回弹射,从高反镜中透射出的激光强度因腔内待测气体的吸收在时间上呈现指数衰减。根据Beer-Lambert定律,利用无吸收条件下空腔的衰荡时间τ0和有吸收条件下的时间计算出分子吸收率α(v),由吸收率α和吸收截面σ计算得到待测气体分子数密度,最终根据道尔顿分压定律得出体积分数,主要公式如下:
(1)
(2)
(3)
(4)
式中:τ为有吸收条件衰荡时间;c为光速;R为反射率;L为腔长;τ0为无吸收条件衰荡时间;α(v)为分子吸收率,L/g·cm-1;X为气体体积分数,ppm(1 ppm=10-6);p、T为测量压力和温度;kb为玻尔兹曼常数;S为谱线强度(hitran数据库直接给出);φ为分子吸收的线性函数(高斯函数和洛伦兹函数卷积得到)。
根据上述光腔衰荡光谱原理,设计的系统整体框图如图1所示,主要由光学模块、信号处理模块、数据存储传输模块、激光稳频模块组成。前端光学模块包括激光器、衰荡腔、标准具等光学器件,其主要功能是通过调节激光器的电流和温度,使固定波长的激光到达衰荡腔,并通过切断激光输入获得衰荡信号。采集模块和稳频控制模块是由以FPGA为核心的硬件开发板构成。通过FPGA数字逻辑设计,衰荡信号传入信号处理模块,经AD9245转换后,传入数据存储传输模块中的FIFO中,再通过网口将衰荡信号高速传输至上位机;光强信号经AD7989转换后传输到激光稳频模块,得到需要的调谐电流数字信号,最终通过DAC8830进行数模转换,反馈调节激光器的电流值,使其达到稳频效果。
图1 系统整体框图
2 系统功能模块设计
2.1 光学模块
光学模块主要由激光器、衰荡腔、F-P标准具组成,如图2所示。系统选用中心波长(1 572.3±1)nm DFB激光器作为测试光源,该激光器具有体积小、性能稳定、噪声低、寿命长等优势。其中衰荡腔和标准具均是由2块高反镜组成的密闭腔体。
图2 光学模块设计
通过调制电流和温度得到与待测气体的吸收峰波长匹配的激光。该激光经过分束器分成两束,一束通过光纤经隔离器、声光调制器(AOM)、准直镜、分束器和模式匹配透镜进入光腔。激光在腔内来回反射使光程超过10 km。衰荡腔腔长L约为300 mm,高反镜反射率R为99.999 99%,根据公式计算出衰荡时间τ,得到基于时间的衰荡光信号。光信号经光腔后端的光电二极管(PD2)转换成电信号并分成两路。一路电信号传入AOM控制激光信号的关断。当衰荡腔中透射出的激光最大功率达到关断阈值时,AOM可以快速切断激光输入,此时光腔进入衰荡期。另一路电信号作为衰荡信号进入主控板,再由网口上传至上位机计算当前气体体积分数。此外激光与衰荡腔需要进行模式匹配,使得激光的入射功率能够达到AOM的关断阈值。激光通过模式匹配透镜大幅提高模式匹配的效率,为系统连续获得衰荡信号提供了可靠性。为了保证系统的安全性,利用隔离器防止后续器件回光对激光器造成损伤或干扰。分束器分离的另一束激光被标准具后的光电二极管(PD1)探测并转换为电信号。该电信号经主控板上的AD转换作为稳频模块的数字输入信号。
由于DFB激光器一般输出功率<20 mW,系统开启后,从衰荡腔中透射出的衰荡光信号最大功率达不到AOM关断阈值,无法得到衰荡信号。只有在激光与衰荡光腔匹配的情况下,激光透过衰荡腔的功率才会提升,达到AOM关断阈值。通过促进激光基模与腔共振实现模式匹配,同时抑制高阶横模,获得最大的激光透过功率。为减小偏差,需要在衰荡腔末端设置一个可以细微调节腔长的压电陶瓷(PZT),通过微调PZT的电压使模式匹配达到最优。
此外光腔内部配有压力传感器、温度传感器和加热片。通过这些器件和温压控制电路可以精确控制光腔内被测气体的温度和压力,从而保证高精度测量气体体积分数。
2.2 激光稳频模块
激光器与光腔的匹配结果很大程度上影响了系统的测量灵敏度,理想情况下,任意一次的衰荡事件是中心频率处的激光与腔纵模匹配,高阶模被完全抑制[5]。在激光器进行纵模匹配的过程中,激光器由于本身存在的机械振动、受热等物理因素,长时间工作下会导致出光的频率产生一定的漂移,因此无法使激光稳定工作在固定频率,从而使得与衰荡腔的匹配效率下降。为了获得最佳灵敏度,以法布里-珀罗(Fabry-Perot,F-P)腔标定气体吸收峰激光频率,利用FPGA高速处理数据的优势,通过判断实际透过率与设置透过率的误差,采用PID算法和扫频的方式对漂移频率进行补偿,最终将激光频率稳定在F-P腔标定频率[6]。
本系统通过F-P标准具对不同波长光透过率的变化来标定实际波长。控制F-P标准具温度,使得激光波长中心值稳定可控。当控制温度为25 ℃,电流为130 mA,精密波长计测得激光波长为1572.300 nm。本文FPGA设计将原始光强与透过光强作为除法器IP输入信号测得的实际透过率为165 000。将165 000设定为初始透过率,作为稳频的参考值。由于实际透过率随着激光频率漂移会发生变化,该变化量即为实际透过率与设定透过率之间的误差。
为实现激光器的精确稳频,系统采用数字增量式PID算法对激光器电流进行调谐[7]。如式(5)、式(6)所示:
uk=uk-1+Δuk
(5)
Δuk=uk-uk-1
=Kp(ek-ek-1)+Kiek+Kd(ek-2ek-1+ek-2)
(6)
式中:ek为误差;uk为输出调谐电流;uk-1为系统中前次的PID输出调谐电流;Δuk为两次相邻调谐电流差值;Kp、Ki、Kd分别为比例系数、积分系数、微分系数。
稳频开始后,通过计算当前透过率与设定透过率的差值得到初始ek,第1次输出调谐电流uk=Δuk,uk作为调谐电流对激光器进行初次稳频。触发信号启动后,系统检测ek,稳频系统持续输出uk,实现高精度稳频。为保证稳频系统的真实性,实验中通过精密波长计监测通过标准具的激光波长。
2.3 数据存储传输模块
本设计采用UDP协议实现衰荡信号的传输。 这种通信方式在通过以太网发送和接收数据时,需要对数据段进行层级封装操作。以太网传输数据包数据帧格式如图3所示。在应用层,获得用户数据。在数据传输层,对用户数据封装UDP首部作为下一层的数据段。在IP层,对数据段同样封装IP首部作为MAC层数据段。数据经过每一层的首部信息累加,最终以标准的以太网帧格式将数据打包完成[8]。通信开始后,主机接收从机发送的以太网数据帧,封装好的帧数据从物理层链路层进行传输,从下而上,主机对封装好的数据逐层解析,检验每一层是否匹配当前的首部数据,如果数据解析成功,主机最终获得从机最初封装前的用户数据[9]。
图3 以太网UDP传输数据包格式
数据存储传输模块分为硬件和软件设计。为实现以太网的千兆通信,硬件选择支持千兆传输的RTL8211EG-VB网卡芯片,采用FPGA对网卡芯片的GTX端口提供125 MHz的时钟,使其能正常工作在GMII模式下。在通过FPGA对衰荡信号传输之前,需要对衰荡信号采样、量化、编码得到FPGA输入端的数字信号。经计算得出腔衰荡时间大约十几μs,衰荡光信号强度最大9 600,根据采样定理选择10 MHz采样率、14位的AD9245作为模数转换芯片。
软件上,通过ISE对以太网存储传输模块进行数字逻辑设计。以太网存储传输模块包含传输控制模块、UDP传输模块。数字逻辑设计如图4所示。在传输控制模块中,由于以太网芯片在GMII模式下一次传输数据位宽是8 bit,为方便衰荡数据的传输以及上位机的解析,将14位采集到的数字信号存入16位寄存器,对其高两位进行编码,高两位代表的是本次采集编号,低14位代表采集的衰荡信号。由于AD采集与以太网传输属于跨时钟操作,采用例化FIFO的方式对16位数据进行缓存。腔衰荡时间由腔衰荡信号拟合计算得到,为此需要保证足够多的衰荡信号采集点数,在本设计中,采集4 096个点为系统检测灵敏度提供良好的可靠性。为保证衰荡曲线传输的完整性与准确性,在FIFO的设置界面中对Program Flag功能设置,使其在存满8 000字节的数据时,拉高prog_full信号。prog_full信号作为数据发送的使能信号标志一条衰荡曲线存储完毕可以发送。此外,在实际传输数据的过程中,为保证以太网传输的可行性,需打开网卡设置中的巨型帧选项,从而保证大于1522字节的数据能正常通过UDP协议传输。
图4 UDP数字逻辑设计
UDP传输模块主要包括发送模块、CRC校验模块、接收模块。发送模块通过状态机对FIFO读出的数据进行封装发送。状态机未开始时,首先对7字节的前导码、1字节的开始符和14字节的以太网帧头进行提前寄存。其中以太网帧头包括目的MAC地址、源MAC地址、IP类型。通过检测FIFO使能信号作为状态机开始标志,状态机分为以下6个状态依次进行,分别为Start(开始)、Make(计算校验和)、Sendmac(发送mac地址)、Sendheader(发送首部)、Senddata(发送数据)、Sendcrc(发送CRC校验)。通信开始后,在Start状态,对IP首部和UDP首部共28字节的数据进行寄存,其中包括包头长度、IP包总长度、包序号、校验和等数据。进入Make状态,通过对IP首部数据的解析计算,得到校验和并进行赋值。依次进入Sendmac、Sendheader状态将寄存的数据依次传输到发送端口,待发送完毕后,此时已经满足以太网传输帧格式,进入Senddata状态,从低字节开始发送,每发送一字节数据则跳转至Sendcrc状态进行CRC校验,校验成功的数据将作为数字信号通过网卡芯片发送至上位机。直至8000字节的衰荡信号发送完毕。通过对FIFO的发送控制,可以不断完成衰荡信号的存储传输,上位机持续获得衰荡曲线,计算当前气体体积分数。接收模块是发送模块的逆过程,对接收的数据逐层解析,核对前导码、以太网帧头、源地址、目的MAC地址是否一致,无误后则继续接收IP地址以及UDP数据,所有数据接收无误,完成数据的接收。
3 系统实现与测试结果
3.1 系统实现
文中制作了基于FPGA的系统硬件电路、光学衰荡腔和标准具,并搭建完成痕量气体检测系统,如图5所示。衰荡腔以及标准具如图6、图7所示。
图5 痕量气体检测系统
图6 衰荡腔
图7 标准具
3.2 测试结果
稳频采用高精度波长计进行监测。等待控温系统稳定后,采用上位机输入初始稳频点,发送开启稳频、搜索工作点、多点扫描指令,通过波长计进行观测,波长稳定在(1 572.303±0.001)nm,如图8所示。同时采用ISE中的在线调试工具抓取当前透过率与设定透过率以及Error信号,如图9所示。
图8 激光稳频
图9 实际透过率与设定透过率
稳频开始后,观察到Error信号偏差绝对值能在±10以内,说明稳频系统具有良好的稳定性。
在测试以太网传输衰荡信号之前,为保证能正确识别以太网传输帧格式中的首部信息,需对计算机的IP地址进行设置。通过命令指示符将计算机与采集板的静态mac地址进行绑定,同时在设备管理器中设置网卡为巨型帧、1G全双工的工作模式。准备工作完成后,将程序烧录至采集板,为保证测试准确性,同时打开网口调试助手与Wireshark监测信号的接收情况,数据传输结果如图10、图11所示。
系统最终的测试在常温干燥的环境下进行,避免了周围环境对实验数据的影响。采用约300 ppm标准浓度的二氧化碳气瓶作为测试对象,并进行10 min以上的测试,通过上位机拟合计算得到实验结果,如图12所示。系统测得5 s数据测量精度小于70 ppb,5 min平均数据精度小于40 ppb,接近PicarroG2301的性能指标。同时对系统稳定性进行测试,在实际空气中通过与PicarroG2301进行24 h的对比测试,如图13所示,其中本系统标准差约为0.075 09,PicarroG2301标准差为0.053 42,两系统标准差较小且接近,说明本系统的稳定性以及准确性较好[10]。以上测试表明,设计的系统能够满足国家痕量气体检测的要求。
4 结束语
本文设计了以FPGA为核心的痕量气体检测系统。采用FPGA数字设计,将激光频率漂移的影响降至最低,同时采用以太网传输衰荡信号,提高了数据量传输速率的同时确保CRDS检测痕量气体的灵敏度。具体测试结果表明:该系统具有可靠性,稳定性强等特点。因此,该系统可作为痕量气体检测系统应用。
图10 网口调试助手
图11 Wireshark在线抓包
图12 二氧化碳体积分数
图13 样机与picarro的对比测试