电加热炉温度控制系统设计说明.docx
- 文档编号:24818410
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:44
- 大小:255.21KB
电加热炉温度控制系统设计说明.docx
《电加热炉温度控制系统设计说明.docx》由会员分享,可在线阅读,更多相关《电加热炉温度控制系统设计说明.docx(44页珍藏版)》请在冰豆网上搜索。
电加热炉温度控制系统设计说明
1意义与要求1
1.1实际意义1
1.2技术要求1
2设计容及步骤1
2.1方案设计1
2.2详细设计2
2.2.1主要硬件介绍2
2.2.2电路设计方法3
2.2.3绘制流程图6
2.2.4程序设计7
2.3调试和仿真7
3结果分析8
4课程设计心得体会9
参考文献10
附录11
电加热炉温度控制系统设计
1意义与要求
1.1实际意义
在现实生活当中,很多场合需要对温度进行智能控制,日常生活中最常见的要算空调和冰箱了,他们都能根据环境实时情况,结合人为的设定,对温度进行智能控制。
工业生产中的电加热炉温度监控系统和培养基的温度监控系统都是计算机控制系统的典型应用。
通过这次课程设计,我们将自己动手设计一个小型的计算机控制系统,目的在于将理论结合实践以加深我们对课本知识的理解。
1.2技术要求
要求利用所学过的知识设计一个温度控制系统,并用软件仿真。
功能要求如
下:
(1)能够利用温度传感器检测环境中的实时温度;
(2)能对所要求的温度进行设定;
(3)将传感器检测到得实时温度与设定值相比较,当环境中的温度高于或低于所设定的温度时,系统会自动做出相应的动作来改变这一状况,使系统温度始终保持在设定的温度值。
2设计容及步骤
2.1方案设计
要想达到技术要求的容,少不了以下几种器件:
单片机、温度传感器、LCD
显示屏、直流电动机等。
其中单片机用作主控制器,控制其他器件的工作和处理数据;温度传感器用来检测环境中的实时温度,并将检测值送到单片机中进行数值对比;LCD显示屏用来显示温度、时间的数字值;直流电动机用来表示电加热炉的工作情况,转动表示电加热炉通电加热,停止转动表示电加热炉断电停止加热。
整体思路是这样的:
首先我们通过按键设定所需要的温度值,然后利用温度传感器检测电加热炉的实时加热温度,并送至单片机与设定值进行比较。
若检测值小于设定值,则无任何动作,电加热炉继续导通加热;若检测值大于设定值,则单片机控制光电耦合器导通,继电器动作,电加热炉断电停止加热。
一旦炉温低于设定值,单片机又控制光电耦合器断开,继电器开关分离,电加热炉开始导通加热。
这个过程中所设定的温度值和传感器检测到得温度值都要在LCD显示屏
上显示出来,以方便操作人员观察。
另外,还可以加上时钟模块,以方便计时。
这个设计思路相对比较简单,利用所学过的知识容易实现,加上光电耦合器用于隔离强电和弱电,比较安全,正好符合我们自动化专业用弱电控制强电的目的,正所谓学以致用。
2.2详细设计
221主要硬件介绍
1•单片机
这里选用AT89C5仲片机作为控制系统的处理器。
AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器。
2•温度传感器
温度传感器有很多种型号,这里我选用DS18B20温度传感器。
数字温度
传感器DS18B2C具有独特的单总线接口方式,支持多节点,使分布式温度传感器设计大为简化。
测温时无需任何外围原件,可以通过数据线直接供电,具有超低功耗工作方式。
测温围为-55到+125摄氏度,可直接将温度转换值以16位二进制数字码的方式串行输出,因此特别适合单线多点温度测量系统。
由于传输的是串行数据,可以不需要放大器和A/D转换器,因而这种测温方式大大提高了各种温度测控系统的可靠性,降低了成本,缩小了体积。
3•开关器件
由于单片机与电动机之间需要用开关器件连接,并且前者用弱电控制,
后者由强电控制,这就尤其需要注意安全问题。
于是我想到了在课本中学
过的高性能安全开关器件光电耦合器。
光电耦合器是由一个发光器件和和
一个光电转换器件组成,这里所用的光电耦合器OPTOCOUPLER-NP是由一
个发光二极管和一个光敏晶体管所组成。
当发光二极管发光,就会使得光敏晶体管导通,继电器通电动作,将开关吸合,电动机回路断开。
222电路设计方法
1•显示部分电路
显示电路截图如下图所示
图2.1显示部分电路图
这里我选用LCDLM016L液晶显示屏作为系统的显示器件,如图所示,LCDLM016L采用标准的16脚接口,仿真时隐藏了背光正极和背光负极两个引脚。
它通过D0-D78位数据端来与单片机进行数据和指令传输,这里我们将它与单片机的P0口连接。
在显示屏上显示的容包括设定的温度值SET传感器检测到的环境温度
SA以及时钟,这个时钟是可以调整的,这样方便工作人员在对系统进行操作时有一个时间概念。
2•温度检测电路
温度传感器与单片机的连接情况如下图所示
U2
ri.o
P17
ATB9C51
图2.3键盘电路图
VCC
DQ
GND
3
■21.01
2
••
1
DS18B20
图2.2温度检测电路图
温度传感器18B20将检测到的环境实时温度进行A/D转换和放大,然
后串行送入单片机P1.7口,便于单片机将此数值与设定的温度值进行比较,然后先做出相应反应。
在仿真时,我们只能通过按18B20上的加减按钮来
调节实时温度,是一个模拟的过程。
3.键盘电路
键盘电路如下图所示。
这里减排设计得比较简单,“MS'键是切换调整对象的,调整对象包括
时、分、温度设定值三项,“+”键是向上加调整对象的值,“一”键是向下
减调整对象的值,“ON/OFF键是打开和关闭系统自动调节功能的开关键。
4•电气开关及工作电路
电器开关及工作电路如下图所示
-U
8R
.gk尸‘.
R-1O订
a
OPTOCOUPLER-NPN.丁閃》
图2.4电气开关及工作电路图
如图所示,光电耦合器1脚接电源,2脚接单片机P3.7脚。
工作过程用以下三个阶段来描述:
(1)单片机将温度传感器送入的值与设定值进行比较,若送入值小于设定值,则P3.7脚保持高电平,这样发光二极管不发光,光敏晶体管保持高阻态,继电器也不会工作,电动机和灯泡维持导通,相当于电炉继续加
热,指示灯亮;
(2)一旦送入值比设定值大,单片机将会控制P3.7脚变为低电平,发光二极管导通发光,光敏晶体管受光照影响导通,继而继电器工作,电
磁铁将单刀双掷开关吸向左端,使电动机和灯泡同时停止工作,这就相当于电炉断电,停止加热;
(3)电炉短路一段时间后,必然导致炉温降低,而温度传感器DS18B20
在不间断地检测炉温,当检测值低于设定值后,单片机又控制P3.7脚恢复
高电平,光电耦合器恢复高阻态,继电器断电,单刀双掷开关被弹回右端,
电动机和灯泡又开始工作,这相当于电炉从新开始加热。
223绘制流程图
224程序设计
由于整个程序工程量比较大,我采用模块化设计方法来设计这个程序。
首先定义在后面将会用到的变量,不可能一次定义准确,所以边定义边补
充。
然后编写子函数,包括LCM初始化子函数、显示指定坐标的一个字符
子函数、ds18b20初始化函数、ds18b20延迟子函数、读取ds18b20当前温
度子函数、液晶显示子函数、键盘扫描子函数、设定工作模式子函数、按
键加法子函数、按键减法子函数、24C02读写驱动程序、定时器t0中断子
函数等子程序,最后是主函数。
2.3调试和仿真
在Keil软件中编写完程序后,编译生成.Hex文件,单片机可以执行.Hex文件。
在Protues软件中,给单片机加载所生成的.Hex文件,按下运行按
钮,系统开始仿真。
系统仿真截图如下图所示。
«>cw
JFTEE
friQU^
—B5!
3Bi07—
5ET沽眈并熄仁河E单!
tiuEc^EaEEo
RP1
LCD1-
UhEIB.
U2
P!
rUUJU.
EX
F皿
PSXA'S
PESAn
-D
P9J1FMD
曲」
EJIW
L二
Fa二Tni
J
CTJTPT
Pl-*-
J
IP'Ji
ejiRR
ouJ3aanKnKEEnPB
图2.5系统仿真图
(一)
上一是当温度采样值小于设定值,电热炉处于工作状态时的仿真截图以下这是当温度采样值高于设定值后,系统自动做出反应,使电热炉断电停止工作的仿真截图。
抵匸也n
j
1
陆•亦
PCHMit
RM霍
N.i*M3
PJjtfTT"ki」j?
rr
H*ffUFUiTi
P』#4IT"
kTBlJ-
p沾
P2
Pl.T
••耐
醤毒一畫言一寺募一義幕寺一
oilier- R±T ST •o#”』 P2 Ptj "I ■I •I -L£E>1 LI4-H f■* fiy. HL1.ij*->Tr>t A -IDiT" r»R- -inn f■* -imr tm--inn i 璧鼻1-1 w -TT>1h 图2.6系统 3结果分析 由以上仿真结果可以知道,此次的设计基本成功。 当采样温度低于设定值的时候,系统不会对电热炉做出相应动作,电热炉保持加热。 一旦采样温度高于设定值,系统就会做出反应,使电加热炉断电停止加热。 当温度降下来后,系统又会自动控制电加热炉重新开始加热。 系统的反应速度也是十分精确的,会在很短的时间作出相应动作。 另外,由于在电路中加入了EPROM24CQ2使得该系统具有掉电保护功能,来电后自动恢复正常工作。 除此之外,该系统还有一个比较实用的小功能一电子钟,这样的话工作人员可以利用它准确掌握系统已经工作的时间,也就是说可以把它当做一个定时器来用。 在安全保护方面,该系统也有相当不错的表现,由于使用了光电耦合器和就电磁继电器,将强电部分和弱电部分充分隔离,十分安全。 综合以上分析,该系统的设计十分成功。 4课程设计心得体会 一个星期很快就过去了,计算机控制技术课程设计也告一段落。 本次课程设计,我的题目是《设计一个电加热炉温度控制系统》。 说到电加热炉,我们都比较熟悉,在日常生活中我们经常用到,特别是冬天用它来煮火锅。 我们也会发现这样一个问题,一般的电加热炉是没有温度自动控制的,当温度上升到我们需要的程度时,它仍然继续加热,这不仅会影响到加热效果,还会造成电能的浪费。 那么就有必要设计一种能自动调节炉温的系统,把它应用到日常生活中,将会给人们带来极大的方便。 在设计的过程中,我也遇到一些麻烦,比如说怎样来实现电动机回路的自动通断调节、怎样来实现时钟的调整等等,这些问题都令我十分棘手。 通过去图书馆查阅相关资料和上网搜索各硬件的原理以及应用,我最终都一一解决了这些问题。 由于我们是三个同学做同一个题目,在设计过程中,我们遇到困难的时候也经常相互讨论,相互请教,最终一起解决问题,在此也感谢我的“战友”们。 总的来说,此次课程设计的过程比较轻松,从拿到问题到彻底解决问题,这是一个令人振奋并享受的过程。 经过去图书馆大量的查阅书籍,我也学到了很多在课本上没有的知识,收获颇丰。 这段过程让我懂得了一个道理,那就是学生要学的绝对不该仅仅是课本上的东西,有些东西只有走进图书馆,你才可能学习到。 也只有这样,我们才能成为一个见多识广、渊博的人。 参考文献 [1]于海生•微型计算机控制技术•清华大学,2004 [2]谭浩强.C程序设计(第三版)•清华大学,2006 [3]戴焯•传感与检测技术•理工大学,2006 [4]毅刚.单片机原理及应用.高等教育,2003 ⑸柯节成•简明电子元件器件手册•高等教育,2005 忙检测标志 定义P0口为LCD通讯端口 语音报警地址 //红色指示灯 //白色指示灯 //绿色指示灯 //时钟调整 //时钟加 //时钟减 〃定义ds18b20通信端口 //数据/命令端 II读/写选择端 口定义 IILCD使能信号 I/adc中断方式接口 IIISD1420放音结束查询标志 附录 系统的完整程序如下: /*********************************************************** 电加热炉温度控制系统 问题描述: 当温控开关打开时,若测得环境温度大于设定温度,则继电器吸合,电加热炉停止工作;若测得环境温度小于设定温度,贝U继电器释放,电加热炉继续工作。 ***********************************************************/ #include #include #inelude #defineucharunsignedchar #defineuintunsignedint #defineBUSY0x80//lcd #defineDATAPORTP0// #definePLAYE_ADDRXBYTE[0XBFFF]// sbitRED_ALARM=P1A0; sbitWRITE_ALARM=P1A1; sbitGREEN_ALARM=P"2; sbitBLUE_ALARM=P1A3; sbitP1_4=P1A4; sbitP1_5=P1A5; sbitP1_6=P1A6; sbitDQ=P1A7; sbitLCM_RS=P2A0; sbitLCM_RW=P2A1; sbitLCM_EN=P2A2; sbitsda=P2A3;//IO sbitscl=P2A4; sbitad_busy=P3A2; sbitRECLED_EOC=P3A5; sbitOUT=P3A7; ucharad_data; ucharseconde; ucharminite; ucharhour; ucharmstcnt=O; uchartemp1,temp2,temp; uchart,set; ucharK; bitON_OFF=0; bitoutflag; bitwrite=0; ucharcodestr0[]={"---: : ---"}; ucharcodestr1[]={"SET: CSA: .C"};voiddelay_LCM(uint); voidinitLCM(void); voidlcd_wait(void); //ad采样值存储 //定义并初始化时钟变量 //温度显示变量 //LCD延时子程序 //LCD初始化子程序 //LCD检测忙子程序 写指令到ICM子函数 写数据到LCM子函数 显示指定坐标的一个字符 显示指定坐标的一 //定时器初始化 voidWriteCommandLCM(ucharWCLCM,ucharBusyC);// voidWriteDataLCM(ucharWDLCM);// voidDisplayOneChar(ucharX,ucharY,ucharDData)//子函数 voidDisplayListChar(ucharX,ucharY,ucharcode*DData);〃串字符子函数 voidinit_timer0(void); voiddisplayfun1(void); voiddisplayfun2(void); voiddisplayfun3(void); //键盘扫描子程序 voiddisplayfun4(void); voidkeyscan(void); voidset_adj(void); voidinc_key(void); voiddec_key(void); voiddelay_18B20(unsignedinti); voidInit_DS18B20(void); ucharReadOneChar(void); voidWriteOneChar(unsignedchardat); voidReadTemperature(void); voidad0809(void); voidplayalarm(void); /********* 延时K*1ms,12.000mhz**********/ voiddelay_LCM(uintk) uinti,j; for(i=0;i for(j=0;j<60;j++) {;} /********** 写指令到LCM子函数************/ voidWriteCommandLCM(ucharWCLCM,ucharBusyC){ if(BusyC)lcd_wait(); DATAPORT=WCLCM; 选中指令寄存器 //写模式 LCM_RS=0;// LCM_RW=0; LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; } ******** 写数据到LCM子函数************/ 检测忙信号 选中数据寄存器 写模式 voidWriteDataLCM(ucharWDLCM){ lcd_wait();// DATAPORT=WDLCM; LCM_RS=1;// LCM_RW=0;// LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; } *********lc^m 咅E等待函*************/ voidlcd_wait(void) { DATAPORT=Oxff; LCM_EN=1; LCM_RS=0; LCM_RW=1; _nop_(); while(DATAPORT&BUSY){LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); } LCM_EN=0; } ********lcm 初始化子函数***********/ 三次显示模式设置,不检测忙信号 数据传送,2行显示,5*7字型,检测忙信号关闭显示,检测忙信号 清屏,检测忙信号 显示光标右移设置,检测忙信号 显示屏打开,光标不显示,不闪烁,检测忙信号 voidinitLCM() { DATAPORT=0; delay_LCM(15); WriteCommandLCM(0x38,0);// delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,0);delay_LCM(5); WriteCommandLCM(0x38,1);//8bit WriteCommandLCM(0x08,1);// WriteCommandLCM(0x01,1);// WriteCommandLCM(0x06,1);// WriteCommandLCM(0x0c,1);// } ************** 显示指定坐标的一个字符子函数*************/ voidDisplayOneChar(ucharX,ucharY,ucharDData){ Y&=1; X&=15; ,地址码+0X40 if(Y)X|=0x40;//若y为1(显示第二行) X|=0x80;//指令码为地址码+0X80 WriteCommandLCM(X,0); WriteDataLCM(DData); } /***********显示指定坐标的一串字符子函数***********/ voidDisplayListChar(ucharX,ucharY,ucharcode*DData) { ucharListLength=0; Y&=0x01; X&=0x0f; while(X<16) { DisplayOneChar(X,Y,DData[ListLength]); ListLength++; X++; } } /***********ds18b20延迟子函数(晶振12MHz)*******/voiddelay_18B20(unsignedinti) { while(i--); } /**********ds18b20 初始化函数 ******************** **/ voidInit_DS18B20(void) { unsignedcharx=0; DQ=1; //DQ 复位 delay_18B20(8);// 稍做延时 DQ=0; // 单片机将 DQ拉低 delay_18B20(80);// 精确延时 大于480us DQ=1; // 拉高总线 delay_18B20(14); x=DQ; // 稍做延时后 如果x=0则初始化成功 delay_18B20(20); x=1则初始化失败 /***********dsi8b20 读一个字^节**************/ unsignedcharReadOneChar(void){ uchari=0; uchardat=0; for(i=8;i>0;i--) { 给脉冲信号 给脉冲信号 DQ=0;//dat>>=1; DQ=1;//if(DQ)dat|=0x80; delay_18B20(4); } return(dat); } /*************ds18b20 •写.个字^节************** voidWriteOneChar(uchardat){ unsignedchari=0;for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01;delay_18B20(5); DQ=1; dat>>=1; } }voidReadTemperature(void){ ************ 读取ds18b20当前温度************/ unsignedchara=0; unsignedcharb=0; unsignedchart=0; Init_DS18B20(); WriteOneChar(OxCC);// WriteOneChar(0x44); 跳过读序号列号的操作 //启动温度转换 delay_18B20(100);//thismessageisweryimportant Init_DS18B20(); WriteOneChar(OxCC); WriteOneCha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 加热炉 温度 控制系统 设计 说明