邵丽萍 白忠臣 杨晓昆 张正平
摘 要: 工程测量、化学工业等领域对光谱分析数据的精度要求不断提高,通过QT Creator平台的多线程特点,针对从主线程、CCD采集线程、光谱仪采集线程和串口收发数据线程功能,设计了光谱信号采集系统,并根据光谱信号采集系统中电机运动的特点提出了一种边界定位算法。当PC上位机发送定位指令给下位机时,下位机依据边界定位算法控制电机运动,进而定位出所要测量的量子点阵列中各个点的位置坐标。该方法在保持系统微型化的同时,提高了定位的准确性,从而提高了系统检测数据的精度。
关键词: 光谱信号采集; 边界定位算法; 光谱分析; 线程设计; 电机控制; 系统微型化
中图分类号: TN911.7?34 文献标识码: A 文章编号: 1004?373X(2020)11?0051?04
Design and implementation of spectral signal acquisition system software
based on boundary location algorithm
SHAO Liping1, BAI Zhongchen2, YANG Xiaokun1, ZHANG Zhengping1
(1. College of Big Data and Information Engineering, Guizhou University, Guiyang 550025, China;
2. Guizhou Province Key Lab for Photoelectronic Technology and Application, Guizhou University, Guiyang 550025, China)
Abstract: In view of the continuously increased precision requirements of spectral analysis data in engineering measurement, chemical industry and other fields, a spectral signal acquisition system is designed according to the multi?thread characteristics of QT Creator platform and the functions of main thread, CCD acquisition thread, spectrometer acquisition thread and serial port data receiving and transmitting thread. A boundary location algorithm is proposed according to the characteristics of motor motion in the spectral signal acquisition system. When the upper computer of PC sends a positioning command to the lower computer, the latter controls the motor motion according to the boundary positioning algorithm, and then locates the position coordinates of each point under measurement in the quantum dot array. With the proposed algorithm, the positioning accuracy is improved while maintaining the miniaturization of the system. Therefore, the data detection accuracy of the system is improved.
Keywords: spectral signal acquisition; boundary location algorithm; spectral analysis; thread design; motor control; system miniaturization
0 引 言
隨着现代科学技术的不断进步,传统的光谱仪由于体积大、成本高等因素限制了其在工程上的应用,由此,光谱采集系统逐渐朝着微型化方向发展[1?2],微小型光谱仪控制系统的设计越来越受到重视[3?7],进而也对其数据的精确度提出了更高的要求。本文所设计的光谱信号采集系统在满足微型化的同时[8?12],通过使用本实验室不断改进的微型化移动平台,对系统的定位技术进行改进[13?15],提出了一种边界定位算法,进一步提高了系统的定位精确度。
1 系统总体结构
本实验所设计的系统由硬件组和软件组合作完成,本文的研究内容属于软件组。整个系统的软件设计采用跨平台的C++图形用户界面应用程序框架(QT Creator)进行编程实现,主要由CCD、计算机、光谱仪、下位机和LED光源五部分组成。计算机主要是用来处理算法、控制下位机、运行系统软件,计算机与下位机之间采用串口通信,通过下位机实现上位机对各个驱动器的控制,主要控制电机的运动,进而对量子点阵列进行定位。计算机上观察到的实时信息由CCD采集,通过串口通信进行传输,并以此监测量子点的定位是否准确。采集系统使用QE65000型号光谱仪与计算机之间通过USB接口进行传输,与传统的串口传输相比,使用USB接口传输数据更快速、稳定。LED光源的强弱是通过A/D转换电路来调节的。系统的总体结构如图1所示。
2 定位算法
2.1 结 构
PC上位机发送控制命令给STM32,下位机STM32执行相应的程序令电机运动,在电机运动的过程中产生反馈信号给STM32,再由下位机收集这些信息加以总结,最终反馈给上位机,并在界面中呈现出来。STM32具有功耗较低、实时性强、运行速度快等优点,因此,本文使用STM32作为下位机。移动平台用来放置待测样品,通过控制电机的运动,包括[x],[y]坐标方向电机的前后移动和[z]坐标方向电机的上下移动,进而定位待测样品的位置坐标。结构如图2所示。
2.2 边界定位算法设计
首先定义存储位置信息的坐标变量[x],[y],[z],上位机控制电机依次定位量子点阵列的左上角、左下角、右上角和右下角4个点的坐标,当4点坐标定位完成后通过边界定位算法计算出量子点阵列中剩余点的坐标,公式如下:
[X[i]=zsx+mist[x]] (1)
[X[i+5]=X[i]+(X[i+20]-X[i]4)+mist[x]] (2)
式中:[i]是目标点数;[X[i]]是第[i]个量子点的[x]坐标;[zsx]代表左上角的[x]坐标;mist[[x]]是定位时[x]坐标的误差,当mist[[x]]取0时,表示定位准确,不需要进行调整。通过式(1),式(2)计算出左侧、右侧边缘的量子点的[x]坐标,而阵列中间的量子点的[x]坐标则通过式(3)计算得到。
[X[i]=X[i-1]+(X[i+3]-X[i-1]4)+mist[x]] (3)
[y]坐标和[z]坐标的定位算法与[x]坐标一致,由此,就可定位出所有量子点的位置坐标。
边界定位算法步骤为:
1) 初始化电机的位置,即将[x],[y],[z]坐标清零;
2) 依次定位左上、左下、右上和右下角4个点的位置坐标;
3) 通过边界定位公式计算出阵列左侧和右侧边缘的量子点位置坐标;
4) 根据已定位的位置坐标计算剩余量子点的位置坐标;
5) 存储所有量子点的位置坐标。
定位流程图如图3所示。
3 系统软件设计
本实验主要使用Qt Creator平台实现整个系统的编程与设计。系统采用多线程设计,总共分为4个线程,分别为:主线程、串口收发数据线程、CCD采集线程和光谱仪采集线程。其中,主线程用来进行界面操作和控制其他线程状态;串口收发数据线程负责接收下位机传来的协议指令和发送上位机发送给下位机的协议指令,并对其做简要处理;CCD采集线程负责向CCD设备请求在定位量子点过程中需要获取的显微图像;光谱仪采集线程负责测试过程中向光谱仪请求量子点光谱信息。
3.1 主线程设计
主线程主要用于总控制人机交互界面的响应和其他线程的启动和停止。系统启动过程中,首先会启动串口线程和必要的信号、槽的连接,一些全局变量的初始化操作,以及其他子界面的构建,如系统配置界面、定位界面、试验界面等,并与指定的串口端口建立连接,如果连接成功,则会启动依赖于串口进行上、下位机通信的信号与槽函数的连接。主界面的组成结构如图4所示。
3.2 串口线程设计
串口线程设计用来专门接收和发送上位机与下位机之间的命令协议,在线程构建的过程中,程序会打开指定端口的串口,波特率为115 200 b/s,没有流控,两个停止位。线程一旦启动成功,就會一直查询串口是否接收到数据或者是否需要发送数据,如果需要发送数据到下位机,那么程序会检查此命令的长度,只有当长度符合要求时,才会执行发送指令;如果串口有下位机传来数据,那么在此线程内部会执行接收操作,并校验指令的帧头是否正确,只有当帧头正确时,才会继续执行接收操作。当一帧数据接收完成后,还会校验帧尾,只有当帧尾也正确时,才会将这一帧数据去掉帧头和帧尾后传送到主线程进行指令解析,否则,将接收到的数据全部丢弃。详细流程如图5所示。
3.3 CCD线程设计
程序首先检测系统中可用的CCD设备,如果存在满足要求的CCD设备,那么就对其进行初始化,并获取设备信息。当主进程请求定位、获取图像时,程序会向CCD设备发送请求指令,并对获取到的图像数据进行格式转换,转换为QImage格式数据,将其传送到主进程显示。详细流程如图6所示。
3.4 光谱仪线程设计
首先,程序获取系统中的可用光谱仪设备,如果存在,则对其执行打开和初始化操作,如果打开成功且主进程在请求光谱信息,那么,此进程就会向光谱仪发送请求光谱指令,并将获取到的光谱信息保存到指定的数据结构中,供主进程使用。详细流程如图7所示。
4 系统测试结果
将待测样品放置在移动平台后,打开采集系统软件,首先初始化系统的电机位置、电机移动速度和其他配置参数,然后对量子点阵列进行定位,在定位过程中通过CCD实时传输量子点团簇的显微图像,如图8a)所示。系统定位完成后,CCD线程将存储的定位信息发送到主线程,并在定位界面上显示位置坐标,如图8b)所示。当主线程要获取量子点的光谱信息时,光谱仪采集线程便向光谱仪请求光谱信息,显示于图形曲线显示界面,如图8c)所示。
5 结 论
本文使用QT Creator平台设计并实现了光谱信号采集系统,通过对主线程、串口收发数据线程、CCD采集线程和光谱仪采集线程的设计,大大提高了系统的运行速度。同时,根据边界定位算法对系统的定位技术进行改进,减少了系统的光耦数量,降低了硬件的复杂性,避免了因定位不准确产生的误差,从而提高了系统的检测精度。但系统的电机运动完全由上位机控制,不能从软件运行中及时发现电机的老化、松动等故障,应定期对系统进行维护和检修。
参考文献
[1] 周海彬,雷新卓,周望,等.基于Android系统的微型光谱仪总体设计[J].激光与光电子学进展,2016,53(6):298?304.
[2] 糜蓉,王永,熊显名.基于Android平台的微型光谱仪数据传输与显示研究[J].计算机测量与控制,2015,23(12):4259?4262.
[3] 刘兵,刘英,李灿,等.轻小型可见/近红外实时成像光谱仪的光学系统设计[J].光学学报,2015,36(6):321?328.
[4] LI Tengfei, LI Song, WANG Yapei, et al. Design of micro spectrometer for steel detecting [J]. Journal of applied optics, 2014, 35(6): 981?986.
[5] 杜晓晴,童广,胥庆,等.微小型红外光栅光谱仪光学系统的设计与优化[J].应用基础与工程科学学报,2009,17(1):85?91.
[6] 梁静秋,梁中翥,吕金光,等.空间调制微型傅里叶变换红外光谱仪研究[J].中国光学,2015(2):277?298.
[7] 胡方强,李晟.基于MEMS技术的便携式近红外光谱仪的研制[J].仪表技术,2012(12):21?23.
[8] 张宁,刘宇龙,吴嘉辉,等.微型光谱仪的CCD数据采集系统设计[J].红外与激光工程,2015(1):141?147.
[9] 刘宇龙.微型光谱采集系统设计[D].长春:长春理工大学,2014.
[10] 王毅磊,高鹏飞,黄斐,等.基于STM32的光谱采集系统设计[J].电子科技,2017,30(2):1?3.
[11] 潘宇,罗永道.线阵CCD光谱采集系统的自适应滤波降噪[J].光学仪器,2016,38(2):167?172.
[12] 王博,白永林,欧阳娴,等.基于线阵CCD的高速光谱信息采集系统的研究[J].光子学报,2010,39(3):441?445.
[13] QIAO Zhaowei, SHI Tingna, WANG Yindong, et al. New sliding?mode observer for position sensorless control of permanent?magnet synchronous motor [J]. IEEE transactions on industrial electronics, 2013, 60(2): 710?719.
[14] 贾启.三自由度永磁同步平面电机定位控制研究[D].沈阳:沈阳工业大学,2013.
[15] LI Chuanjun, LIANG Qiujuan. Many high performance motion control of linear motor drive system research [J]. Applied mechanics and materials, 2014, 599: 981?984.