单片机温湿度控制系统设计与实现
摘 要
本温湿度控制系统主要基于单片机进行工作,使用单片机进行温湿度的采集以及在温度湿度超出限制后时作出应对;pc机接收并处理单片机发送的数据,并使用VB软件进行温度湿度数据的记录;lcd液晶则能达到清晰直观显示当前温度湿度和超限温湿度目的。此设计包含了硬件和软件两个部分,充分利用了VB软件简单明了并且拥有强大的数据处理功能的优势,发挥了单片机稳定性高的优点。系统操作简单便捷,同时消耗很低,还能够在较为恶劣的环境下运行,有广泛的运用前景。
关键词:单片机,VB软件,数据采集及处理
1 绪论
温度和湿度是非常重要的物理量,在日常生活中的各个方面都充当了一个不可或缺的角色。因此,对于温湿度的管理与监测是一件很有意义的事情,能够对工业现代化产生深远的影响。
1.1课题研究背景
时代在不断地变化与发展,从前几乎不曾听闻的单片机技术也在我们的日常生活中生根发芽,已经在工业,农业,科技等多方面大放异彩。而其中,温度是各个产业生产中的一个重要作用指标,温度的控制精度还有可能直接影响到产品的最终质量。例如有色金属的冶炼,如果没有控制好温度,可能会导致熔炼不完全,甚至过高的温度会破坏金属的内部结构,最终导致无法制造出理想的产品。机房的温度控制也很重要,因为机房中存在大量的高精度仪器,而温度对仪器的影响是非常巨大的,在高温环境下,电子元器件的寿命会急剧缩短,而环境温度过低是,部分IT设备将会无法运行。还有更重要的就是在医院中病人体温的测量与控制,传统的温度计测量耗费人力物力,而
且收益很小,在体温变化较快的时期无法得到精准的病人温度变化曲线,从而导致病人的病情无法得到有效的控制,甚至有可能造成更严重的后果。而对于湿度的把控也同样重要,在大棚内种植蔬菜就需要精准掌控湿度,合理的湿度环境可以让蔬菜更好的发育。
在生活,工业乃至于科技都需要温湿度的把控,合理的温湿度可以使产品的质量或是零件的寿命达到一个很高的水准。
从以上表述中,我们可以得出这么一个结论:设计出一款可以自动检测温湿度并不断记录数据的仪器是一件非常有意义的事情。而单片机的性价比高,做成的产品元器件很少,并且运用范围较广,所以我决定用单片机来实现此次实验的目标。
1.2温控系统的发展现状
在这个温度控制系统中,单片机担任了一个十分重要的角色,但只有单片机相关方面的知识是远远不够的,想要实现一个同时具有温度检测和曲线绘制的系统,还需要其他部件的配合来加以实现。具体的实现方案将在后文中具体提及。
最早期的温控系统在国外出现,是一种模拟式的温度组合仪器,工作原理是对温度进行初步的采集,再进行分析与数据的处理,最后得出方案,从而达到温度控制的目的。而随着技术的不断改进,分布式的温控系统出现。而现在有些国家已经实现了自动化的温度测量与控制技术。
我国的温控系统发展较慢,在发达国家的激励与推动以及国内逐渐增长的需求下,我国发愤图强,努力学习他国的技术,并取其精华去其糟粕,最终掌握了温度室微机控制技术,但这种技术存在的缺陷还有很多,实现的功能也较为单一。我国的温度测量与控制技术的发展任重而道远。
现在的温度测控系统一般是朝以下几个方面发展的:
(1)系统需要进行实施的监控,并且需要对得出的数据进行准确有效的分析,从而得出最佳方案。同时应用技术要实现网络化多元化,让更多人参与其中。
(2)要研制高效的温度测量仪器,性能与成本兼顾的传感器。
(3)保证测量现场的安全性,进一步提高维护水平。
(4)从上述内容可以看出,我国的温控系统发展还处于不容乐观的程度,这也意味着我国温控系统的发展空间很大,我们应该虚心学习他国的先进技术并加以改进和创造,从而成功发展出属于我国自己的温控技术。
现代的温室环境监控系统的发展日新月异,设计出一个高效低成本的温湿度控制系统是一件非常有意义的事情,由于现在的单片机发展十分迅速,并且拥有小体积,方便携带的特点,这为我们的设计提供了基础。
1.3课题研究内容及实现目标
本文研究内容如下:设计出一种基于单片机的温湿度控制系统,通过串口与pc进行通信,最后通过visual basic进行图线的绘制。
实现目标如下:
(1)通过VB记录温湿度数据
(2)实现较大范围以及较高精度的温度测量,尽其所能降低成本消耗
(3)实现下位机与pc上位机进行串口通信
(4)当温湿度超出或低于所设置的上下限时,通过由继电器控制的外部设备进行相应的加温加湿以及降温降湿。
2 温湿度控制系统总体方案的设计
设计方案决定了系统各个硬件之间的联系与所在的位置上,从而决定软件如何去编写并实现。接下来将介绍系统总体方案的设计。
2.1 总体方案设计
首先要进行液晶显示屏的选择,LCD1602是市场上一种较为普遍应用的液晶显示屏,它的屏幕对于字符的显示较为清晰,同时耗能较低,携带起来也比较方便。在温湿度控制系统中,温湿度传感器是不可或缺的一部分,因此传感器的选择至关重要。DH11温湿度传感器拥有专用的数据采集技术以及温湿度传感技术。品质良好,抗干扰能力极强,并且价格也很便宜,即使当前的环境状况较
差,也能很好地工作。
底层总线由stc89c51单片机进行控制,单片机的作用是对发出信号给DHT11温湿度传感器,要求其测量周边的温度和湿度,并且接收其测量的数据。在接收到数据以后,通过通信串口与pc端进行实时通信。由于rs232的信号线较少、波特率选择比较灵活、采用负逻辑传送和传送距离为15m左右,完全可以达成系统的要求,因此选择RS-232标准作为串行数据通信的物理层协议。但由于单片机的电平略有不同,因此需要Max232的帮助,即通过Max232实现改变电平的作用。
系统的总体结构框图如下:
图1:系统总体结构框图
Visual basic能够清晰直观地显示出当前的温湿度数据,同时程序的设计较为适合初学者使用。因此,pc端采用vb软件,实现显示温湿度的功能。
3 系统硬件设计方案
3.1系统总体构成框图
系统总体构成框图如下:
图2:系统总体构成框图
购买的零件清单如下:
1)915万用板
2)57万用板
3)stc89c52
4)40IC座
5)MAX232芯片
6)16p IC座
7)104独石电容5
8)排针8
9)杜邦线4
10)串口线(蓝)
11)DC9母头
12)1602液晶
13)母座16
14)排针16
15)103排阻
16)30pf电容2
17)10uf电容
18)11.0592m晶振
19)24c02
20)8脚IC座
21)DHT11
22)圆孔母座4
23)10k电阻5
24)1k电阻4
25)2.2k电阻5
26)1.5k电阻
27)90125
28)继电器4(黄)
29)蜂鸣器
30)风扇
31)3p排针
32)4148二极管4
33)2p接线端子4
34)小灯4(红、黄)
35)按键3
36)拨动开关
37)自锁开关
38)DC座
39)焊锡若干
40)导线若干
41)usb电源
3.2模块设计
3.2.1 单片机的发展历程
(1)第一阶段是芯片化的探索阶段 上个世纪的70年代,美国的仙童公司首先推出了世界上的第一款单片机F-8,而Intel公司则随后推出了功能更加完善,同时影响更加深远的MCS-48单片机系列。
(2)第二阶段是不断完善结构体系,功能不断发展的阶段。Intel公司在仔细研究了自己制作出的第一代单片机后推陈出新,推出了更加完善的MCS-51单片机,这一款单片机相较于前一代单片机拥有更加完善的系统结构和指令系统。
(3)第三阶段中单片机不断发展,逐渐进入微控制器阶段。
(4)第四阶段中单片机逐渐在社会生活中的各个领域中扮演重要的角色。出现了一系列各具特色的现代单片机。
单片机是一个集合了各种精密元件的集成电路芯片,在当今的工业,电子技术行业有着举足轻重的地位。在各类计算机或精密仪器中引入单片机,可以使它们的体积更加小巧,处理速度不断提高,甚至可以使仪器更加智能化地处理各种复杂问题,同时降低各种成本。
3.2.2 stc89c51单片机
stc89c51单片机实物图如下图所示:
图3:stc89c51单片机
stc89c51单片机内含有Flash程序存储器、SRAM、UART、SPI、A\D、PWM等多种模块。并且该单片机的功能可以和普通的51单片机进行兼容。
主要功能、性能参数
1.内置尺度51内核,机器周期:为6时钟,普通型为12时钟;
2.工作频率范围: 0~40MHZ,相当于普通8051的两倍范围;
3. STC89C5xRC对应FIash空间: 4KB\8KB\15KB;
4.外部存储器(RAM): 512B;
5.定时器\计数器: 3个16位;
6.通用异步通信口(UART) 1个;
7.中断源:8个;
8.有ISP(在系统可编程) \IAP(在应用可编程),简单便捷;
9.通用I\O口: 32\36个;
10.工作电压: 3.8 5.5V;
11.外形封装:40脚PDIP、44脚PLCC和PQFP等
stc89c51引脚图如下:
图4:stc89c51单片机引脚图
3.3温湿度传感器DHT11
DHT11实物图如下图所示:
图5:温湿度传感器DHT11
3.3.1 DHT11性能简介
DHT11温湿度传感器的数字信号输出是已经经过校准了的,它应用了专用的数据采集技术以及温湿度传感技术。品质良好,抗干扰能力极强,并且价格也很便宜,即使当前的环境状况较差,也能很好地工作。而且可以根据用户的需求你灵活地调整封装形式,非常适用于本系统的设计。
3.3.2 DHT11特性介绍
(1)电气特性
图:DHT11的电气特性
(2)通信过程
通信过程如下图所示:
图:通信过程
如果超出了设备表明的工作条件,可能会出现百分之三左右的相对湿度误差,但在回到正常工作状态以后,误差将会逐渐消失。
如果将设备暴露在高浓度的化学物质下,传感器很有可能损坏,在规定的环境下保持一定的时间,设备即可自动恢复为最初的状态。设备不能长时间暴露在太阳光或紫外线的照射下。在测量湿度的时候,尽可能的保证传感器在同一温度下工作。
3.4.1特性及使用说明
(1)LCD的引脚定义如下图所示:
引脚号 引脚名 电平 输入/输出 作用
1 Vss 电源地
2 Vcc 电源(+5V)
3 Vee 对比调整电压
4 RS 0/1 输入 0:输入指令
1:输入数据
5 R/W 0/1 输入 0:向LCD写入指令或数据
1:从LCD读取信息
6 E 1,1 0 输入 使能信号,1时读取信息,
下降沿执行命令
7 DB0 0/1 输入/输出 数据总线line0
8 DB1 0/1 输入/输出 数据总线line1
9 DB2 0/1 输入/输出 数据总线line2
10 DB3 0/1 输入/输出 数据总线line3
11 DB4 0/1 输入/输出 数据总线line4
12 DB5 0/1 输入/输出 数据总线line5
13 DB6 0/1 输入/输出 数据总线line6
14 DB7 0/1 输入/输出 数据总线line7
15 A +Vcc LCD背光电源正极
16 K 接地 LCD背光电源负极
表1:LCD引脚定义
(2)基本操作
读状态:输入RS=0,RW=1,E=高脉冲。
读数据:输入RS=1,RW=1,E=高脉冲。
写指令:输入RS=0,RW=0,E=低脉冲。D0—D7为指令码。
写数据:输入RS=1,RW=0,E=低脉冲。D0—D7为数据。
3.4.2 LCD1602的接口电路
图21:LCD1602接口电路图
LCD1602的3脚采集了一个电压信号,这个电压的采集依靠了两个串联的电阻R5和R6,这两个电阻起到了分压的作用,中间会输出一个电压值。R5的阻值选取尤为重要,如果阻值选取不当,有可能会出现液晶屏上的数据显示模糊甚至没有显示数据的情况。
3.5 串行通信电路和RS232总线
3.5.1 串行通行电路的概念
计算机通信有两种不同的方式,它们分别是串行通信和并行通信。而串行通信的传输线比较少,如果传输的距离比较长,那么串行通信的性价比就会更高一些。而串行通信又分为异步通信和同步通信两个方面。
先介绍异步通信,异步通信指发出信号和接收信号的两个装置是使用各自的时钟进行信号的传递。异步通信的传输的单位是一个个的字符,并且字符之间的空隙是不固定的的,但由于字符需要把一定的空间用在起止符上,还要考虑到各帧之间的空隔,综上所述,异步通信的传输效率较低。
而同步通信指发送方要将收到信息的那一方的时钟完全控制,使两者实现同步。并且还要保证字符之间不存在任何空隙,因此同步通信的传输效率较高。帧是一个字符的通信格式,它由四部分组成,分别是:起始位、数据位、奇偶校验位和停止位。
起始位位于帧的开头,始终保持低电平,表示发送端开始发送信息。而数据位则位于起始位之后,stc89c51单片机采用8位或9位数据进行传送信息。在传送数据时,从最低的有效位开始传送。而奇偶校验位的作用是对数据的正确与否做检查,由用户决定奇偶校验位的三种不同选择:即奇校验、偶校验和无校验。停止位则位于末尾,始终保持高电平。
串行通信的传送方式可以分为三种:单工、全双工和半双工。
单工需要的材料较少,固定由其中一方发出信息给另外一方。而全双工比起单工则更为自由一些,双方都可以发出信息给对方。但需要记住的是,无论何时,某一方发出了信息,另一方就只能被动地接收消息了,等到二者通信结束才可以交换。并且这种传送方式还有一个巨大的缺点,效率实在太低,需要的时间太长,如果系统要求过高,这种传送方式是不能被接受的。于是出现全双工这种传送方式,它取其精华去其糟粕,在方便的同时还拥有了极高的效率,因此在本系统中被采用。
3.5.2串行通信电路图
串行通信电路图如下图所示:
由于单片机提供的信号电平和RS232的标准不一样,因此要通过max232芯片进行电平转换。接电容是为了起到信号稳定的作用。其中rs232的2脚RXD,3脚TXD,5脚GND分别与MAX232的14脚T1OUT,13脚R1IN,15脚GND相连。这是一种三线制连接串口的手法,这种手法较为简单,但完全可以实现系统的目标。
Rs232是常用的串行通信接口标准之一。它的信号线较少,并且可以灵活的进行波特率选择,最重要的是采用负逻辑传送,这样就可以起到抗干扰能力强,增大通讯距离的优点。
其引脚图及引脚定义如下图所示:
3.5.4 Rs232的机械特性
由于RS-232C没有定义连接器的物理特性,所以出现了各种类型的连接器,例如DB-25、DB-15和DB-9。而在本系统中则采用了DB-9,通过三线制连接串口的手法实现了两个通信装置的连接。
3.5.5 Rs232的电气特性
由上图可以得知rs232的工作电压为5到15V和-15到5V这两个区间,而TTL的电平标准一般都是5V和3.3V,二者无法相互匹配。但rs232的工作电压又已经超过了Max232的供电电压,所以Max232的内部的两个特殊电路起到了至关重要的作用。首先其中一个可以和电容组成一个提升电压的电路,从而将电源电压提升至原来的两倍,即10V,而另外一个可以和电容组成一个反转电压的电路,从而将10V的电压变为-10V。这样就成功达到了rs232的工作要求。
3.6 24c02
3.6.1 24c02性能介绍
(1)工作电压范围较大
(2)采用了先进的低电压技术,耗能少且较为安全
(3)保存数据的时间极长,可达到100年
(4)拥有写保护的功能
(5)自定时擦写周期
该器件通过I2C总线接口进行全部的功能操作,还拥有一个特别的写保护功能,
管脚配置及其定义如下图所示:
3.6.2 24c02的设备操作
在任何操作开始前都必须有一个信号,SCL为高时,SDA将会产生一个下降沿,这就是开始状态。
而当SDA产生一个上升沿时,设备就会停止工作,这是停止状态。
3.6.3 总线的基本操作
I2C总线是一种简单、双向的二线制同步串行总线,将两根线连接在器件上即可实现信息的传输。
首先是字节的控制操作,最高的四位是器件类型识别符,接着三位为片选,最后一位为读写位。
写操作可以分为字节写和页写两部分,而这里重点介绍一下特别的写保护功能。当用户不小心出现了操作不当的行为,整个寄存区都会被保护起来并变成只可读取的状态,装置在接收到第一个字节后不会再发送应答信号,从而避免存储区域的数据被改写。读操作有立即地址读,选择读和连续读。
3.6.4 EEPROM存储器电路
温湿度阈值存储在EEPROM芯片AT24C02中,并且可以通过四个按键来进行温湿度上限的调整。
3.6 蜂鸣器报警模块
蜂鸣器报警模块采用了9012PNP三级管,这一个模块利用了三极管的开关作用。这个三极管是低电平有效,当单片机输入一个低电平的时候,三极管就会被导通,蜂鸣器报警。导通的时候,电流会从电源经过三极管,经过蜂鸣器,最后回到地。
3.7 继电器驱动模块
继电器驱动模块电路图如下图所示:
图28:继电器连接电路图
当单片机输出低电平的时候,继电器线圈中会有电流通过,由于LED灯和继电器是并联的关系,当衔铁被吸合的时候,LED灯也会被点亮。由于LED灯的工作电压是3V,而系统的供电是5V,如果直接连接,可能会造成危险事故,所以必须要串联一个分压电阻。此二极管是一个续流二极管,因为当继电器断开的时候会出现一个反向的电动势,此时的二极管就可以起到一个保护的作用。同时利用继电器还可以为此系统添加不同的功能,只要在电路上串联不同的元件即可,本系统添加了抽湿机、加热器、制冷器、加湿器等外设,可以起到加热加湿降温降湿的作用。
3.8 电源供电模块
此模块由dc电源接口和自锁开关组成2、3脚接地,1脚实际是VCC(电源),但是电路中要接蓝色的自锁开关,然后开关的另一个脚再接电源从而实现供电。电压的大小是5v。
4 软件设计
4.1 stc89c51单片机软件设计
stc89c51单片机的程序包含了系统和液晶的初始化部分,温度数据的采集与测量部分,接收PC上位机的信号联络部分以及将数据发送给上位机的部分。
程序流程图如下图所示:
图30:程序流程图
4.2 基于visual basic的PC上位机程序设计
4.2.1 visual basic的基本介绍
Visual basic由微软公司开发,是一款非常通用的基于对象的程序设计语言。十分适用于初学者。首先,Visual basic拥有可以轻松建立程序的图形用户界面(即GUI)系统,并且可以开发出较为复杂的应用程序。相比较于其他程序开发软件,它拥有以下几个优点:
(1)在使用传统程序开发工具时,应用程序的界面外观一般都需要通过编程来实现,而VB则免去了这些步骤,程序员可以通过VB内置的工具箱在需要开发的程序上画出自己想要的各种图标、菜单,非常方便,大大提高了效率。
(2)VB软件拥有非常丰富的函数和数据类型。并且采用了basic语言,这款语言适用于没有程序开发经验的新手,却也可以开发出较为复杂的应用程序。
(3)一般而言,面对过程的程序需要开发者确定整个程序的执行顺序,由主程序开始,逐步调用子程序和函数,一旦出现差错就要重新开始修改程序。而在VB中,每一个事件都可以驱动程序的运行,编程员可以通过编写响应于客户动作的代码来实现程序的运行。这一种方式更加方便了程序的维护和修改。
(4)提供了向导,利用VB中的向导,编程者可以轻松完成一些简单的任务。
完成后的程序如下图所示:
图31:程序界面
5 系统调试
系统的调试首先需要检查电路的焊接是否正确。电路的焊接有可能会出现一下问题:
(1)锡点太大,容易短路,短路之后很难分开,然后就越来越乱。
(2)铜丝裸露太多,很容易碰到旁边的焊盘。
(3)线虚焊,没有实际焊上,只接上了一点,稍微用一点力就可以把铜丝抽出来。
锡点短路。
(4)线短路,焊接的时候,很容易将线皮烫化,将铜丝搭在一起。
(5)线过长,经常晃动,很容易断掉。
(6)为了保证不出现以上的问题,常常需要万用表进行电路的检测。将万用表的一段接在电源端或地,而另一端接在需要测试的地方,如果指针指向0刻度,那么就说明电路是导通的。
第二步就是进行软件的调试,使用用Keil C编译器进行调试。当系统调试完之后,正式开始实验。
首先要将上位机和下位机连接好。将5v的供电线和蓝色的串口线都连接到电脑上,打开自锁开关。接着打开上位机界面,选择合适的COM端口,点击打开串口。可以看到液晶屏幕上显示出了当前的温度和湿度。按下旁边的按键即可对温度上下限进行调整,如下图所示。第一个按键是设置,第二个是增加数值,第三个是减少数值,而最后一个则是确认的意思。
当环境温室度处于设置的温湿度范围内时,屏幕上会显示Good environment。
但当温度超过上限时,则会显示Its very hot,同时第一个继电器运转,led灯被点亮,蜂鸣器报警,并且小电扇开始转动。如图所示。
当温度低于下限时,则会显示Its very cold,同时第二个继电器运转,led灯被点亮,蜂鸣器报警,并且加热片开始工作,用手轻微触碰可以明显感觉加热片发烫。
当湿度低于上限时,则会显示Its very humid,同时第三个继电器运转,led灯被点亮,蜂鸣器报警,并且小电扇开始工作,可以起到一个除湿的作用。
图36:过湿
当温度超过上限时,则会显示Its very dry,同时第三个继电器运转,led灯被点亮,蜂鸣器报警,并且加湿器开始工作。可以看见加湿器中喷出水雾。
图37:过干
当温度过高和湿度过高这两个条件同时达成时,则会显示hot and humid,两个继电器同时开始工作,如图所示。其他状况同理。
图38:过热过湿
由于实验的环境可能无法达到需要的目的,因此通过直接调节温湿度上下限来达成实验目的。
将下位机与上位机通过串口线连接,打开vb进行调试,可以看到电脑上清晰呈现当前的温湿度数据以及温湿度上下限的数据,同时可以看到继电器控制的外部设备的开启与关闭。如下图所示。
6 结论与心得
通过本次的系统设计,我感悟并且学习到了许多。单片机的学问是非常高深的,短短几个月的学习根本不足以让我探究其奥秘,但也在很大程度上拓宽了我的思维认知与创新能力。我相信这次实验会为我今后的学习产生深远的影响。
我所书写的系统利用了比较新型的stc89c51单片机,并结合了对于我这种初学者而言较为友好的visual basic软件。此系统在完成其功能上相对做到了极致。
首先温度传感器对于温湿度的测量非常到位,pc上位机显示出的温湿度数据非常清晰明了。
我觉得本系统的成功在硬件的选择上是至关重要的。
首先就是温湿度传感器的选择,在众多的温度传感器中选择了性价比较高的DHT11传感器。其次是单片机与液晶
屏的选择,它们的优点也在前文中得到论述。
同时本系统还拥有拓展功能的可能性,在原有的基础上稍加改变即可实现更多的功能。
在对本系统的不断反思中,我意识到了自己还有诸多不足,电路的焊接中也出现了不少问题。编程的语言也有不少小错。但我相信这次实验依旧是我学习生涯中重要的一步。
作者:QQ1694456187