基于STM32 的多路温湿度扫描检测系统设计

2022-10-28 13:42王子权姚潇骏
电子设计工程 2022年20期
关键词:串口温湿度湿度

王子权,范 燚,项 贇,项 超,姚潇骏

(上海卫星装备研究所总装中心,上海 200240)

航天产品生产过程对环境温湿度具有一定要求。目前,在AIT 中常用的温度测量装置的采集周期较长,较难获得温度的瞬时变化情况[1-4]。目前,对工业用温度、湿度检测设备的主要研制思路基本可概括为以某种类型的微控制器作为通信与数据处理的核心,以某种类型的传感器或变送器作为设备的敏感装置,以某种界面设计系统进行人机交互设计[5-9]。该文在STM32F429 型单片机核心上集成了16 路温湿度传感器,通过GPIO 模拟传感器的IIC 通信时序,使用任务信号量机制实现测量任务间的通信与切换,并设计了系统上位机。

1 系统硬件设计

1.1 系统整体组成

如图1所示,系统主要硬件组成包括STM32F429单片机、USB标准输入电源(5 V)、稳压降压芯片(5 V→3.3 V)、电源LED指示灯、复位电路、晶振电路、CH340G转串口电路、RGB 灯、SHT20 型传感器(16 个)。

图1 系统整体组成

SHT20 型传感器通过GPIO 外设转接卡与单片机的通用GPIO 连接,单个传感器通过单片机的两个通用GPIO 口与单片机进行通信,包括时钟线GPIO 的SCK 引脚和数据线GPIO 的SDA引脚,传 感器与单片机共用3.3 V 供电电源。电源LED 指示灯在电源接通时亮起,电源断开时熄灭。RGB 等通过通用GPIO 与单片机连接,其中R 光(红光)引脚为PH10,G 光(绿光)引脚为PH11,B 光(蓝光)引脚为PH12。单片机通过CH340G 转串口电路实现与上位机的串口通信,串口通信配置设置:波特率:115 200 bps;奇偶校验:N;数据位数:8;停止位数:1。

1.2 GPIO外设转接卡

如图2 所示,GPIO 外设转接卡采用标准的USB接口形式,转接卡接口对应表如表1 所示。以第一个转接卡接口为例,USB 的第5、6 引脚均接地,VSS引脚接地,VCC 引脚接3.3 V 供电电源,数据线D-与单片机的PA15 连接,对应第一个SHT20 传感器的SCK1 引脚,数据线D+与单片机的PA14 引脚连接,对应第一个SHT20 传感器的SDA1 引脚。

图2 GPIO外设转接卡电路(单个)

表1 转接卡接口对应表

1.3 CH340G转串口电路

如图3 所示,CH340G 转串口电路使用MINI USB接口作为输入[10-13],并提供标准的5 V 供电电源,串口的RXD 引脚与单片机的PA9 引脚连接,TXD 引脚与单片机的PA10 引脚连接,芯片本身使用12 MHz的晶振。使用CH340G 转串口电路的主要目的是与上位机实现串口通信,将从传感器采集的温湿度数据发送至上位机。

图3 CH340G转串口电路

2 系统软件设计

2.1 操作系统任务配置

设置系统任务共17 个,包括启动任务和16 个温湿度测量任务。启动任务的函数名为AppTaskStart,温湿度测量任务的函数名为AppTask1-AppTask16。启动任务的堆栈空间为128 B,单个温湿度测量任务的堆栈空间为512 B。启动任务的优先级为2,温湿度测量任务的优先级均为3。

2.2 基于任务信号量的任务切换机制

由于温湿度测量任务的优先级均相同,因此在软件运行时,PC 指针以时间片轮转调度的形式在16个温湿度测量间来回切换。但在实验中发现,采用时间片轮转调度的形式,会导致某些任务过量运行,而某些任务基本没有时间运行,其表现形式:某些任务传回的数据量很多,而某些任务传回的数据量很少。因此需在某种任务间通信或切换机制避免上述现象的产生。

任务信号量是UCOS 操作系统提供的信号量类型之一,该信号量的值包含在任务控制块中,是任务独有的信号量通知值。任务信号量释放函数名为OSTaskSemPost;任务信号量等待函数名为OSTask SemPend。每个任务都可以等待该任务的任务信号量,但在其他所有任务或中断中都可以向该任务释放信号量,因此,该种信号量机制为实现任务间切换提供了可能。

2.3 系统整体程序流程

如图4 所示,系统整体程序流程首先进行系统初始化[14-16],包括系统时钟、标准库、延时函数、串口、串口DMA、第一个温湿度传感器通信总线IIC1、第一个温湿度传感器SHT21、第16 个温湿度传感器通信总线IIC16、第16 个温湿度传感器SHT216、UCOS 操作系统等的初始化。随后进行任务创建并开启UCOS 系统。在任务创建中,AppTaskStart 的任务是创建AppTask1-AppTask16 共 16 个任务,在AppTaskStart 任务末尾必须释放AppTask1 任务信号量,此时AppTask1 才使得到其任务信号量正常运行,AppTask1 任务末尾必须释放AppTask2 任务信号量,此时AppTask2 任务才可运行,以此类推,AppTask16 任务末尾必须释放AppTask1 任务信号量,此时PC 指针重新回到AppTask1 重新开始下一轮流程。

图4 系统整体程序流程

2.4 温湿度测量任务函数

如图5所示,以第一个温湿度测量任务流程为例(其余温湿度测量任务流程基本相同)。图中,变量err为操作系统运行错误信息存储变量,用于在操作系统运行错误时,通过读取该变量即可查看错误信息;i为for循环变量,cycle为循环次数;sumTemperatureC1为循环cycle 次后温度总和;sumHumidityRH1 为循环cycle 次后湿度总和;temperatureC1 为当前温度数据;humidityRH1 为当前湿度数据。系统通过判断温度数据传输正常,计算温度数据总和,通过判断湿度数据传输正常,计算湿度数据总和,当cycle 次循环完成后进行温度和湿度数据平均值的计算,平均值计算完成后,先后通过串口向上位机发送温度和湿度数据,其中温度数据以大写字母A 开头,湿度数据以小写字母a 开头,发送的温湿度数据均保留两位小数。串口数据发送完成后将温度和湿度数据清零,进行下一次循环计算,函数最后必须释放AppTask2的任务信号量,系统在延时500 ms 时间内可发起任务调度,因此并不妨碍其余任务函数的运行。

图5 温湿度测量任务AppTask1任务函数

若温度数据和湿度数据传输异常,系统则自动清零温度和湿度数据,并向串口发送“A0.00”和“a0.00”数据,因此通过上位机查看串口发送的数据,若某个通道的数据均为0.00,可判断该传感器连接异常。第一个温湿度测量任务以A 和a 作为温度数据和湿度数据的首字母,上位机通过判断数据首字母是A 或a,从而将数据保存至温度数据文本文件A1.txt 或湿度数据文本文件A2.txt,其余第2~16 个温湿度测量任务分别以B-P 作为温度数据的首字母,分别以b-p 为湿度数据的首字母,并将温度数据保存至文本文件B1.txt-P1.txt,湿度数据保存至文本文件b1.txt-p1.txt。

2.5 上位机设计

基于Matlab GUI 开发环境进行系统的上位机设计,包括主界面、串口配置界面、串口调试界面、数据曲线界面、进入监测系统界面等,通过主界面进入各子界面。

如图6 所示,上位机采用RS232 串口通信方式,以数据首字母A-P 作为温度数据判断依据,共16路,数据保存为文本文件:A1.txt-P1.txt。以数据首字母a-p 作为湿度数据判断依据,共16 路,数据保存至文本文件:a2.txt-p2.txt。通过数据曲线显示界面,可将16 路温度数据和16 路湿度数据以实时曲线形式显示。通过监测系统界面,可将当前16 路温度数据和当前16 路湿度数据实时显示,同时可显示当前16 路温度分布彩图和当前16 路湿度分布彩图。在软件的串口配置界面可配置串口通信的COM 口、波特率、奇偶校验位、数据位数、停止位数。在软件的串口调试界面可从终端机接收数据,以判断串口通信是否正常。

图6 上位机设计

数据曲线显示界面用于显示16 路温度曲线和16 路湿度曲线,曲线显示框通过Matlab(plot 函数)绘图功能实现,显示框每1 000 点更新一次,曲线重新开始从当前时间点显示。

进入监测系统界面用于显示当前16 路温度数据和16 路湿度数据,并实时更新。使用Matlab 二维彩图绘制方法(pcolor 函数),在“温度分布”和“湿度分布”绘制窗口分别将当前的16 路温度数据和16 路湿度数据采用彩图绘制方式进行可视化显示。

3 冷气降温实验

将系统应用于冷气降温中。实验设备包括冷气机、PC 机、STM32F429 开发板、系统GPIO 外设转接卡、16 个SHT20 型传感器、恒温加热器、传热铝合金板、多层隔热组件等。恒温加热器向传热铝合金板加热,实验时将恒温加热器的加热温度设定为60 ℃,冷气机通过内径为30 mm 的PVC 管向传热铝合金板吹冷气,在铝合金板上以相等间隔布置4×4的传感阵列,以在上位机中模拟温湿度平面分布。

16 路温度变化曲线和湿度变化曲线如图7 所示。采集点数在100 个以内时,系统处于常温状态下,此时16 个点的温度和湿度基本保持一致。打开加热器后,温度开始上升,而湿度开始下降,这与实际情况相符,在采集点为200 个左右时,将多层隔热组件掀开,观测铝合金板,此时温度出现骤降,而湿度出现骤升现象。重新包覆多层隔热组件后,温度继续上升至50 ℃左右的稳态,此时湿度也逐渐降低至26%RH 左右的稳态。打开冷气机,冷气随气管冲进铝合金板与多层隔热组件组成的封闭腔内,此时温度逐渐开始下降至38 ℃左右的稳态,而湿度逐渐上升至15%RH 左右的稳态。

图7 温湿度变化曲线

恒温加热器加热稳态后、冷气降温稳态后的温湿度分布如图8 所示。可知加热稳态后,第10 个传感器的温度最大,约50 ℃左右,与温度曲线变化趋势相符,而其湿度则最低,约12%RH 左右。打开冷气机冷却至稳态后,可知第5 个传感器的温度最低,约35 ℃左右,而其湿度则最高,约35%RH 左右,这与其最靠近气管出口有关。

图8 温湿度分布

4 结束语

该文基于STM32F429 单片机与SHT20 型温湿度传感器,研制了一种多路温湿度扫描检测系统,并研制了GPIO 外设转接卡,在Matlab GUI 开发环境中,设计了系统上位机软件。在冷气降温实验中,验证了系统的稳定性与可靠性,得到了符合实际的温湿度变化趋势,该系统通用性强,功能易扩展,可应用于多种航天产品生产制造现场。

猜你喜欢
串口温湿度湿度
湿度变送器测量结果不确定度评定
蛋鸡育雏育成舍环境控制技术
加湿器用不对 警惕肺炎缠身
档案库房温湿度记录统计及调控
MCS—51单片机中的多串口通讯技术的应用
带有双检测结构的电缆接头保护装置
变电站高压配电智能温湿度控制装置的研发与应用
跟踪导练(二)(2)
全国计算机等级考试机房准备工作探讨
档案库房温湿度调控思考