水温恒控系统课程设计Word文档下载推荐.docx
《水温恒控系统课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《水温恒控系统课程设计Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
3.3系统主程序流程图……………………………………………………………………10
4结论…………………………………………………………………………………………11
课程设计体会………………………………………………………………………………12
参考文献………………………………………………………………………………………13
附录一…………………………………………………………………………………………14
附录二…………………………………………………………………………………………15
综述
随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。
特别是近年来,温度控制系统已应用到人们生活的各个方面,针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。
在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,比如,发电厂锅炉的温度必须控制在一定的范围之内;
许多化学反应的工艺过程必须在适当的温度下才能正常进行;
炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。
没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。
因此,各行各业对温度控制的要求都越来越高。
可见,温度的测量和控制是非常重要的。
单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。
随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运而生。
用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。
1系统方法选择和论证
1.1基本要求
设计一个水温恒控系统,能够将水温恒控在所设置的温度范围下,并显示出所测量的温度。
1.1.1说明
本系统采用DS18B20温度传感器,测量温度范围为-55℃~+125℃,在-10~+85℃时精度为±
0.5℃。
降温系统和升温系统可分别使用风扇和电阻丝。
1.2系统的基本方案
根据题目的要求,系统可以划分为控制和检测部分。
其中信号检测部分有DS18B20温度传感器来实现温度的采集,模数的转换。
控制部分包括按键模块和显示模块。
模块框图如图1-1所示。
图1-1水温恒控系统的模块框图
1.2.1各模块方案选择和论证
(1)控制器模块
根据题目的要求,控制器主要用于传感器的数据处理和显示输出,还有对数据分析处理后所发出的指令,对于控制器有以下两种方案。
方案一:
采用ATMEL公司生产的AVR系列单片机作为系统的控制器。
AVR系列单片机具有高速、高可靠性、功能强和低功耗的特点,并且具有丰富的外部设备,I/O口驱动能力大。
但是做水温恒控系统不需这么复杂的控制器,而且控制器的价格还比较昂贵,做出的设备性价比不高,不适合大量投入生产。
方案二:
采用同为ATMEL公司生产的AT89S5X系列中AT89S51单片机作为主控芯片,该芯片的算术运算能力强,软件编程灵活,自由度大,并且其功耗低、体积小、技术成熟,能完全满足本次系统的操作内容,而且操作较为简单,价格便宜,性价比较高。
(2)温度采集模块
1温度传感器温度传感器采用补偿型NTC热敏电阻其主要性能如下:
①补偿型NTC热敏电阻B值误差范围小,对于阻值误差范围在5%的产品,其一致性、互换性良好。
适合于一般精度的温度测量和计量设备。
但是使用中需要添加额外的
选用DS18B20温度传感器。
美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持"
一线总线"
接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。
全部传感元件及转换电路集成在形如一只三极管的集成电路内。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
DS18B20具有独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;
它的适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电;
其可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温,测量结果直接输出数字温度信号;
以"
串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;
并且可以不使用A/D转换器,减少了外围电路的连接,所以我决定选择DS18B20作为温度模块的采样器。
(3)显示模块
采用LED数码管显示。
LED数码管在单片机系统中的应用非常普遍,LED数码管是由多个发光二极管组成的,通过点亮不同的数码管来进行不同数字的显示。
虽然操作比较简单,但是比较占用单片机的I/O端口,而且可能有些需要的文字在数码管上无法表示出来,且变化不灵活,所以不予采用。
采用1602液晶显示屏器示。
液晶显示器的主要工作原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。
液晶体积小、功耗低、显示操作简单。
可以较为随意的显示出想要的字符,变换较为灵活,故采纳1602液晶显示器作为显示模块。
1.2.2系统各模块的最终方案
经过仔细分析和论证,决定了系统各模块的最终方案如下:
(1)控制模块:
AT89S51
(2)温度采集模块:
DS18B20温度传感器
(3)显示模块:
LCD1602液晶显示器
系统的基本框图如图1-3所示:
水温
图1-3水温恒控系统的基本框图
2系统的硬件设计与实现
2.1系统的硬件基本组成部分
本系统是采用AT89S51单片机作为主控芯片,通过DS18B20温度传感器对水温进行采样并将数字量传递给单片机;
在单片机进行数据分析处理后,在用LCD液晶显示器将温度显示出来。
通过输出指令来控制其执行电路,由单片机的输出开关量来控制风扇或电阻丝,来实现温度的升降。
2.2主要单元电路的设计
2.2.1控制电路及执行电路的设计
主控芯片AT89S51选择的晶振频率为12MHZ,它的最小系统如图2-1所示
图2-1单片机的最小系统原理图
由单片机的输出开关量来控制风扇或电炉来实现水温的降低或升高。
设计中采用光电耦合器进行强电和弱电的隔离,但还要考虑输出信号要对可控硅进行触发,以便接通降温电路或升温电路,所以晶闸管选用既有光电隔离又有触发功能的MC3051,如图2-2所示。
图2-2单片机的控制执行电路
2.2.2传感器电路设计
DS18B20采用的是单条信号线,既可传输时钟,又可传输数据,而且数据的传输是双向的,电路原理图如图2-3所示。
图2-3DS18B20电路图
2.2.3按键电路设计
其中K4为功能控制键接到单片机的外部中断INT0引脚处,当K4键被按下时,触发外部中断,使程序进入中断子程序中,K1键和K2键分别为功能加一键和功能减一键用来调节设定的温度系数,当K3被按下时,系统跳出按键的外部中断程序。
图2-4按键电路原理图
2.2.4LCD1602液晶显示设计
1602液晶有8个数据口,其中的RS端口为数据或命令选择端,RW为读写选择端,E为使能信号,是液晶1602操作过程中必不可少的端口,它的电路原理图如2-4所示。
图2-41602液晶显示器电路原理图
3系统程序设计
3.1系统的软件设计
软件设计采用模块化设计,由主程序模块、功能实现模块和运算模块3大模块组成。
3.1.1主程序模块
在主程序中首先定义好伪指令对应的程序地址变量,在给定PID算法的参数值,然后通过按键确定要求控制的温度,且使按键的外部中断为高优先级以便使主程序能实时响应键盘按下的处理。
软件设定定时器T0为5s定时,在无键按下时,每隔5s响应一次,来采集DS18B20温度传感器采集的温度信号数据。
3.1.2功能实现模块
主要由中断处理子程序、键盘处理子程序、DS18B20转换程序和显示子程序等组成。
(1)键盘中断子程序。
当功能键被按下时,触发外部中断,跳入到中断子程序之后,首先先进行现场保护,对累加器A和PSW寄存器中的数值进行保护,之后可以通过功能加一键或功能减一键对期望温度进行设定,设定完成后在进行现场恢复,对累加器A和PSW寄存器中的数值进行恢复,之后返回中断断点处继续执行程序。
(2)T0中断子程序。
首先应在主程序中对T0定时器进行初始化,并装入初值,如果选择方式一进行工作的话,每次最大只能定时65.5ms,所以还得在定时中断中加入一个76次的循环判断程序才能达到5s一次的定时。
在定时中断这个过程,单片机要完成包括温度的采样处理,判断温度是否超出或达到标准温度值,如果没有达到可以调用PID算法子程序并输出控制信号。
(3)DS18B20可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温,测量结果直接输出数字温度信号,以"
串行传送给CPU,再将测得的数值乘以0.0625即可得到实际温度值。
(4)显示子程序。
需要先对液晶1602进行初始化,将固定不变的字符装入到1602中,
之后设置好1602的写指令与写数据的子程序。
当处理完数据需要表示的时候,先调用1602中的写指令子程序,决定将显示数据放在哪里显示,在调用写数据子程序,将数据具体显示出来。
3.1.3运算控制模块
涉及PID算法及判断温度的精度大小子程序等。
3.2温度转换设计
3.2.1温度控制算法
通常,水温控制都采用偏差控制法。
偏差控制的原理是先求出实测水温对所需水温的偏差值,然后对偏差值处理获得控制信号去调节电阻丝的加热功率,以实现对水温的控制。
在工业上,偏差控制又称PID控制,这是工业控制过程中应用最广泛的一种控制形式,一般都能收到令人满意的效果。
3.2.2温度控制程序框图
温度控制程序的设计应考虑如下:
1)键盘扫描、键码识别和温度显示;
2)水温采样、数字滤波;
3)数据处理;
4)温度分析和处理;
5)输出指令调整
温度控制程序框图如图3-1所示
图3-1温度控制程序框图
3.3系统主程序流程图
图3-2主程序流程图
4结论
在水温恒控系统工作时,首先输入设定的温度值,单片机通过外部中断接受到数据后,经过分析处理,将设定的温度值显示在1602液晶显示器上;
之后开启定时器中断,等待每五秒一次的定时器中断,当定时器中断触发后,单片机对DS18B20温度传感器进行温度的采集,并将得到的数据与设定的温度进行比较判断,如果高于系统的设定温度,则降温系统开始工作;
如果低于设定温度,升温系统工作;
如果等于系统的设定温度,则不工作,返回主程序中。
再继续通过定时与温度采集来检测水温的变化,从而实现智能化控制。
提高了系统的性能,使得控制系统的可靠性更加可靠。
在程序的设计时,应跟据之前绘制的流程图来进行编制。
在中断响应的时候,应该注意对累加器A和状态寄存器PSW中的数据进行保护,避免之后发生数据混乱。
温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器也应运而生。
随着单片机产品的迅猛发展,渐渐的会有更多高性能、低价格的新型单片机和温度传感器出发,使得控制的范围越来越大,精度越来越高,从而有效的提升了产品的性能。
课程设计体会
通过本次课程设计,让我对理论的学习有了更扎实的理解,尤其是单片机这门课理论与实践的联系是十分紧密的。
通过课程设计我将所学到的知识连贯起来、融会贯通,通过自己动手的摸索与结合生活中的实践,对知识的掌握更加透彻。
在设计过程中,不仅是在电力电子这一学科,而且还结合了我们以前所学过的许多知识,而且有些在课堂上、书本上比较难理解的知识点通过这次课程设计也有了进一步的了解,通过自身实践作图等都对其有了更深刻的理解。
在设计过程中,由于时间较为仓促,且自身水平能力有限,在做的过程中还是出现了许多问题,例如在解决驱动部分的升降温系统并没有太联系到实际的应用,在编程中将输出的控制信号采用了较为简单的输出方式,虽然算法变的简单些,但可能会在实际应用中导致干扰性较大,稳定性不太好,这也是也一个不足之处,我会争取想出更好的解决方案来。
参考文献
[1]何力民.单片机应用技术选编【M】.北京:
北京航空航天大学出版社,1993
[2]胡汉才.单片机原理及其接口技术【M】.北京:
清华大学出版社,1996
[3]张毅刚.MCS-51实用汇编子程序设计【M】.哈尔滨:
哈尔滨工业大学出版社,2003
[4]郭天祥.新概念51单片机C语言教程【M】.北京:
电子工业出版社,2009.1
[5]张毅刚.单片机原理及应用【M】.北京:
高等教育出版社,2010.5
附录一:
系统电路图
附录二:
系统程序
/************************************************************
基于AT89S51单片机的水温恒控系统
*************************************************************/
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT0
ORG000BH
LJMPT0
ORG0100H
/**********主函数*********/
MIAN:
LJMPINIT_18B20A;
DS18B20初始化
LJMPLCD_INIT;
液晶1602初始化
MOVA,#00H
MOVLCD_DAT,A
LCALLLCD_W_CMD;
设置液晶的初始状态
LCALLLCD_W_DATE
MOVDELAYED,#14H
LCALLDELAY_MS
MOVSP,#60H
MOVTMOD,#01H;
定时器0初始化设置
MOVTH0,#00H;
装入初值
MOVTL0,#00H
MOVR0,#4CH
SETBTR0
SETBET0
SETBEX0
SETBIT0
SETBEA;
打开总中断
HERE:
SJMPHERE;
原地循环,等待中断响应
/****************初始化18b20**************/
INIT_18B20A:
CLREA
CLRDQ1
MOVR7,#15H
MOVR6,#00H
DJNZR6,$;
延时
DJNZR7,$-2
SETBDQ1
MOVR6,#0FFH
ATSR2:
JNBDQ1,ATSR3
DJNZR6,ATSR2
AJMPATSR4
ATSR3:
SETBF0;
置标志位,表明DS18B20存在
AJMPATSR5
ATSR4:
CLRF0;
表明不存在
ATSR5:
;
延时2Ms
MOVR7,#56H
MOVR6,#00H;
延时2MS
DJNZR6,$
DJNZR7,$-2
SETBEA
RET
/***************写DS18B20程序************/
WRITE_18B20A:
MOVR2,#8
CLRC
AWR1:
CLRDQ1;
拉低端口,准备数据传送
数据需在15us之内出现在端口上
延时10us
MOVR6,#70H
RRCA;
数据输出到端口
MOVDQ1,C
延时50u
MOVR7,#02
MOVR6,#20H;
延时50US
SETBDQ1;
拉高端口
DJNZR2,AWR1;
8bit发送完成?
未完继续
延时1us
MOVR6,#0BH
SETBEA
/***********读18B20程序*********/
READ_18B20A:
CLREA
MOVR2,#8
ARE01:
拉低数据端口
延时2us
MOVR6,#16H
SETBDQ1;
释放数据端口
延时3us
MOVR6,#21H
MOVC,DQ1;
读取数据到C
移位到a
延时55us
MOVR6,#63H;
延时55US
SETBDQ1
DJNZR2,ARE01;
读完8bit?
未完继续
/**************液晶显示程序********************/
/**************1602写数据函数,数据存在LCD_DAT***************/
LCD_W_DATA:
SETBLCD_RS
CLRLCD_RW
NOP
MOVLCD_DATA,LCD_DAT
SETBLCD_EN
NOP
CLRLCD_EN
/*************1602写命令函数,命令存在LCD_DAT*************/
LCD_W_CMD:
CLRLCD_RS
NOP
/***********1602初始化函数*****************/
LCD_INIT:
MOVDELAYED,#30
MOVLCD_DAT,#38H
LCALLLCD_CMD
MOVDELAYED,#10
LCALLDELAY_MS
MOVLCD_DAT,#038H
LCALLLCD_W_CMD
MOVLCD_DAT,#08H
MOVLCD_DAT,#01H
MOVLCD_DAT,#06H
MOVLCD_DAT,#0CH
/********延时函数,延时时间为DELAYED*0.5毫秒0~100毫秒的延时**************/
DELAY_MS:
MOVR7,DELAYED
D1:
MOVR6,#0F8H
D2:
DJNZR6,D2
DJNZR7,D1
/*************延时函数,延时时间为DELAYED*2微秒0~500微秒的延时****************/
DELAY_US:
MOVR7,A
DU1:
DJNZR7,DU1
/****************外部中断0*************/
INT0:
PUSHA
PUSHPSW;
保护现场
K4:
MOVDELAYED,#28H
JBP1.5,DELAY_MS;
判断按键
JBP1.5,K1
JBP1.6,DELAY_MS
JBP1.6,K2
JBP1.7,D