储藏室温湿度监测系统_第1页
储藏室温湿度监测系统_第2页
储藏室温湿度监测系统_第3页
储藏室温湿度监测系统_第4页
储藏室温湿度监测系统_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、“计算机控制系统”课程设计报告题 目 储藏室温湿度监测系统姓 名 2013/1/16目录一、项目背景3二、总体方案31、系统结构框图32、系统工作流程3三、传感器及其它器件选择41、温度传感器的选择42、湿度传感器53、数码管选择74、AD及运放85、串口通信96、其它9四、程序模块设计101.AD采样程序102.定时器初始化程序113.外部中断初始化程序114.外部中断服务程序115.定时器中断服务程序126.数码管显示程序127.延时1ms程序138.串口通信程序139.主程序14五、调试要点151、蜂鸣器调试:152、运算放大器调试:163、软件调试:16六、总结16七、参考文献16一、

2、 项目背景一般情况下储藏室内的温度及湿度等需要保持在一定的范围之内,尤其对于那些食物、粮食等需要进行生命活动的被储藏对象来说,维持温湿度的相对恒定尤为重要。当温度或湿度偏离正常范围一定程度时,它们可能进行无氧呼吸甚至生长等,使得质量无法保障,达不到储藏的目的。所以,我们设计了一个储藏室的温湿度监测系统。当温度超过30或者相对湿度超过80%时报警,提醒仓库管理员进行通风降温等。二、 总体方案为了实现设计的要求需要我们以单片机为控制核心,并利用热敏传感器测量环境的温度,利用湿敏传感器测量周围环境中的湿度;传感器的输出信号经过运算放大器的放大后经过单片机内置AD的采样输入到控制系统,控制系统根据采得

3、的数据经过分析,将控制信号通过IO口输出,控制数码管将相应的数据显示出来,当采得的数据达到设定的阈值时通过IO口输出控制信号,经过驱动电路的放大,驱动蜂鸣器发出声音报警。1、 系统结构框图2、 系统工作流程三、 传感器及其它器件选择该系统中需要用到两种传感器:温度传感器及湿度传感器,另外由于显示及报警的要求,还需要用到数码管及蜂鸣器等器件。1、 温度传感器的选择常用的温度传感器有热敏电阻器、铂电阻、热电偶等,其中热敏电阻通常具有负温度系数。并且不能太高的温度下使用,其测量范围一般为-100300。热敏电阻的阻值与温度的关系如右图所示:热敏电阻也有多重类型,如,批量生产可降低成本的通用型热敏电阻

4、器,热响应速度非常快的热敏电阻器,可在高温下使用的热敏电阻器,分散性小的高精度热敏电阻器等,电阻-温度特性呈线性变化的线性热敏电阻器,自动组装中不可缺少的片热式热敏电阻器,利用其自身加热的自加热型热敏电阻器。在本项目中,需要测量的温度测量误差不大于1,测量范围在30以下。根据测量要求,可以知道热敏电阻中的线性热敏电阻及通用型热敏电阻等。其中通用型热敏电阻测量的温度上限为100,适合本系统的测量要求,并且价格便宜。上图所示的热敏电阻器的电阻值变化与温度的特性不是线性关系。但是,通过对热敏电阻器增加串联电阻或者并联电阻的方法可以实现线性化,不过灵敏度会下降,在50的温度跨度内,可以讲非线性误差控制

5、在0.1以下,可以满足本项目的要求。铂电阻是一种性能极其稳定、测量范围宽达-200+650的温度传感器,是在高精度温度测量中不可欠缺的温度传感器,其电阻-温度特性如图上所示。最近出现了适合于工业化生产的廉价的薄膜型或者厚膜型的铂电阻,这些膜式电阻的电阻除了可以跟随环境温度波动、具有热响应速度快的优点外,还由于容易获得高电阻值,而容易进行电路设计,测量电路如下图所示。热电偶是利用贝塞克效应进行温度测量的,其最大的优点在于温度测量的范围极宽,并且测量精度高。但是,测量过程繁琐,所以不适合本系统采用。由于铂热电阻器线性度很好,并且稳定,所以在该测量过程中选择铂热电阻作为温度传感器。在铂热电阻器中,最

6、为常用的是Pt100。Pt100温度传感器的主要技术参数如下:测量范围:-200+850;允许偏差值:A级±(0.150.002t), B级±(0.300.005t);热响应时间<30s。另外,Pt100温度传感器还具有抗振动、稳定性好、准确度高、耐高压等优点。为了提高温度测量的准确性,可以使A/D转换器的5V参考电源要稳定在mV级;在价格允许的情况下,Pt100传感器、A/D转换器和运放的线性度要高。同时,利用软件矫正其误差,可以使测得温度的精度在±0.2左右。2、 湿度传感器湿度测量传感器包括:电阻值变化型相对湿度传感器,陶瓷型相对湿度传感器,电容量变化

7、型相对湿度传感器,利用自加热型热敏电阻器制作的相对湿度传感器。其中陶瓷型相对湿度传感器适用于长时间处于高湿环境的条件,不适合本项目采用。电阻值变化型相对湿度传感器,其感湿部分使用的是高分子材料,由外壳和多分子薄膜保护着,经久耐用。通常相对湿度传感器的使用湿度范围是20%95%,高耐水性的湿度传感器可以在20%100%的相对湿度下使用。根据项目需求,在此只需要使用通用型相对湿度传感器即可。电容量变化型相对湿度传感器与电阻值变化型相对湿度传感器具有线性输出的特点,所以不需要线性化电路或利用程序进行线性化处理等。而且这种相对湿度传感器对于湿度的变化响应速度快,抗结露能力强,耐腐蚀性能好,即使在最高温

8、度为180的环境气氛中也可以正常工作。并且这种传感器比较低廉,常用的型号是HS1101。如下图是其电容量变化型湿敏传感器响应特性图:其测量电路如下所示:3、 数码管选择系统设计要求使用同一组数码管进行显示,并且由于温度测量误差不大于1,相对湿度测量误差小于10%所以本题目中选择4位8段数码管,显示温度时最低位显示符号“C”,显示湿度时最低位显示符号“H”(湿度的英文单词humidity首字母)。为了便于观察,数码管显示颜色选择为红色,并且选择大尺寸的数码管。如下图所示:其电路图如下:4、 AD及运放在本系统中需要先利用运放对传感器的输出信号进行放大,然后再利用AD将运放放大后的输出信号采样输入

9、到控制单元当中。为了避免运算放大器对负信号进行放大,以免使用负电源所以需要对传感器电路进行调节,最终使得当温度处于最低值时输出电压为正值。此时可以选择通用的运算放大器,供电电压采用5V。由于LM324四运放电路具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。所以,在本系统中选择LM324作为运放。由于现今绝大部分单片机都内置有多路AD,所以我们选择使用单片机内置AD用于采样。其采样速率及精度等都足以满足本系统的需求。放大器电路原理图如下所示:为了使得湿敏传感器的输入信号不被误识别,同样需要设计放大电路进行放大,使得高电平为5V。并且由于HS1101电压

10、输出典型参数如下:RH/%102030405060708090Vout/v1.411.651.892.122.362.602.833.073.315、 串口通信串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。在微机之间以及微机与计算机之间通信时,经常选择串口通信作为通信的方式。在本监测系统当中,我们需要根据储藏室的大小合理的设定监控点的数量,对于需要多个监控点的储藏室,就需要不同的微机之间以及微机与计算机之间进行通信。为了使用方便,我们在选择单片机时选择那些具有串口通信功能的型号即可满足使用的要求。6

11、、 其它在本系统中所有的器件都选择5V作为供电电源,所以我们选择AC-DC 220V转5V的隔离电源模块DBA-2.5S05W,其输出功率为5W足以满足整个系统的需要为了保证电源电压的稳定,在电源输出端增加一个较大的电解电容。单片机输出报警信号,在驱动电路的驱动下蜂鸣器发出声音。根据储藏室的大小,选择蜂鸣器的功率及设计驱动电路或选择驱动芯片。在此选择HYD-3026,其声强达到85dB,供电电压为5V,40mA驱动电流。为此设计如下驱动电路,由于9013的最大输出电流为625mA满足需要,所以三极管选择9013。本系统需要用到单片机的内置AD采样、定时器、中断、IO口等资源,以及两个串口。为此

12、我们选择宏晶科技有限公司生产的STC12C5A系列单片机。四、 程序模块设计1. AD采样程序void ADC_Power_On() /AD转换电 ADC_CONTR|=0x80; delay(5); /必要的延时 void get_ad_result() /取AD结果函数,它是十位AD转换,每十次平均,最后取低八位作为/AD采样数据 uint i,q=0; for(i=0;i<10;i+) tp=0; ADC_RES=0; /高八位数据清零,STC12C5A60S2 AD数/据寄存名与STC12C54××系列不同 ADC_RESL=0; /低两位清零 ADC_CON

13、TR|=0x08; /启动AD转换 while(!tp) /判断AD转换是否完成 tp=0x10; tp&=ADC_CONTR; ADC_CONTR&=0xe7; ad_average_result=ADC_RES; q=q+ad_average_result; ad_average_result=q/10; void caiyang() /测电压 P1M0|=0x01; /设P1_0为开漏模式 如: P1_0= #00000000B ADC_CONTR=0xe0; /设置P1.0为输入AD转换口 delay(2); get_ad_result(); /取转换数据 Vin=ad

14、_average_result; 2. 定时器初始化程序void Init_timer0()EA = 1; /开总中断ET0 = 1; /允许定时器0中断TMOD = 1; /定时器工作方式选为16位内部时钟计时TL0 = 0x00; TH0 = 0x00; /定时器赋予初值 计时时间t=216 * 2us = 131.072msTR0=1;3. 外部中断初始化程序void init_interrupt()EA=1;EX0=1;IT0=1;/外部中断选择边沿触发4. 外部中断服务程序void int0_interrupt(void) interrupt 0TR0=0;Timeus=256*TH

15、0+TL0TR0=1;TH0=0;TL0=0;5. 定时器中断服务程序void timer0_interrupt(void) interrupt 1 using 0TL0=0x00;TH0=0x00;count+;6. 数码管显示程序void write(gw,sw,bw,sy) we3=0; P0=tablesy; we0=1; we1=1; we2=1; delay _ms(1); we2=0; P0=(tablegw+0x01); /点亮小数点 we0=1; we1=1; we3=1; delay_ms(1); we1=0; P0=tablesw; we0=1; we3=1; we2=1

16、; delay_ms(1); we0=0; P0=tablebw; we3=1; we1=1; we2=1; delay_ms(1);7. 延时1ms程序void delay_ms(uint x) uint i,j; for(i=x;i>0;i-) for(j=240;j>0;j-); 8. 串口通信程序void serial_port_one_initial() /P0M1&=0X00;/P0M0&=0X00;SCON = 0x50; /0101,0000 8位可变波特率,无奇偶校验位 TMOD = 0x21; /0011,0001 设置定时器1为8位自动重装计数

17、器 TH1 = RELOAD_COUNT; /设置定时器1自动重装数 TL1 = RELOAD_COUNT; TR1 = 1; /开定时器1BRT=RELOAD_COUNT; / BRTR = 1, S1BRS = 1, EXTRAM = 1;/ ENABLE EXTRAMAUXR=0x11; / T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS EA = 1; /开总中断ES = 1; /允许串口中断 void send_UART_one(unsigned char i) ES = 0; /关串口中断 TI = 0; /清零串口发送完

18、成中断请求标志 SBUF = i; while(TI =0); /等待发送完成 TI = 0; /清零串口发送完成中断请求标志 ES = 1; /允许串口中断void UART_one_Interrupt_Receive(void) interrupt 4 if(RI=1) RI = 0;delay_ms (5); com_flag=SBUF; /send_UART_one(com_flag);/*if(k=0x55)k=0;com_flag=1;*/ else TI = 0; 9. 主程序#include<STC12C5A60S2.H> #define uchar unsigne

19、d char#define uint unsigned int#include<intrins.h>#define RELOAD_COUNT 0xfd /11.0592MHz,12T,SMOD=0,9600bpssbit we0=P34;sbit we1=P35;sbit we2=P36;sbit we3=P37;sbit led0=P20;sbit led1=P21;sbit led2=P22;sbit led3=P23;sbit led4=P24;sbit led5=P25;sbit led6=P26;sbit led7=P27;sbit beep=P14;uchar code

20、 table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x07f,0x6f,0x39,0x76;/0123456789CHuchar tp,ad_average_result=0,Vin=0,bw,sw,gw,sy,count=0;uint Timeus=0,temperature,rh;void separate(uint num)num=num*10;bw=num/100;sw=num%100/10;gw=num%100%10;void main() ADC_Power_On(); Init_timer0(); init_interrupt(); while(1) caiyang(); temperature=Vin*3; separate

温馨提示

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

评论

0/150

提交评论