1. 引言
据研究表明,当环境中的甲醛浓度达到0.1 mg/m3时,会使人出现轻微气喘,引起身体不适 [1] ,当甲醛浓度达到0.6 mg/m时,会致使人出现头晕恶心、呼吸急促等症状,严重者甚至致人死亡 [2] 。当前有诸多甲醛检测方法。有研究者采用化学实验室检测法,即将采样到的甲醛气体在化学实验室中使用化学仪器进行分析检测,该方法具有检测精度高、测试效果稳定的优点,但是检测需要用专业人员完成,操作复杂,只适用于某些需要特定检测的场合。杨巍 [3] 采用高效液相色谱法测定空气中甲醛含量,通过对检测波长、流动相衍生试剂等方面进行实验研究,选择甲醛衍生的最佳实验条件,建立了准确度高、抗干扰能力强的高效液相色谱测定方法,但是该方法依赖于液相色谱仪检测设备,该设备价格昂贵且不具有便捷性。杜鹃 [4] 等人在分光广度法检测原理上,考虑现场检测仪的便捷性及操作简单等特点,提出用定波长发光二极管及其光电检测电路,替代传统实验室复杂光学系统的设计方式,使恒流气体采样模块与分析模块合为一体,实现了对空气中甲醛现场检测,但其检测精度受到有效光程的制约,检测准确性较低。黄志强 [5] 等人利用试剂比色法测定工作场所空气中的甲醛,并对其使用的试剂、显色温度、显色时间和比色波长进行合理改良,该方法精度好,准确性高,适用于工作场所空气中甲醛的测定,但是操作比较繁琐,检测结果容易受到温度和时间等因素影响。除此之外,也有研究者采用气体传感器检测甲醛气体。张文田 [6] 研发了一种新型自动气味检测识别电子鼻系统,其中硬件部分由隔离电源系统、自动进气控制系统(进气口、排气口、过滤器、电磁阀、气泵和传感器反应室)以及基于故障检测和报警的气流控制反馈监测系统组成,用户可通过远程界面对采集数据进行记录、存储和分析。黄顺 [7] 以STC12C5A32S2单片机为核心,设计了一款低成本的手持甲醛检测仪,并实现WIFI无线通信功能。田逢春 [8] 等人设计了一种高性能甲醛检测系统,该系统由气体传感器阵列、信号调节电路、数据采集单元、处理单元、大容量存储单元、报警单元和显示单元组成,利用该系统可实现对甲醛的定量检测。
本文基于STM32F103系列主控芯片,使用金属氧化物传感器设计甲醛检测电路 [9] ,其原理是在一定的温度湿度条件下,当外界甲醛气体与硬件电路敏感材料发生反应时,其电导率会出规律性变化,将导致敏感电阻发生改变,可据此检测环境中甲醛的浓度。
2. 硬件设计
2.1. 硬件总体设计
硬件系统总体设计如图1所示,微控制器选用STM32F103RCT6芯片,其与晶振电路、启动电路和复位电路共同构成最小系统 [10] 。除此之外,本系统还包括传感器模块、声光报警模块、温湿度检测模块、LCD显示模块、通信模块、电源模块以及JTAG模块。金属氧化物气体传感器负责采集甲醛气味信息,若检测值超过规定阈值,蜂鸣器将鸣响同时LED红灯闪烁。在LCD模块进行检测数值实时显示,同时利用串口通信将检测信息发送至上位机 [11] ,用于后续数据分析。整个系统使用PC机供电,同时设计温湿度模块检测当前环境温湿度信息。

Figure 1. Overall hardware system design
图1. 硬件系统总体设计
2.2. 电源模块
电源模块时系统稳定运行的基础,通过USB接口输入的电源为5 V,为防止芯片损坏,需要设计电源转换电路。AMS1117-3.3 V是一款常用的电源转换芯片,其内部集成过热保护和限流保护功能,可输出不同梯度电压。考虑到核心板供电电压为3.3 V,因此选择转换芯片的型号为AMS1117-3.3 V。C26、C27分别是高频滤波电容和低频滤波电容,其作用是减少输出电压纹波并抑制芯片的自激振荡。C28、C29为输入滤波电容,通过并联电容电路的组合方式来提高滤波电容的工作效果。电源转换电路如图2所示。
2.3. 甲醛传感器电路
所采用的MEMS气体传感器具有尺寸小、低功耗、快速灵敏等特点。为增强对甲醛气体的吸附能力 [12] ,在其使用前需要先进行预热,加热电压使用3.3 V。传感器敏感电阻Rs与负载匹配电阻Rm串联,当甲醛气体接触到敏感电阻时,其电压会发生改变,通过芯片内部的ADC数模转换可得到此时甲醛气体的响应信号,甲醛传感器电路如图3所示。
2.4. 通信模块
本系统采用高性能芯片CH340G实现USB转串口通信,用于将传感器采集的气味信息以及温湿度信息传输至上位机。通信模块电路图如图4所示。CH340G工作时需要有稳定的时钟信号支持,X0引脚外接12MHZ的晶振Y3,并通过CH340G芯片内部的晶体振荡器的反向输出端产生时钟信号,再由X1引脚输入,XI、XO引脚及晶振两端接两个大小为22PF的对地微调电容C24和C25,以提高晶振电路的稳定性。GND引脚为公共接地端,直接连接到USB总线的地线。TXD和RXD引脚分别为串行数据输出和输入引脚。V3引脚可直接连接VCC输入外部3.3 V电源电压,或外接0.01 uf退耦电容再外接5 V外部电压,其中去耦合电容C23是为了消除输入信号的高频噪声。D+和D−直接连接到USB的数据线。C19、C22为电源滤波电容,使得芯片供电更加平稳。DTR、RTS都为MODEM联络输出信号引脚,DTR低电平,有效表示数据终端就绪,通过外接开关电路控制RESET引脚信号;RTS低电平有效表示请求发送,通过外接开关电路控制BOOT0引脚信号。
2.5. 温湿度模块设计
环境的温湿度会直接影响到气体传感器的响应 [13] ,设计温湿度传感器监测当前采样环境的温度情况。DHT11是一款温湿度一体的数据传感器,其基本信息如表1所示,DHT11具有极高的可靠性和卓越的长期运行稳定性,其内部集成有电阻式测湿元件和热敏电阻测温元件,可以与开发板之间进行单总线通信输并出数字信号。温湿度模块电路如图5所示,其中1号进行供电,2号引脚进行温湿度数据输出,3号与4号引脚共同接地线。

Table 1. Basic information about the DHT11
表1. DHT11基本信息

Figure 5. Temperature and humidity module circuit
图5. 温湿度模块电路
2.6. 声光报警模块
声光报警模块电路图如图6所示。STM32F103芯片限制单个IO口最大输出电流为25 mA,而蜂鸣器驱动电流为30 mA,因此采用NPN型三极管进行扩流驱动。同时为了限制其工作电流过大,串联一个限流电阻R31。电阻R33是为防止蜂鸣器误发声,大小设为10 KΩ。当检测到甲醛浓度超过一定阈值时,蜂鸣器将鸣响发出警告。LED0、LED1用来指示当前采集的有害气体浓度情况。当甲醛气体浓度未达到安全阈值时,LED1绿灯常亮,当浓度值达到或超过安全阈值时,LED0红灯闪烁。
3. 软件设计
3.1. 软件总体设计
软件系统需要实现的功能是采集甲醛气体和环境温湿度数据,并利用串口通信将数据传输至上位机,同时LCD对检测数据进行实时显示。在系统初始化后时,需要对气体传感器进行预热,待基线稳定后开始采集数据。对气体浓度设定一个阈值,当检测甲醛气体浓度超过此阈值时,蜂鸣器将鸣响,同时LED红灯闪烁,警示浓度超标。软件系统流程如图7所示。
(a)
(b)
Figure 6. Circuit diagram of sound and light alarm module
图6. 声光报警模块电路
3.2. ADC数据采集模块程序设计
STM32F103RCT6芯片具有16个外部ADC采样通道,因此在ADC1下即可满足所有通道采样要求。设置ADC1分频因子为6,此时ADC最大时钟频率为72/6 = 12 Mhz,计算得到单次采样最短转化时间为1.17 us。ADC数据采集流程如图8所示。初始化ADC所对应GPIO引脚,将GPIO模式配置为模拟输入,并开启对应GPIO时钟。在ADC初始化结构体中配置ADC工作参数,其内容包括:配置工作模式为独立多通道连续采集,可通过序列寄存器ADC_SQR设置采样通道顺序。采用DMA数据传输进行数据读取,配置DMA传输方向为从外设到存储器,外设地址为源地址,设置为ADC_DR数据寄存器,存储器地址为目标地址,设置为存放采集数据的数组地址。DMA传输模式配置为循环传输模式,依对通道采集到的传感器数据传输指定存储内存空间,直至传输完成。

Figure 8. Data acquisition procedure flow
图8. 数据采集程序流程
传感器信号滤波
中值滤波是一种常用的非线性滤波 [14] ,它基于排序理论能高效且快速滤除高斯噪声。将传感器连续采集N次的数据使用冒泡法按从大到小的顺序进行排序,当N为奇数时,选取中间数值作为中位值;当N为偶数时,选取中间两个数据的平均值作为中位值。计算公式如下所示:
式中,m为中值滤波后结果,N为传感器采集数据的个数。为了使得到的数据更加平滑,同时滤除可能存在的部分数据毛刺,将经S次中值滤波后结果的求平均值,作为最终传感器数值,计算公式如下 [15] :
3.3. UART通信程序设计
UART是一种可实现单片机与上位机通信的全双工异步串行通信协议 [16] ,收发双方可通过TXD与RXD引脚实现数据交换。本系统利用UART协议实现将所采集传感器数据发送至上位机,以进行数据分析。若采集需要停止时,上位机可向单片机发送停止采集指令,中断标志位触发后,将在中断服务函数中关闭AD采样通道并停止串口传输数据。UART通信程序流程如图9所示。配置串口参数如表2所示。

Figure 9. UART communication program flow
图9. UART通信程序流程

Table 2. Serial port parameter configuration table
表2. 串口参数配置表
3.4. 声光报警模块
本系统使用电磁式有源蜂鸣器,当蜂鸣器对应引脚为低电平时,电路导通,并通过其自带的震荡电路发出鸣响。声光报警程序流程图如图10所示,首先对蜂鸣器和LED所对应的GPIO引脚进行配置,并使能时钟信号,然后分别配置其端口输出模式为推挽输出。蜂鸣器的鸣响受检测气体浓度的控制,在气体采集过程中,当气体浓度未超过设定的阈值,LED保持绿灯常亮状态,只有当气体浓度超过阈值,才触发蜂鸣器,此时LED红灯闪烁。

Figure 10. Procedure flow of sound and light alarm
图10. 声光报警程序流程
3.5. LCD驱动程序
LCD液晶屏控制框图如图11所示。液晶控制器采用8080接口与STM32单片机通信,STM32可通过该接口访问控制寄存器(CR)、地址计数器(AC)等资源,进而将气体传感器和温湿度传感器数据发送至液晶控制器,液晶控制器再将这些数据存放在其内部显存(GRAM)中,并通过内部RGB接口与液晶面板进行连接,根据开发板时钟信号将显存(GRAM)内容周期性刷新至液晶面板上,以实现采集信息液晶显示。
4. 系统测试
4.1. 显示测试
将该装置放置在充有甲醛气体的密闭箱体中,可以准确检测到当前环境的甲醛浓度值以及温湿度信息,并将该信息显示在LCD液晶屏幕上,实现检测信息实时展示。LCD显示采集信息界面如图12所示。
4.2. 上位机测试
上位机软件接收界面如图13所示。在上位机中进行参数配置,选择端口为COM3,数据位为8位,波特率为9600,无校验位。当打开串口后,将所采集甲醛及温湿度信息打印在接收串口中,可通过“Save Text”保存数据至本地路径。当需要停止采集时,可在发送端口发送指令,在系统中将进行响应,停止采集并关闭串口传输。

Figure12. LCD display acquisition information interface
图12. LCD显示采集信息界面

Figure 13. The upper computer software receives the data
图13. 上位机软件接收数据
5. 结束语
甲醛作为一种危害公众健康的有毒有害气体,实现对其现场快速检测具有重要意义。而使用气相色谱仪、分光光度法、试剂比色法等操作复杂,且往往需要专业检测人员进行操作,检测周期偏长,导致难以满足检测的及时性、快捷性。本文以STM32微控制为核心,结合各个功能模块提出了硬件电路与软件设计方案,最终实现了甲醛现场快速检测系统的设计。系统调试表明,该系统工作稳定,可将采集的数据实时显示在液晶显示屏与上位机端,方便检测人员及时对数据进行分析处理。该方法具有低成本、便捷性等优势,且满足甲醛快速检测与系统控制的基本需求。
NOTES
*通讯作者。