温度控制器课程设计报告 11291064Word格式文档下载.docx
《温度控制器课程设计报告 11291064Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《温度控制器课程设计报告 11291064Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
季晓衡
一、课程设计题目:
温度控制器显示课程设计
二、课程设计要求
1.根据具体设计课题的技术指标和给定条件,独立进行方案论证和电路设计,要求概念清楚、方案合理、方法正确、步骤完整;
2.查阅有关参考资料和手册,并能正确选择有关元器件和参数,对设计方案进行仿真;
3.完成预习报告,报告中要有设计方案,设计电路图,还要有仿真结果;
4.进实验室进行电路调试,边调试边修正方案;
5.撰写课程设计报告——最终的电路图、调试过程中遇到的问题和解决问题的方法。
三、进度安排
1.时间安排
序号
内容
学时安排(天)
1
方案论证和系统设计
2
完成电路仿真,写预习报告
3
电路调试
4
写设计总结报告与答辩
合计
5
设计调试地点:
电气楼410
2.执行要求
微机原理与接口技术课程成绩80分以上的同学可以自拟题目,其余的同学都是指定题目。
,每组不得超过2人,要求学生在教师的指导下,独力完成所设计的详细电路(包括计算和器件选型)。
严禁抄袭,严禁两篇设计报告雷同。
摘要
本设计主要设计了一个基于STC90C51单片机的温度控制器,并在数码管上显示相应的温度。
通过温度传感器AD590和AD转换芯片ADC0832将采集的温度传送给单片机,并判断该温度与设定的温度的大小从而控制继电器开关热机与风机,实现温度的控制与调节。
关键词:
单片机,温度控制器,继电器
Abstract
Inthisproject,wedesignedatemperaturecontrollerbasedonSTC90C51.Anddisplaythecorrespondingtemperatureinthedigitaltube.ThetemperaturesensorAD590andADwillconverttheacquiredtemperaturetosendtothemicrocontroller,andcomparetherealtimetemperatureandthesettemperaturesoastocontroltherelaytoturnonandturnofftheheaterandthemotor,tomeetthetemperaturecontrolspecification.
Keywords:
microcontroller,Temperaturecontroller,Relay,analogueanddigitalconvertion
目录
第一章系统方案设计………………………………………………11
第二章仿真…………………………………………………………15
第三章调试…………………………………………………………
第四章结论…………………………………………………………
第五章心得体会…………………………………………………..
参考文献…………………………………………………………….
附录1元器件清单………………………………………………
第一章系统方案设计
【题目】
温度控制器
【要求】
1.采用1路模拟输入,电压范围为0——5V,控制温度变化范围为0——99.9。
C。
2.使用2个继电器分别控制加热器和风机,用来加热和降温。
3.目标温度保持在60度。
4.系统中加一个滞环,当温度低于50度,开始加热;
当温度高于55度时,关加热器;
当温度高于70度时,开风机;
当温度低于65度时,关风机。
5.使用3个数码管作为输出显示电压值或温度值。
【预习及准备】
1.课题背景
电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化。
在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面。
而本次设计就是要通过以MCS-51系列单片机为控制核心,实现温度控制器的设计。
2.系统原理及流程图的初步设计
本课设主要设计了一个基于STC90C51单片机的温度控制器,并在数码管上显示相应的温度。
通过温度传感器AD590和AD转换器ADC0832将采集的温度传送给单片机,并判断该温度与设定的温度的大小从而控制继电器开关热机与风机,实现温度的控制与调节。
经设计,温度控制器主要由单片机STC90C51、温度采集电路、A/D转换电路、温度显示电路、驱动电路等组成。
整体系统框图如图1所示:
图1整体系统框图
3.所用芯片介绍
3.1温度传感器AD590
AD590是美国模拟器件公司生产的单片集成两端感温电流源。
它的主要特性如下:
流过器件的电流(mA)等于器件所处环境的热力学温度,AD590的测温范围为-55℃到+150℃。
AD590的电源电压范围为4V-30V。
电源电压可在4V-6V范围变化,电流变化1mA,相当于温度变化1K。
AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。
输出电阻为710MW。
精度高共有I、J、K、L、M五档,其中M档精度最高,在-55℃到+150℃范围内,非线性误差为±
0.3℃。
AD590的输出电流I=(273+T)μA(T为摄氏温度),因此测量的电压V为(273+T)μA×
10K=(2.73+T/100)V。
为了将电压测量出来又务须使输出电流I不分流出来,我们使用电压跟随器其输出电压V2等于输入电压V。
由于一般电源供应教多器件之后,电源是带杂波的,因此我们使用齐纳二极管作为稳压元件,再利用可变电阻分压,其输出电压V1需调整至2.73V接下来我们使用差动放大器其输出Vo为(100K/10K)×
(V2-V1)=T/10,如果现在为摄氏28℃,输出电压为2.8V,输出电压接AD转换器,那么AD转换输出的数字量就和摄氏温度成线形比例关系。
AD590的管脚图及简单应用电路如下图所示:
3.2LM358
电路需要两路运算放大电路,所以选择双路运算放大器,一路作跟随器另一路作差分放大器,LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。
它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。
LM358的封装形式有塑封8引线双列直插式和贴片式,本实训用8引线双列直插式DIP8。
特性(Features):
内部频率补偿
直流电压增益高(约100dB)
单位增益频带宽(约1MHz)
电源电压范围宽:
单电源(3—30V);
双电源(±
1.5一±
15V)
低功耗电流,适合于电池供电,低输入偏流
低输入失调电压和失调电流
LM358管脚图如下:
3.3ADC0832
ADC0832为8位分辨率A/D转换芯片,其最高分辨率可达256级,可以适应一般的模拟量转换要求,其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5伏之间。
芯片转换时间仅为32微秒,具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
通过DI数据输入端,可以轻易的实现通道功能的选择。
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和D0/D1的电平可任意。
当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/D1端则使用D1段输入通道功能选择的数据信号。
在第1个时钟脉冲的下沉之前D1端应输入2位数据用于通道选择,当为“1”、“0”时,只对CHO进行单通道转换。
当数据为“1”、“1”时,只对CH1进行单通道转换。
到第3个脉冲的下沉之后D1端的输入电平就失去输入作用,此后DO/D1端则开始利用数据输出D0进行转换数据的读取。
从第4个脉冲下沉开始由D0端输出转换数据最高位DATA7,随后每一个脉冲下沉D0端输出下一位数据,直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。
也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。
随后输出8位数据,到第19个脉冲数据输出完成,也标志着一次A/D转换的结束。
最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。
本次实验中我们使用CH0通道输入模拟信号,因此实验中控制ADC0832的时序图如下:
AD0832管脚图
芯片接口说明:
CS_:
片选使能,低电平芯片使能。
CHO:
模拟输入通道0,或作为IN+/-使用。
CH1:
模拟输入通道1,或作为IN+/-使用。
GND:
芯片参考0电位。
D1:
数据信号输入,选择通道控制。
D0:
数据信号输出,选择通道控制。
CLK芯片时钟输入。
Vcc/REF电源输入及参考电压输入。
3.4STC90C51
STC90C51是采用8051核的ISP(InSystemProgramming)在系统可编程芯片,最高工作时钟频率为80MHz,片内含8KBytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。
芯片管脚图如下:
3.574HC573
74HC573八进制3态非反转透明锁存器。
实验中Vcc接+5V电源,GND接地,LE接51芯片的P1.4管脚,当锁存使能端LE为高时,这些器件的锁存对于数据是透明的,当锁存使能端变低时,符合建立时间和保持时间的数据会被锁存。
P1.4置高,锁存器74HC573输出数据。
3.674HC245
74HC245总线驱动器,典型的TTL型三态缓冲门电路,其作用为,信号功率放大。
74HC245引脚定义:
第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时由“A”端输入“B”端输出,DIR=“0”低电平时由“B”端输入“A”端输出,第2~9脚“A”信号输入输出端,A1=B1…A8=B8,A1和B1是一组,如果DIR=“1”OE=“0”则A1输入B1输出,其他类同。
如果DIR=“0”OE=“0”则B1输入A1输出,其他类同。
第11~18脚“B”信号输入输出端,功能和“A”一样,第19脚OE,使能端,若该脚为“1”,A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是能起到开关的作用。
管脚图如下:
3.7四位一体数码管
内部的四个数码管共用a~dp这8根数据线,为人们的使用提供了方便,因为里面有四个数码管,所以它有四个公共端,加上a~dp,共有12个引脚,下面便是一个共阴的四位数码管的内部结构图(共阳的与之相反)。
引脚排列依然是从左下角的那个脚(1脚)开始,以逆时针方向依次为1~12脚,下图中的数字与之一一对应。
3.8继电器
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。
故在电路中起着自动调节、安全保护、转换电路等作用。
电磁继电器的工作原理和特性:
电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。
只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。
当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。
这样吸合、释放,从而达到了在电路中的导通、切断的目的。
对于继电器的“常开、常闭”触点,可以这样来区分:
继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;
处于接通状态的静触点称为“常闭触点”。
【软件流程】
1、软件流程框图
2、程序设计
#include<
reg51.h>
intrins.h>
sbitHeater=P1^3;
//defineheatercontrolsignal
sbitMotor=P1^4;
//definemotorcontrolsignal
sbitCS=P3^0;
sbitClk=P3^1;
sbitDATI=P3^2;
sbitDATO=P3^2;
sbitLED1=P1^0;
sbitLED2=P1^1;
unsignedchardat=0x00;
unsignedcharCH;
unsigneddis[]={0x00,0x00,0x00};
unsignedcharadc0832(unsignedcharCH)
{
unsignedchari,test,adval;
adval=0x00;
test=0x00;
Clk=0;
//初始化
DATI=1;
_nop_();
CS=0;
Clk=1;
if(CH==0x00)//通道选择
{
//通道0的第一位
DATI=0;
//通道0的第二位
}
else
//通道1的第一位
//通道1的第二位
}
for(i=0;
i<
8;
i++)//读取前8位的值
adval<
<
=1;
if(DATO)
adval|=0x01;
adval|=0x00;
for(i=0;
i<
i++)//读取后8位的值
test>
>
test|=0x80;
else
test|=0x00;
if(adval==test)//比较前8位与后8位的值,如果不相同舍去。
若一直出现显示为零,请将该行去掉
dat=test;
CS=1;
//释放ADC0832
DATO=1;
returndat;
}
voiddelay(unsignedinti)//延时程序,i是形式参数,i为1时延时约1ms
unsignedintj;
for(;
i>
0;
i--)//变量i由实际参数传入一个值,因此i不能赋初值
for(j=0;
j<
125;
j++)//j由0自增到125所用的时间大约是1MS
{;
voiddisplay1(unsignedintt)
unsignedcharcodeTAB1[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
P0=TAB1[t];
P2=0x7F;
voiddisplay2(unsignedintt)
unsignedcharcodeTAB2[10]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF};
P0=TAB2[t];
P2=0xBF;
voiddisplay3(unsignedintt)
P2=0xDF;
voiddrive()
unsignedcharDrive;
Drive=1;
delay(5);
Drive=0;
voidmain()//主函数
unsignedchara=3.921,b,c;
unsignedcharADC_out;
//储存A/D转换后的值
unsignedcharHigh,Mid,Dec;
//分别储存转换后的整数部分与小数部分
Heater=0;
Motor=0;
CH=0x00;
P2=0xff;
//初始化位选,全关
P0=0xff;
LED1=1;
LED2=1;
while
(1)
ADC_out=adc0832(CH);
//进行A/D转换
c=(ADC_out*a)/10;
if(ADC_out!
=0)
High=(ADC_out*a)/100;
//计算整数部分
b=(ADC_out*a)%100;
Mid=b/10;
//计算小数部分
Dec=(ADC_out*a)%10;
display1(High);
//显示十位数
//延时5ms
display2(Mid);
//显示个位数
//延时5ms
display3(Dec);
//显示小数
if(c>
0&
&
c<
50)
{
LED1=0;
//指示热机开,红灯
Heater=1;
Motor=0;
55)
LED1=1;
//指示热机关,红灯
Heater=0;
70)
LED2=0;
//绿灯指示风机开
Motor=1;
//红灯关指示热机关
if(c<
65)
//绿灯关指示风机关
第二章仿真
【整体仿真图】
【仿真控制效果】
1、调节电位器,增大电压,当温度低于50度时,继电器1的开关“闭合”,开始加热,指示灯1“亮”;
同时,继电器2的开关处于“断开”状态,指示灯2处于“熄灭”状态。
2、调节电位器,增大电压,当温度低于55度时,继电器1的开关保持“闭合”,继续加热,指示灯1“亮”;
同时,继电器2的开关保持“断开”,指示灯2保持“熄灭”。
3、调节电位器,增大电压,当温度高于55度时,继电器1的开关“断开”,停止加热,指示灯1“熄灭”;
4、调节电位器,增大电压,当温度低于70度时,继电器1和2的开关均处于“断开”状态,不加热也不降温,指示灯1和指示灯2均“熄灭”。
5、调节电位器,增大电压,当温度高于70度时,继电器2的开关“闭合”,启动降温设备,指示灯2“亮”;
继电器1的开关保持“断开”,指示灯1保持“熄灭”。
第三章调试
经过此前认真的预习,查找资料、分析原理、检查PCB板、画仿真图、编写程序和调试、计算机仿真等环节的实行和准备,我们在验收的时候成功调试出了结果,良好地完成了本次单片机课程设计的任务。
1、首先我们进行了软件的仿真,仿真电路根据开发板的导线分布事先画在纸上,然后再用进行protues软件进行仿真,在仿真上得到理想结果后我们才开始实物的调试。
2、在仿真过程中,我们首先遇到乱码的问题,数码管数字显示杂乱无章,经过线路的排查,发现自行表编排错误,与数码管实际结构顺序不符,改正线路后,显示正常。
3、后来在确定程序和实物连接无误的情况下,板子的数码管处于无法控制的状态,我们调试了一下,它只能从0跳到25度,然后又跳到50度然后不再改变,因此我们就去更换了一个电路板,再次尝试顺利地得到结果:
数码管显示0-99.9的值,当温度小于50℃时,温控器的加热器开始加热,代表加热器的二极管灯亮,继电器响一声,当加热到55℃时停止工作,二极管灭掉继电器响一声;
当温度大于70℃时,风机打开,代表风机的二极管灯亮,继电器响一声,当温度降到65℃时,风机停止,二极管灭掉,继电器响一声。
实物图
PCB图
第四章结论
经过为期一周的微机原理技术课程设计,我们成功设计制作出基于单片机的温度控制器,可以顺利地模拟将温度保持在60度左右的调节过程。
顺利的完成了这次单片机课设中所要求的设计,仿真,程序编写和实物制作的整个过程。
与目前国内出现的很多温控器相比,我们设计的温控器更具有很多优异的特点。
而且随着人们的生活水平提高,很多大型酒店和高档住宅小区已经采用温控器控制风机盘管以营造舒适的办公居家环境,并实现节能的目的。
因此我们相信,温控器的发展一定会越来越进步的。
第五章心得体会与建议
单片机课程设计结束了,经过了设计分析、实验调试,我也收获了很多。
我较好地掌握了Proteus软件电路原理图的绘制、单片机仿真,对C语言的适用更透彻、学会根据温度控制器原理编写程序,并在软件上调试,了解了AD转换芯片ADC0832及相关元器件的使用,而且也与同学进行了合作,感觉颇有心得:
1、做实验前一定要将原理掌握得透彻,首先对于温控器的设计要有大致的思路和编程思路,然后要了解所要用到的器件的功能,知道每一部分电路控制的功能,否则在真正实验的时候就会遇到问题,也不知道自己是错在哪里。
实验时要分模块调试,一部分一部分的调试,每部分调好后再组合在一起,这样就比较清晰有条理。
2、实验过程中需要细心,严谨,比如最开始没有考虑到消抖这一环节,使得显示的温度值一直不变,最后在同学的提示下才明