谢 波 侯海良
(湖南人文科技学院 信息学院,湖南 娄底 417000)
在农业生产中,温度和湿度直接决定了农作物的质量,在工业应用中,很多仪器和设备对温湿度有很高要求[1]。因此,实时检测生产环境的温湿度对工农业的生产效率至关重要。
传统仪器的功能取决于仪器制造商,扩展性方面受到很大的限制,操作界面不够直观方便,数据的处理和运算功能不够理想,很难得到更新,维护和升级的成本太高,用户不能根据自己的需求对系统进行改进[2]。基于传统仪器以上缺点,本文旨在设计一个易于扩展,实时性高,界面一目了然,易进行二次开发的温湿度检测系统。本设计采用LabVIEW 作为上位机来进行数据的处理和显示,用户可以根据自己的需求进行功能定义,能实现普通机械仪表仪器无法实现的功能,且LabVIEW 作为计算机的一个开发环境,在实现传统仪器功能的同时成本极低,不用考虑仪器的损耗问题。下位机用单片机实时检测温湿度原始数据,并通过无线串口模块将下位机与上位机进行连接,可以进行远程操作,控制十分方便。
本设计主要用到了LabVIEW 开发环境和STM32 单片机最小系统以及SHT20 温湿度传感器,单片机作为下位机用于将传感器检测到的数据处理后通过定时器中断再发送给串口,LabVIEW 作为上位机用于读取串口数据,将接收到的数据经过运算后进行显示、存储和打印。上位机完成对下位机的使能,处理数据,进行显示。整个设计的系统总体设计框图如图1 所示。
图1 系统总体设计框图
上位机使用LabVIEW 处理接收到的温湿度数据,并将处理后的数据进行显示和保存。上位机的设计主要分为以下几个模块:前面板界面的设计、温湿度数据处理设计、串口通信数据传输的设计、历史记录模块的设计。程序流程图如图2所示。
串行通信模块是上位机软件设计中最重要的模块之一,本设计单片机与LabVIEW 之间采用的也是串行通信方式[3-4]。在LabVIEW的串行通信中,最常用的是VISA 串行通信,本设计在计算机上安装了VISA 驱动,并在上位机程序中进行了相关参数配置,该方法简单且传输数据的稳定性高。
2.3.1 数据读取
图2 上位机程序流程图
应用LabVIEW 的VISA 控件进行计算机串口配置,接收下位机发送过来的数据。LabVIEW 从串口接收到的数据会转换为二进制形式,因此需先将数据转换再进行处理和显示,需要在读取到数据后添加相应的数据类型转换控件,如图3 所示,其中VISA 读取控件的“字节总数”连接端子需要连接到数字常量“2”,以便将温度数据和湿度数据分离,显示完成后再进行下一次的数据读取。
在本设计中,上位机LabVIEW 每隔一段时间向下位机发送一个请求指令,下位机会进入中断进行数据发送。所以在进行串口初始化后,添加一个串口写入控件向下位机发送指令,这一命令对下位机来说就相当于一个开始命令,没有接收到正确的开始命令时下位机处于休眠状态。
2.3.2 温湿度测量模块的设计
通过VISA 读取控件读取下位机发过来的数据,但是下位机发送过来的数据是温湿度数据交叉一起发送过来的。因此在接收到数据后要先将温度数据和湿度数据进行区分。分别显示温湿度需在后连接索引数组控件。温湿度的波形图表需要在前面板创建,在前面板创建两个波形图表后,程序面板会出现两个波形图表控件,分别连接至数组索引的输出端子,便可在程序运行后得到温湿度波形图。温湿度数据分别处理后可根据时间索引进行存储。温湿度测量模块如图4 所示。
图4 温湿度测量模块
2.3.3 报警模块的设计
报警模块的设计如图5 所示。将传入的温湿度值与设定值进行比较,当实际的温度或湿度值不在设定的温湿度范围内时,会触发温度或湿度报警。触发报警后上位机用指示灯常亮来进行提示,同时下位机蜂鸣器会发出警报。此模块只涉及到基本的算术运算和基本的逻辑运算,实现比较简单。
图5 报警模块
2.3.4 数据存储模块和数据回放模块的设计
数据存储及回放模块如图6 所示。在前面板创建两个Express 表格控件,该控件的作用是使信号转换为数据表的形式,写出每一个信号的数值和每一个信号对应的时间数据。将控件的“信号”端分别连接温度和湿度数据,并进入表格控件的属性,将“包含时间数据”勾上,便可将时间及温湿度的历史数据在表格上依次显示,然后在程序面板创建写入电子表格文件控件,将表格控件的“表格”引脚连至写入电子表格文件控件的“二维数据”引脚,并设置文件路径,即可以Excel形式保存温湿度历史数据。写入电子表格文件控件的“添加至文件?”引脚的值应设为“T”,这样就不会覆盖之前所保存的表格数据。打开Excel表格就可查看以前测量的温湿度数据。
图6 数据存储及回放模块
下位机主要由单片机最小系统和温湿度传感器组成,本次设计用的是STM32 单片机和SHT20数字温湿度传感器。温湿度传感器SHT20 的电源引脚接+5V,接地引脚接GND,数据传输引脚接单片机的I/O 口GPIOA.1,这样便可实现SHT20与采集数据的单片机之间的通信。由于单片机供电电压为3.3V,传感器供电电压为5V,因此系统采用5V 电压进行供电,然后通过稳压芯片XC6206 将电压降至3.3V 用于单片机供电。上位机与下位机是通过串口进行无线通信的。单片机与SHT20 连接原理图如图7 所示[5-7]。
图7 单片机最小系统和降压模块
程序是整个系统的核心与灵魂,单片机及其外围电路需要通过程序的驱动才能运行,所以系统的程序是非常重要的。程序中出现一个小的逻辑错误有可能导致系统无法正常工作或是无法实现预期功能。本次设计选用的是STM32 单片机,程序是用C 语言编写的。单片机TIM1 定时器工作于自动重装载模式,当单片机接收到上位机发来的指令时,单片机开始向上位机发送读取到的温湿度数据。图8 为本设计下位机的程序流程图。
图8 下位机程序流程图
调试完成后,便可运行程序,运行LabVIEW程序前将hex 文件烧录进单片机,并且应配置好串口参数,以便正确传输温湿度数据,程序运行后LabVIEW 前面板如图9 所示。运行结果表明,所测得的温湿度值都为环境温湿度实际值。系统实现了温湿度的显示、存储、历史回放及报警等功能,并且图表显示能直观地看到温湿度的变化趋势。
图9 程序运行界面
本文设计了一个基于LabVIEW 的温湿度检测系统,下位机使用的是STM32 单片机和温湿度传感器SHT20。能在LabVIEW 前面板实现温湿度数据和波形实时显示,并且能显示和记录检测温湿度值所对应的时间,便于查询历史记录。当温湿度不在设定值范围内时,单片机和电脑端都会产生报警。该系统界面设计人性化,操作简单,且易于扩展功能,由于是无线通信,温湿度检测设备和显示设备可以分离,使得在实际应用中更加方便。因此该系统有很好的使用价值和应用前景。