APP下载

基于STC8G1K17单片机的温湿度控制器

2024-08-31杨阳杨文健郭晓凤

机械制造与自动化 2024年3期

摘 要:基于STC8G1K17单片机进行系统设计,采用SHT30温湿度传感器获取温湿度数据,通过LCD1602液晶屏实时显示当前温度、湿度以及工作状态。该系统由硬件和软件两部分组成,硬件部分包括STC8G1K17单片机、SHT30、LCD1602等硬件电路,软件部分主要包括单片机嵌入式程序设计。单片机通过温湿度传感器获取数据,液晶屏通过外部按键操作实现数据显示及工作状态的设置,系统可以实现温湿度的自动控制。

关键词:STC8G1K17;SHT30;温湿度控制

中图分类号:TP273文献标志码:A文章编号:1671-5276(2024)03-0234-05

Temperature and Humidity Controller Based on STC8G1K17 Microcontroller

Abstract:This paper designs temperature and humidity system based on STC8G1K17 microcontroller. SHT30 is used to obtain temperature and humidity data, and the current temperature, humidity and working state are displayed in real time through LCD1602 screen.The designed system consists of hardware system and software system, the hardware being STC8G1K17 MCU, SHT30, LCD1602 and other hardware circuits, and the software mainly being MCU embedded program design.The single-chip microcomputer obtains data through the temperature and humidity sensor, and the LCD and external keys display the data and set the working state. The system can realize the automatic control of temperature and humidity.

Keywords:STC8G1K37; SHT30; temperature and humidity control

0 引言

随着人们生活质量的不断提高及工业、农业的不断发展,温湿度的变化早已成为一项重要的环境指标[1-2]。工业生产中需要时刻保证生产设备、产品处于安全的工作环境,农业生产中农作物需要稳定适宜的生长环境,这些环境都需要进行有效的温湿度控制。因此,一套可靠的检测控制装置能够保证生产的正常运行和植物的稳定生长。可靠的设备不仅可以节省人力检测成本,还能够及时报警,帮助提前做好预防,避免意外发生造成损失。本文针对多肉植物生长的小型温室,设计了一种基于单片机的温湿度自动控制器,并对设备进行精度、稳定性的测试验证,结果表明该设备能有效控制植物生长环境的温湿度[3]。

1 系统总体方案设计

本设计硬件由STC8G1K17单片机电路、SHT30温湿度传感器电路、LCD1602液晶屏电路等组成,可实现温湿度的检测和控制。系统工作主要分为3部分:获取传感器值、设置工作状态和显示控制输出。系统检测当前环境的温湿度,通过按键设置不同模式,实现温控功能,可适用于降温、加热场景,屏幕显示设置和数据信息。通过设置报警阈值,可以在数据异常时通过蜂鸣器报警。系统工作组成框图如图1所示。

2 系统硬件设计

2.1 单片机主控模块设计

设计采用的主控芯片为单片机STC8G1K17,相比传统8051单片机处理速度约快12倍以上。内部带有高精度IRC,最大可调整高达36MHz,硬件电路上可无需外部晶振。设计使用TSSOP-20封装的单片机,最大支持18个I/O口。

本系统方案中主控芯片通过IIC接口获取温湿度传感器SHT30的数据,经过软件处理转换得到相应精度温湿度值。LCD1602液晶屏的4位数据端口与IO扩展芯片PCF8574相连接,主控芯片通过PCF8574的IIC总线地址进行读写操作,实现液晶屏的显示控制。通过按键设置控制系统工作模式,输出控制端驱动继电器进行温控及蜂鸣器报警等操作。单片机硬件电路如图2所示。

2.2 温湿度传感器电路设计

系统温湿度采集使用Sensirion的SHT30集成型传感器,可以实现温度、湿度的多数据测量,比上一代产品有着更稳定更出色的水平[4]。其封装小、精度高,适用于多种环境,温度测量范围为-40℃~125℃,湿度范围为0%~100%RH,在0℃~60℃范围内测量精度可达±0.2℃,湿度精度可达±2%RH。

温湿度传感器电路如图3所示,传感器器件地址0X44,单片机通过IIC对该地址进行测量指令发送、数据读取,程序设定温湿度预警值后通过ALERT引脚进行中断信号的输出,nREST上拉保持芯片工作稳定。

2.3 LCD1602液晶显示电路设计

考虑到需要显示的数据及设置信息,显示部分选用LCD1602液晶屏[5] 。通信控制采用PCF8574作为单片机的I/O扩展, LCD1602的使能、数据等引脚均与PCF8574相连,单片机同样通过IIC配置读写,其地址为0X20。设计增加三极管驱动背光源,实现程序可控。液晶屏偏压管脚(VO)连接电位器,可调节显示对比度,实际测量调整为0.3 V左右效果较好。LCD1602液晶显示电路如图4所示。

2.4 按键、开关控制电路设计

按键采用低电平有效的设计,4路独立按键,分别接入单片机的P3口,通过单片机读取I/O实现系统设置等操作。

系统开关控制电路由三极管作为开关,单片机的S1、S2驱动信号控制,继电器的线圈连接在三极管的集电极端,通过继电器外接可以带载大功率电器,一般适用于直流设备,交流设备需要外接交流接触器[6]。按键、开关控制电路如图5所示。

2.5 蜂鸣器报警电路设计

报警电路由蜂鸣器及其驱动电路组成,单片机的P1.2口连接控制驱动电路。增加反向续流二极管保证蜂鸣器稳定工作。为了防止工作异常,由单片机给出报警驱动信号,为用户提供告警。蜂鸣器报警电路如图6所示。

3 系统软件设计

3.1 系统主函数

系统上电后,程序首先完成对各模块初始化工作,包括单片机系统的I/O初始化,LCD1602液晶、SHT30传感器的初始化等。初始化完成后,系统获取传感器的温湿度值在液晶屏幕上给予显示。调用按键处理函数,设置相应的开启、停止温度值,判断并执行相应功能,以改变系统的工作状态及相关设置。系统主函数流程如图7所示。

3.2 LCD1602液晶显示函数

液晶函数主要功能是将数据信息显示在屏幕上,本系统温湿度数据及相关设置在LCD1602液晶屏上显示。LCD1602液晶屏数据显示示意图如图8所示。

电路设计中是通过PCF8574作为I/O扩展芯片控制液晶屏,LCD1602液晶屏硬件上有DB0-DB78位数据接口,可以设置8位和4位数据接口的工作模式,本系统设置LCD1602采用4位数据端口操作,开启显示并关闭光标显示。定义LCD写命令函数:voidLCD_Write(unsigned char mode, unsigned char cmd),函数内部通过左移位赋值的方式将8位数据转换为两个高4位数据写入LCD,实现4位数据控制的方法。在获取温湿度值后,将温度数据通过字符串显示,保留了2位整数和1位小数部分[7]。

3.3 SHT30温湿度采集函数

温湿度采集函数定义了两个全局变量SHT30-Temperature、SHT30_Humidity,分别存放转换的温度和湿度的值。SHT30在收到单片机读命令后,温湿度数据是以16位的形式传输。为了节省系统资源,将16位的温湿度数据转换为10进制,保留一位小数[8-9]。对于SHT30传感器,这些数据包含了线性化以及温度和电源电压的影响。因此,使用芯片手册中的转换公式可以直接得出相应的温湿度值。

3.4 按键、开关控制电路程序设计

在系统初始化中,将按键I/O口P3.5、P3.6和P3.7设置为上拉准双向口模式。主程序调用按键处理函数Key_Handle()来获取按键值,由于机械按键按下的瞬间会存在抖动现象,所以在检测中延时10ms左右的时间来实现消抖[10-11]。KEY_4为设置选定标志,在开启温度与停止温度之间切换。在选定需要调整的温度后,通过KEY_2和KEY_3来实现启动温度和停止温度的增加或者减少。

定义Set_Handle()的开关控制电路控制函数,获取按键值后进行参数设置,通过比较开启温度与停止温度进行工作模式的自动选择,系统默认开启温度等于停止温度时加热、降温功能关闭。当设置开启温度大于停止温度时,系统进入降温工作模式。当设置开启温度小于停止温度时,系统进入加热工作模式。输出S1、S2信号控制相应继电器。开关控制函数流程如图9所示。

4 系统稳定性测试

系统硬件的调试中,通过程序初始化自检,可检测各项功能是否正常。为了检验温湿度控制器的实用性,进行了相关实验测试。首先作为温湿度传感器,测量需要准确,测试使用其他两款不同型号的传感器进行对比,分别在室内、室外环境中测量实时温湿度,对比结果如表1所示。

通过对比,SHT30传感器在温度上与其他两款误差较小,但湿度相差较大,产生这样的误差一般是和每种传感器的制造工艺及精度有关。如果需要更加精确的测量值,可以通过程序在标准环境下测量并进行温湿度补偿。

将本系统安装并应用于温室植物大棚里,根据多肉植物的生长特点,尤其是在多肉叶插的生长中环境温度尤其重要,需要维持在15℃~28℃之间。将室内温度设置并控制在20℃~25℃,20℃作为开启温度,25℃作为停止温度,0时刻为环境温度。通过该设置选取3种不同功率(10W、12W、15W)的加热器分别做了实验,将时间与温度状态记录如表2所示。

通过表2数据绘制成时间与温度的曲线图如图10所示,得出不同功率的加热器加热时温升斜率基本保持稳定,大功率的加热器可能会导致加热达到设定温度后有残余热量释放出。针对该现象可以根据实际情况调整相应的温度设置或启停时间,同时可以看出温度控制器的整体控制效果在设置的20℃~25℃范围内。

5 结语

基于STC8G1K17单片机设计的温湿度控制器具有一定的实用价值,集温湿度显示、设置显示和控制电路于一体,可以提高工业、农业生产温湿度采集的使用效率。整个系统设计简单、方便、稳定性高,具有自动升温和降温的功能,方便使用者进行参数查验和设置。

参考文献:

[1] 车宇,伟利国,李卓立. 温湿度传感器SHT21在安全储粮监测系统中的应用[J]. 电子产品世界,2013,20(3):36-38,42.

[2] 陈定武,张思扬. STM32单片机的智能水产养殖监测系统[J]. 单片机与嵌入式系统应用,2018,18(8):76-81.

[3] 倪瑞,张万达. 基于AT89S51单片机的温湿度监测与控制系统设计[J]. 自动化与仪表,2019,34(5):53-55.

[4] 蒋礼林. 基于单片机S3C2410的嵌入式温度传感器设计[J]. 现代电子技术,2018,41(10):43-46.

[5] 赵亮. 跟我学51单片机(七)——LCD1602液晶显示模块[J]. 电子制作,2011(7):74-77.

[6] 曾丽丽,李瑞盈,朱齐媛. 基于51单片机的自动恒温控制电路的设计[J]. 山东工业技术,2015(6):36-37.

[7] 林嘉. 基于89S52的LCD1602程序设计[J]. 电脑知识与技术,2012,8(26):6376-6378.

[8] 陈善为,梁美平,王远,等. 基于SHT21传感器的智能加湿器设计[J]. 轻工机械,2015,33(3):96-98,103.

[9] 鲍爱达,张庆志,郭涛,等. 基于FPGA和SHT21传感器的温湿度测量系统的设计[J]. 计算机测量与控制,2012,20(11):2885-2887.

[10] 周茜,马军平. 一种便携式仓储温湿度检测仪的设计[J]. 国外电子测量技术,2013,32(11):45-48.

[11] 杨伟. 单片机按键消抖技术及其扩展应用[J]. 电子测试,2016(3):96-97.