基于单片机的温湿度检测电路_第1页
基于单片机的温湿度检测电路_第2页
基于单片机的温湿度检测电路_第3页
基于单片机的温湿度检测电路_第4页
基于单片机的温湿度检测电路_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

“温湿度传感器”作品简介作品名称:基于51单片机的温湿度检测电路 目 录1、 作品名称(3)2、 作品简介及其功能(3)3、 电路设计思路及其硬件的选择(3)4、 电路的设计与成型(3)4.1供电部分(3)4.2微控制器部分(4)4.3测温部分(4)4.4测湿部分(5)4.5报警部分(5)4.6键盘部分(5)4.7显示部分(6)4.8整体电路及其PCB板(6)5、电路软件的设计(7)5.1温度部分(7)5.2湿度部分(8)5.3液晶显示部分(9)5.4主程序(10)6、所思所感(11)7、参考文献(11)1、作品名称:基于单片机的温湿度检测电路2、作品简介及其功能:随着工业自动化的愈趋完善,各种各样的传感器被用在了各式各样的场合。而温度和湿度这两个重要的参数成为了实现过程控制自动化必不可少的过程。换言之,问题具体化为了选择怎样的传感器及如何去检测温湿度的变化,并根据检测结果调整系统以使之保持在最佳工作状态。本电路即是用来检测环境温度及湿度的情况并实时显示及作出处理的。虽然原理很简单却可靠实用。下面将给出详细描述。 3、电路设计思路及其硬件的选择 先说测温部分。 考虑到测温方案有很多种,包括电阻式测温、热电偶测温等等。而由于外界诸多因素的变化,由分立元件所搭建的电路会受到各种各样的干扰而导致测量结果的偏差,比如电阻会因温度升高而阻值降低,三极管在发热状态下基极电流会升高等等。这会带来测量误差,从而导致一系列负面响应。考虑到这些问题,方案最终被定在了集成温度测量传感器DS18B20上。 DS18B20是美国DALLAS公司生产的集成温度传感器。它将测温、处理及输入输出等模拟+数字电路集成在一块形似三极管的三端芯片上,体积小巧、功能强大,且数据的输入输出只需要一跟端口线,并且可在一根总线上并联多个芯片以实现多点测温。用之与单片机结合简直是温度检测的不二选择。 再说湿度检测部分。 湿度检测部分也有许多方案可供选择,同样也有集成湿度检测元件。但考虑到其价格及普遍使用程度,最后放弃了集成元件的方案,改用分立式的电容测湿电路。本电路在工业上使用普遍且方案成熟,不失为可行方法之一。 控制器方面,自然是使用STC89C52了,实惠够用。 辅助部分有键盘部分和显示部分,会在后面有详细的介绍。4、电路的设计与成型:4.1供电部分: 电路图如图4.1.1所示。 图4.1.1 电源电路 考虑到取电源的方便性,电路的电源部分采取了标准9V电源接口引入然后用LM7805集成稳压芯片稳压输出稳定5V电压的方案。这种方案最大的好处是节省电源部分的体积,缺点则是无法透彻理解电源稳压的原理及实现方法。 4.2微控制器部分:微控制器电路图如图4.2.1所示: 图4.2.1 微控制器电路微控制器为通用的51单片机系统,简单明了。4.3测温部分: 温度检测电路如图4.3.1所示。 如图所示,集成温度传感器的数据接口 直接与单片机的P2.5口相连,且需要加一个10K的上拉电阻。图4.3.1 测温电路4.4测湿部分:测湿电路图如图4.4.1所示。由于测湿传感器是采用的电容式测湿传感器,故对湿度的测量转变为了对变化电容的容值检测。检测容值的有效方案首选由555芯片组成的多谐振荡器,如右图所示。 如图,当电路通电时,电容HS0001被充电。当触发端2脚的电压上升到2*VCC5/3 图4.4.1 测湿电路时,输出端3变为低电平,同时电容通过7脚放电,2脚电平下降;当2脚电平下降到VCC5/3时,输出端3脚转变为高电平。电容HS0001放电所需时间为:Td=RH4*CHS0001*2 当放电结束时,VCC5将通过RH3、RH4向电容HS0001充电。2脚电压由VCC5/3上升到2*VCC5/3所需的时间为:Tu=(RH4+RH3)*CHS0001*2 当3脚上升到2*VCC5/3时,电路又翻转为低电平。如此周而复始,就在电路的输出端3脚得到一个周期性的矩形波,通过单片机的外部中断口可以检测这个矩形波并得到其频率,频率的计算公式如下:f=1/(Td+Tu)=1/(2*RH4+RH3)* CHS0001*2 进而得到电容值的计算公式:CHS0001=1/(2*RH4+RH3)*f*2 这样就能得到测湿电容CHS0001的电容值并与湿度一一对应起来了。4.5报警部分:报警部分如图4.5.1所示。当温度或者湿度超过设定值时,单片机会控制蜂鸣器发声报警。电路中的三极管9012当做开关管使用,给低电平就导通。 图 图4.5.1 报警电路4.6键盘部分:键盘部分如图4.6.1所示。由于整体电路不需要很多按键,所以用不到矩阵键盘的方案。单片机只需要检测哪个按键有了低电平,即可确定哪个按键被按下了。图图4.6.1 按键电路4.7显示部分:显示部分如图4.7.1所示。本电路采用了1602液晶显示,接口简单,控制方便。由于本电路占用单片机的I/O口并不多,所以采用了并行接口方式。图4.7.1 液晶显示电路4.8整体电路及其PCB板:整体电路如图4.8.1所示:图4.8.1 整体电路PCB图如图4.8.2所示:图4.8.2 PCB印制板图5、电路软件的设计:5.1温度部分:用单片机控制DS18B20非常方便。先对之进行初始化,之后就能从其中读出数据了。以下是程序。/初始化程序段void init_18B20(void) reset_18B20();/总线复位 wbyte_18B20(0xcc);/忽略检查ROM匹配操作 wbyte_18B20(0x4e);/设置写模式(写暂存器) /*wbyte_18B20(0x21);/设置温度上限为33【设置则精度只能是0.5】 wbyte_18B20(0x1c);/设置最低温度为28*/ wbyte_18B20(0x1f);/写温度计配置寄存器/数据提取程序段uint getdat_18B20()float c;uint temp;uchar h,l;conv_18B20();reset_18B20();delay_18B20(1);/稍作延时wbyte_18B20(0xcc);wbyte_18B20(0xbe);/发送读取温度数据的命令l=rbyte_18B20();/读取低8位h=rbyte_18B20();/读取高8位flag_18B20=h&0x80;if(flag_18B20) /最高位为1,温度为负temp=h;temp=temp8;/读取的高8位数据装在temp高8位temp=temp|l;temp=temp+1;c=temp*0.0625;temp=c*100+0.5;elsetemp=h;temp=temp8;temp=temp|l;c=temp*0.0625;temp=c*100+0.5;return(temp); /温度整数部分2位,小数部分2位5.2湿度部分:由于需要检测的信号是一定频率的方波,所以最佳检测方案莫过于用单片机的计数器在一定时间内进行计数,进而计算出其频率。其函数如下所示。/初始化程序段,用于对外部中断0和定时器0进行初始化设置void init_freq()TMOD=0x02;TH0=56;TL0=56;/定时器0,计时中断一次为200usEA=1; ET0=1;EX0=1;/开外部中断0 IT0=1;/跳变沿触发方式 (“0”为低电平触发方式)TR0=1;/中断程序段void EX0_int()interrupt 0 num+;void T0_timer0()interrupt 1 time+; if(time=500)/200us*500=100ms,此乃100ms的定时 EX0=0;/先把外部中断关掉TR0=0;/再把定时器关掉time=0;/记得复位,很重要display_freq();num=0;/同时把中断计数清零TR0=1;/开启定时EX0=1;/开启外部中断5.3液晶显示部分:液晶显示部分已经是固化程序了,程序如下:/初始化void init_1602()en_1602=0;wcom_1602(0x38);/数据总线8位,显示两行5*7点阵/字wcom_1602(0x0c);/开显示功能,且光标不显示,不闪烁wcom_1602(0x06);/写入一个字后光标后移,且屏幕不移动/显示程序void wcom_1602(uchar c)rw_1602=0;rs_1602=0;P0=c;en_1602=0;delay_1602(2);en_1602=1;delay_1602(2);en_1602=0;void wdat_1602(uchar d)rw_1602=0;rs_1602=1;P0=d;en_1602=0;delay_1602(2);en_1602=1;delay_1602(2);en_1602=0;void wsingle_1602(uchar hang,uchar lie,uchar dat)uchar k;if(hang=1)k=0x80;if(hang=2)k=0xc0;k=k+lie-1;wcom_1602(k);wdat_1602(dat);void wstring_1602(uchar hang,uchar lie,uchar *dat)uchar k;uchar *p=dat;if(hang=1)k=0x80;if(hang=2)k=0xc0;k=k+lie-1;wcom_1602(k);while(*p!=0)wdat_1602(*p);p+;p=0;5.4主程序:为了简化主程序,使用了头文件包含的形式,这样主程序看起来干净多了:#include#include#includevoid main()init_1602();init_18B20();init_freq();while(1);6、所思所感:说实话,其实以前已经分别做过了温度和湿度的检测电路,这次只不过把它们俩整合起来而已,可以说是驾轻就熟,较为顺利。通过这次制作,我强化了PCB板的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论