赵鑫,林梦洁,杨安东,高子飞,梅茹雪,李会军
(中国矿业大学信息与控制工程学院,江苏徐州 221116)
气体检测是生产作业、火场救灾等众多领域至关重要的一环[1-3]。然而,传统的气体检测方案大多基于一种[4-7]或少数几种[8-10]固定种类气体的检测,使得检测应用场景较为单一;同时,部分气体检测装置采用固定式安装检测方式,导致其检测范围受限、机动性差。此外,针对火场、管廊等人员不方便进入的场景,如何实施快速有效的气体检测,也是亟须解决的问题。
基于上述气体检测方案存在的不足,文中提出了一种便携式的自适应多组分气体检测系统设计。该系统可同时检测多种气体,根据应用场景的需要,可随时更换不同的气体传感器;采用自供电式便携设计,可搭载无人机等开展远程检测作业,以解决场景受限问题,具有良好的应用前景。
多组分气体检测系统可分为下位机气体检测部分和上位机数据显示部分,以云端作为连接,如图1所示。下位机通过气体检测模块和定位模块实时获取各种气体的浓度和对应的地理位置;采集到的数据由主控模块处理后同步保存至存储电路中;同时,通过无线通信模块将数据从下位机端实时传输至上位机端,实现端到端的数据传输与显示。上位机支持多形式数据显示、数据导出等功能。
图1 系统框架图
相比传统气体检测解决方案,文中提出的气体检测方案做出了以下改进与创新:
1)采用RS485 总线通信,可同时检测6 种气体;根据实际需要,可以方便地扩展至32 路气体检测。
2)提出一种自适应气体检测算法,可自动识别所安装的传感器并进行气体检测。
3)采用下位机到上位机端到端设计,进一步减小时延,提高系统实时性。
4)独立供电和便携式设计,使其可搭载无人机在火场等人员不便进入的场景开展气体检测作业。
硬件电路部分可分为主控电路、气体检测电路、定位电路、数据存储电路、无线通信电路和电源管理电路6 部分。主控电路采用基于ARM Cortex-M4 架构的STM32F407 芯片作为控制核心。定位电路和无线通信电路基于安信可A9 模组,该模组兼具GPS 定位和GPRS 通信功能,通过串口和主控系统通信。
2.1.1 传感器选型
目前市面上较为主流的气体检测方案有霍尼韦尔、阿尔法、费加罗等公司所生产的传感检测装置;国内有炜盛科技、精讯畅通、深国安等。但大多数厂家所生产的传感器还需二次开发才能使用,增加了设计开发周期;同时,同一厂家不同种类的传感器外形不一致,很难做到灵活地拔插替换,通用性较低。综合考量,文中最终选择精讯畅通JXM 系列传感器,该系列传感器提供模拟和数字双输出;此外,同一系列不同种类气体传感器外形一致,通用性高;并支持多达20 种可检测气体。
2.1.2 电路设计
气体检测电路采用单板独立设计,位于顶层电路板上,详见下位机检测装置。数据通信基于RS485 双总线通信方案,最多可同时挂接32 个传感器,中采用6 路检测方案。其中,SP3485 实现TTL 和485 电平转换;两个120 Ω电阻为终端匹配电阻,一前一后分别置于传感器阵列首和尾,以确保数据的准确性;两个360 Ω电阻为偏置电阻,以保证总线空闲时仍有稳定的压差,防止出现数据传输乱码,具体电路如图2 所示。
图2 气体检测电路图
存储电路采用板载FLASH 和可拔插SD 卡设计,如图3 所示。FLASH 存储芯片采用16 M 字节大小的W25Q128,基于SPI 全双工通信,可供操作系统FreeRTOS 和文件管理系统Fatfs 使用。SD 卡存储电路采用4 位并行SDIO 通信,以实现气体数据的实时存储,47 kΩ上拉电阻用于避免SD 卡未插入或SD 卡驱动处于高阻状态时的总线浮动。
图3 数据存储电路图
电源管理采用外接电源供电和内部锂电池供电两种供电方式,具体电路如图4 所示。
图4 电源管理电路图
外部电源通过USB 接口提供5 V 直流电压供电池充电管理芯片TC4056A,最后从BAT 管脚输出3.7 V 直流电压,作为系统源电压。
以源电压为基础获取5 V和3.3 V电源电压。5 V电压获取采用PS7516 升压芯片,其中,VIN 最小输入电压为2.5 V,文中输入电压为3.7 V,满足升压要求,经转换从OUT 输出5 V 电压。没有直接从USB 接口获取5 V 电压给相应电路供电,是为了实现对外接USB 供电和内部锂电池供电的统一管理。3.3 V 电压通过ASM1117 线性稳压芯片获取。
为了应对电源电路中的过充等情况,加入了相应的的保护电路。其中,SI2301 场效应管用来保护电池反接情况;DW01K 和8205 用来防止过充、过放和短路情况的出现。
下位机软件架构基于FreeRTOS[11]操作系统,以提高系统实时性,如图5 所示。系统上电初始化后,分3 个任务并行执行,气体问询任务用于获取有效气体数据;GPS 问询任务实时查询气体源所在物理位置;数据发送任务将气体浓度和物理位置数据打包后发送至云端,供上位机抓取。此外,气体数据和GPS 数据由Fatfs[12]文件管理系统统一管理。
图5 下位机软件框图
多组分气体检测采用主动问询方式,即主控器向总线发出一次问询指令,匹配的传感器会发出一帧有效数据作为应答。但不同场景下使用的传感器种类不同,为实现快速且正确的数据采集,文中提出了一种自适应气体检测算法,基本流程如图6 所示。
图6 自适应气体检测算法流程图
检测过程分为有效传感器问询和有效气体数据问询两部分。首先确定气体检测装置上的有效传感器数量及种类。根据各传感器地址的不同,通过RS485 总线依次发出主动问询指令,若有应答,对应答帧进行解析,提取出有效地址,在缓存中查找与之匹配的传感器种类,并作出有效标记;反则,若无应答,则该种类传感器不存在,标记无效。轮询结束后,确定最终有效的传感器及种类。然后对有效传感器进行气体数据问询,获取气体数据。根据已标记的有效传感器,依次发出气体数据问询指令,由于应答数据一帧长度为10 字节,设定一个长度为10的计数器,以进行有效帧数据的判断。接收到应答帧后,截取有效数据,即第5 字节(MSB)和第6 字节(LSB),根据式(1)进行转换,得到最终的有效气体数据。
该算法基于自适应的思想,可以自动识别有效传感器,对有效传感器进行数据问询,带来了较大的灵活性。
为便于后期对采集到的气体数据和GPS 数据进行处理,将数据进行实时保存管理。文中基于Fatfs文件管理系统实现数据管理,分为驱动移植和自定义数据管理两部分。驱动移植是将FLASH 和SD 卡底层读写驱动移植到Fatfs 中,供顶层API 调用;同时,根据实际需要,对文件系统进行裁剪,以提高系统运行的实时性。
自定义数据管理即根据需要存储所需的数据。其中,一个重要的环节是如何实现数据分门别类的实时存储。具体做法是创建一个配置文件,用于记录有效的传感器种类;在每次系统上电时,读取配置文件,为每种有效气体创建一个新的存储文件。对于每种气体进行一次有效数据存储操作可分为以下几步:1)对数据帧进行封装,包括加时间戳,结束符等;2)根据气体种类打开相应的数据存储文件;3)指针偏移;4)写入数据;5)地址偏移;6)更新并关闭文件。
综合蓝牙、WIFI、移动网络等无线通信方式的特点和实际需求[13-15],文中下位机和上位机数据传输采用GPRS 通信[16],将数据发送至机智云云端,供上位机抓取。具体操作在数据发送任务中实现,首先将气体数据和GPS 数据打包,再进行格式转换,变成机智云平台能够识别的16 进制格式数据,最后通过A9无线通信模组传输至云端;上位机从云端抓取数据包,进行解析。
文中下位机将所有硬件进行一体化设计,与上位机通信无需中转硬件平台,通过这种端到端的设计可以在便携化系统的同时,降低数据传输时延,提高响应速度。
基于Qt 跨平台的特性,即在一种平台编写的上位机可以基本不做修改就可以在其他平台运行,文中上位机采用Qt 进行设计,包括从云端获取数据、数据处理与显示、数据导出等功能,主界面如图7所示。
图7 上位机主界面图
数据的获取依靠机智云平台提供的Open API,利用APP ID 和APP Secret 以及设备的DID 编号请求机智云相关网页,连接服务器后解析json 获取数据点的数值,以饼状图和折线图形式进行实时显示。数据源位置的显示整体使用html 网页调用百度地图API 实现,其中,QWebEngineView 控件实现网页的加载与显示,QWebChannel控件负责与html中js脚本通信,向其传递GPS 参数并往地图中添加位置标记。数据的导出基于QTabWidget 控件实现excel 格式数据的导出。
下位机实物图如图8 所示,采用3 块PCB 叠层设计,便于散热的同时缩小检测装置的体积;其中,顶层为气体采集板、中间层为主控板、底层为电源板。
图8 下位机实物图
为验证系统功能的可行性,对系统各项功能进行测试。以氧气和甲烷两种气体为例进行测试,氧气和甲烷分别采用浓度为20%和10%的洁净气体作为测试使用气体。将下位机通过串口与PC 端相连,通过串口助手实时查看采集到的数据;将标准值与采集到的数据、SD 卡导出数据和上位机导出数据进行比对,得到的结果如表1 和表2 所示。从数据可知,下位机采集数据、SD 卡存储数据和发送数据至上位机以秒作为单位时,时间完全同步,可见系统实时性满足要求。同时,采集到的数据与标准值的误差在1%以内,满足实际生产作业要求。
表1 氧气测试结果(标准值20%)
表2 甲烷测试结果(标准值10%)
针对传统气体检测方案存在的问题,文中提出了一种自适应多组分气体检测系统。该系统可支持多种类气体检测,提出的自适应检测算法可以实现传感器的即时拔插替换,以适应不同检测场景的需求。装置便携式和独立供电式的设计使其可以搭载无人机在火场等人员不便进入的场景开展作业。端到端的设计可以进一步提高系统实时性。通过实际测试表明,该系统具有一定的实用价值。