微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于单片机的温湿度检测与控制系统研究

基于单片机的温湿度检测与控制系统研究

时间:01-07 来源:互联网 点击:

引言

温、湿度是工业生产中常见的被控参数,温度和湿度己不再是相互独立的量,而应在系统集成中综合考虑。利用单片机对温、湿度控制,具有控温、湿精度高、功能强、体积小、价格低,简单灵活等优点,很好的满足了工艺要求。本文介绍了利用AT89C51单片机进行温度和湿度的检测及其控制的智能化方法。

1系统的硬件结构及工作原理

工业中很多装置温度和湿度需要保持在一个既定的温度和湿度值上,本文针对实际需要,设计了一套温度、湿度闭环检测与控制系统,系统整个硬件结构如图1:

图1 系统硬件结构图

系统的工作中,经过温度、湿度检测及变换电路把被测对象的温度、湿度转换成电压信号,该电压信号经A/D变换器转换为数字信号后送入单片机中,与给定的对应所要控制的多组温度、湿度值进行比较,找出现温度、湿度值所在范围,根据单片机AT89C51中设置的PID参数,输出相应温度、湿度初值对应的受控对象电机的转速初值,经D/A转换器转换为模拟电压,通过信号转化为变频器的频率,控制变频调速装置,带动被控对象,并且把被控对象的转速经变换电路和A/D转换器反馈到单片机中,与输出的转速初值进行比较,其偏差被PID程序计算出后重新输出,在规定的时间内循环,从而实现对温度、湿度的控制 [1],直到达到在误差允许的范围内输出的转速值与转速初值相等。对于欠温度,控制加热功率;对于过温度,控制吹风冷却装置,对于湿度则控制一个加湿、去湿装置[2]

2硬件系统的组成

2.1温度传感器的选择[3]

本系统采用美国DALLAS公司生产的单总线数字式温度传感器DS18B20,由于具有结构简单不需要外接电路,可用一根I/0数据线既供电又传输数据,并且具有体积小,分辨率高,转换快等优点,被广泛用于测量和控制温度的地方。

2.2湿度传感器的选择

本系统采用的是电容式湿敏传感器HS1101,电容式湿度传感器的感湿机理是当基于电极间的感湿材料吸附环境中的水分时,其介电常数也随之变化,其电容量与环境中水蒸汽相对压(PV/P}关系可由下式表示:

电容式湿度传感器实用化程度高,工艺成熟,性能稳定,普遍用于各种情况下湿度测量。

2.3主控模块单片机的选择[4]

本系统单片机选用ATMEL公司的闪速存储器(flash ROM)型单片机芯片AT89C51。AT89C51是ATMEL公司的新一代8位的一片机产品,带有4KROM、128BRAM,最大工作频率24MHZ,同时,具有32条输入输出线,16位定时/计数器,5个中断源,一个串行口;它具有集成度高、系统结构简单,体积小可靠性高,处理功能强,速度快等特点。

2.4A/D芯片的选择

本系统采用Ti公司的串行A/D芯片TLC2543,A/D转换电路作为TLC2543与单片机的接口电路,它是一种利用12位开关电容逐次逼近模拟信号的模数转换器,片内有14位通道。具有12位分辨率A/D转换口,在标定转换温度范围内转换时间为10us,输出数据长度可编程,TLC2543自带采样、保持电路。所以输出引脚可以直接与单片机的并行I/0口连接。

2.5D/A芯片的选择

本系统采用带有缓冲基准输入的10位电压输出数据的模拟转换器TLC5615,D/A转换电路作为TLC5615与单片机的接口电路,它具有基准电压两倍的输出电压范围。通过3线串行总线和工业标准的微处理器和微控制器接口,接收16位数据字以产生模拟输出。

2.6报警电路简介

本设计的报警电路由一个自我震荡刑的蜂鸣器,只要在蜂鸣器两端加上超过3v的电压,蜂鸣器就会叫个不停和一个发光二极管组成。设计中蜂鸣器是通过ULN 2003达林顿管芯片电流放大IC来控制。在要求的温度、湿度达到一定的上界或者下界时,报警电路开始工作。

2.7温度、湿度显示电路

本设计中用4个LED组成显示单元,采用静态显示方式。如图2所示,

图2 温、湿度显示模块图

AT89C51通过2-4译码器对4只MC14495芯片进行控制。MC14495的输出端与LED数码管的7段a,b,c,d,e,f,g相连。MC14495芯片的作用是输入被显示字符的二进制码(或BCD码),井把他自动转换成相应的字形码,送给LED显示。

图2中,4个输出端口用于输出显示字符的二进制码 (或BCD码)。1个输出端口用于控制2-4译码器工作,还有2个输出口经译码器输出后控制哪一片MC14495显示输出,从而直观的看出温度、湿度经过闭环调节之后的效果值。如我们假定温度上限、下限为50,0,湿度为70,30。我们可根据现场检测直观的显示温、湿度值,超出系统将做报警处理。程序简单思路如下[5]

#includeiostream.h>

Void main( ){ int a,b,c,d,e,f,g,g;//设置检测点a,b用来检测温度上下限,c,d检测湿度上下限,e,f,g,h对应显示温度与湿度的测量值。

If(a>0a5c>3c7)//如果温度、湿度都在我

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top