基于STM32 的多通道温湿度测量仪设计研究
2023-04-04王小龙
王小龙
(中国航空工业集团公司北京长城计量测试技术研究所,北京 100095)
温湿度是测量方面非常关键的可测量因素。不管是人们赖以生存的基本居住条件,或是工农业产品生产、军事、气象观测等行业,都必须对温度与湿度实施检测与管理。而由于电子、计算机科学、通信技术、传感器设备和传感技术等发展,检测行业对温度与湿度的测量能力已经实现了跨越式的提升。在现代社会,温湿度测量可应用的范围非常大,例如,探究救灾机器人、医院、工业控制和文物保护等领域都对温湿度测量有着一定的需求。基于此,研究开发出一款成本低、可靠性优越的温湿度系统便显得尤为重要。此次设计中,将以STM32 为基础,展开多通道温湿度测量仪的硬件、软件设计工作,并进行相应的调试,以便于获得可用于实践工作中的高可靠性测量仪。
1 温湿度测量仪研究进展
现代人要求的基本生活条件越来越严格,特别是温湿度的问题直接关系到整个社会,甚至威胁到人类和其他动植物的生存条件。故而在农业、林业、环境保护等工作中,往往要求获取精确的环境温湿度测量信息。邓芳明等以射频识别技术传感标签为基础研发出了一种农田土壤环境监测方式,并设计了一种无源射频识别温湿度传感标签。张露荷等对环境的温湿度传感器信息予以提取,以探讨温湿度传感器在高寒草原上土地氮矿化监测中的作用。已有学者对不同类型的土壤温度、湿度进行了计算,并对不同类型的覆盖方法进行了研究。在工程施工中,土地的温度、湿度都是采用电子仪器进行监测的。侯伟等采用虚拟仪器方法,用51 单片机建立了一个作用于农田的土壤温湿度系统,完成了对单块土地温湿度的计算和显示,但系统的测试通道数目较小,且并行处理功能较弱。将STM32 单片机和51 单片机以及DSP 处理器进行相关比较,STM32 单片机在计算力、资源方面的优势更为显著。王子权等曾经研究借助PWM 输出功能以便于完成调节LED 灯亮度的功能。黄琦等采用STM32,根据分布式光纤拉曼测温系统中定标光纤、雪崩光电二极管的温度控制需要,特意设计了一个精密恒温控制管理系统。
2 系统硬件设计
2.1 系统构成
系统的整体构成中重点涵盖的内容有8 对传感器,即温、湿度传感器各有8 个,温度传感器主要借助单总线从而实现和单片机的连接;PCF8591A 对应的是湿度传感器的前4 个,PCF8591B 对应的是湿度传感器的后4 个。PCF8591 利用自身的IIC 总线实现和单片机的相连。
单片机在正常运行期间,需要有基本电路进行支撑,其中复位以及晶振电路均属于基本电路的范畴,设置串口电路的原因主要有2 个方面:一方面是在程序编译完成并制作为HEX/BIN 文件后,将程序存入单片机芯片中;另一方面是要和上位机进行正常的通信交流。利用按键的形式对温湿度的报警值进行有效调控。针对装置中的8 个传感器组,都要为其增设LED 指示灯,当灯亮起时,则意味着相应的传感器组处于工作状态。除此之外,还需要将报警信号的功率放大,这一工作的目的是促使报警信号能够及时响起,以便于相关工作者可以尽快感知到异常情况。
2.2 温湿度传感器
2.2.1 SEN0114 土壤湿度传感器
SEN0114 湿度传感器,从本质上来讲属于一种较为简单的水分传感器,其作用是能够测试土壤中的含水量。如果土壤出现缺水问题,传感器输出值将相应降低,否则将增加。借助于四线制系统,其中VCC 和GND 分别代表电源的高电平和低电平。若检测的湿度参数值和设定值之间有出入,低于设定值,则DO 便会输出高电平,反之则会输出低电平。AO 相当于湿度模拟量的输出端,这一端口和PCF8591 有所连接,二者连接的目的在于完成模拟量向数字量变换。
2.2.2 PCF8591 转换芯片
A/D 转换模块中包括2 个PCF8591 芯片,并且其芯片中有IIC 总线,总线占据了STM32 的GPIO 端口,故而2 个芯片都会用到IIC 总线。芯片中包含的A0、A1 以及A2 都是器件地址配置端口。如果PCF8591A配置为0×01 的情况下,则A0 便会输出高电平,其余2个便会输出低电平。对于PCF8591B 而言,当其配置为0×00 的情况下,这几个端口都会输出低电平。STN32其能够借助IIC 通信技术实现连接操作,转换芯片的模拟量输入端口是AIN0—AIN4,基于这一情况来看,PCF8591A 以及PCF8591B 都会和4 个湿度传感器相连接。
2.2.3 DS18B20 温度传感器
这一传感器的电路较为简单,并且在工作状态下表现出的温度测量精确性比较优良,其按照单总线通信协议运行工作,能够借助STM32 的通用GPIO 引脚完成和该传感器实现通信。该传感器共包含8 个单总线引脚,分别为PB0、PB1、PC5、PC6、PA0、PA1、PE2 和PE3。
2.3 触摸屏
设计过程中,将触摸屏的大小选定为4.3 英寸,类别为电容型,触摸屏的分辨率参数为800×480 像素,该显示屏在显示信息时,应用的是16 位真彩。该触摸屏和电阻类型的触摸屏相比较来讲,前者仅需工作人员轻微用手指触碰便可以激活,多点触摸的难度等级比较小,其应用的是钢化玻璃材料,硬度比较高,不易损坏,可以使用较长一段时间。
2.4 按键设计
在设计按键的过程中,一共设计了7 个按键,其中包括1 个复位按键、3 个湿度按键以及3 个温度按键。每个按键代表的含义各不相同,复位按键是将原先设置的参数归为初始设定值。3 个湿度按键分别为湿度×10、湿度×1、湿度×0.1,这3 个按键的含义分别代表的湿度变化率为1、0.1 以及0.01。3 个温度按键的含义与湿度按键相似,在此不作过多阐述。
2.5 功率放大电路
通过D2822A 的辅助,可以实现对单声道音频功率的放大,从而达到提高系统噪声的目的。如图1 所示,输入端为Input,这一端口可以实现和音频设备的连接。
图1 音频功率放大电路
3 系统软件设计
系统的设计工作包括任务组态、人机界面设计等。
3.1 任务配置
系统任务主要包括:任务创建功能的启动任务、触摸屏任务的触控任务、人机界面的显示与刷新任务、报警任务boom_task、按键的检测任务key_task、系统工作指示任务led_task、温湿度测量任务THmer_task1—THmer_task8。
3.2 人机界面设计
人机界面的设计工作十分重要,其设计质量的高低直接关系到系统工作效率。在本设计中,主要设计了2 种界面,一种是报警值设置界面,另一种是参数值显示界面,这2 个界面不仅是相互独立的,而且也是互相关联的,在设计期间,需要考虑到界面切换的问题,这样做是为了更好地进行参数设置以及参数观察。
3.2.1 报警值设置界面
在设计人机界面时,需要将温湿度报警值设定为系统初始化界面,也就是在系统启动之初,便会首先进入到这一界面中来,不用工作人员进行相应的操作,只要启动系统,该界面便会展现出来。
3.2.2 参数值显示界面
这一界面的主要作用是能够展现8 个通道中的温湿度参数变化情况。如果监测到数值后,显示屏中对应的位置便会显现出这一参数值。若没有检测到相关数值,则显示屏便会显现“NULL”。
3.2.3 互斥信号量配置
对于PCF8591A 以及PCF8591B 来讲,因为这2个芯片需要共同用到IIC 总线,但是总线只有1 个,所以每次读取数据时,无法同时完成,单次只能读取单个芯片上的数据信息。为了有效防止共享总线过程中出现数据串联的异常现象,需要设计互斥信号量,这样做的目的是充分避免优先级出现反转的情况。与此同时,还要确保单片机在每一个通信周期中,仅与其中1 个芯片进行交流。
在程序设计过程中,还需要增加一个变量,即TASK-FLAG,这一变量设置的目的是对所有任务状态加以记录,以便于充分掌握每个任务的具体情况。变量位数为32。借助对其中部分位的逻辑功能配置处理,便能够实现对相关任务运行状态的标志。
3.3 系统程序整体流程
系统整体程序流程如图2 所示。从图2 中可以看出,程序开始,需要先进行初始化,其中包括程序库初始化、LED 初始化等诸多初始化内容。当UCOS 在实现初始化操作之后,接下来会开始start_task 任务,并创建系统所要用到的其他任务,在任务运行过程完成之后,将之挂起。任务均放置在1 个任务池当中。emwin_task 则需要实现人机界面的显示工作。当初始化操作结束之后,系统会自动到达报警值界面。相关工作人员需要在该界面设定合理的参数值,并触碰“START”按钮开始工作,触碰“ENTER”按钮可以到达数值显示界面。在该界面中触碰“RETURN”,则可以返回原先的界面。
图2 系统整体流程
3.4 温湿度测量任务
温湿度测量任务的重点工作是调用温湿度测量有关的函数,并获取相关数据信息,再借助相应的数据处理措施,确保温湿度相关数值可以正常反映在触摸屏界面上。在这一流程中,会涉及变量err,这是操作系统中必然会存在的,其作用是存放程序运行有偏差的内容,温度测量函数确保共享数据总线,故而在进行相关函数的调用时,不用设计互斥信号量的判断内容。但是湿度测量函数必须进行设计,增加关于互斥信号量的判断内容。
4 开发板调试
实验中涉及了很多设备,包括温湿度传感器、发射机、PCF8591 芯片等诸多内容。在这些内容中,为了得到更精确的模拟信号,发射机和温度传感器相互连接。
在此基础上,利用该传送器将模拟信号传送给PCF8591,再进行仿真变换,获取土壤的相对湿度和温度信息;界面显示良好,按键操作正确,报警和数据显示接口良好,检测工作正常,温度、湿度等性能良好;电源信号放大器工作得很好,当温湿度测量达到告警阈值后可以产生响度较大的报警信号。
5 温湿度测量仪系统的运行情况
单片机用到的电源电压为3.3 V,要求供电电压不可超过这一数值水平,否则将会对芯片造成一定程度的破坏。接上电之后,系统便会开启,借助LED 灯来观察各个温湿度传感器组的工作情况。系统需要检测温湿度传感器是否正常工作,若正常,可以进行温湿度数值采集工作,并将相关数据显示在屏幕上;若不正常,则会提示相关问题。温度值与湿度值分别为30 ℃、33%,以100 ms 为时间间隔期,每隔一个间隔期便刷新一次数据,以便于实时显示动态的数据值,若温湿度传感器出现异常情况,则会提示无设备等内容。
从现场的检查中,可以看到本次设计,显示的数字精确度较低,并且数字的刷新率比较慢,所以在数字的显示上需要进一步完善。
6 结束语
在此次研究中,以STM32F103ZET6 为基础,并联合UCOS 操作系统展开了相关设计工作,尝试设计出多通道并行检测温湿度的装置。设计的检测装置仪器含有8 个通道,这些通道均能够实现并行工作目标。这一装置仪器除了能够用来对土壤的温度、湿度值进行检测之外,同样也可以用来进行环境信息的检测,同时也可以用于绿植等的检测领域。结合对不同对象的检测,可以适当地调整通道数量,同时也可以将这一装置仪器作为基础,展开优化改造,增设其他检测功能模块,以便于更好地适应实践工作。