水温控制课设.docx
- 文档编号:18531087
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:35
- 大小:352.09KB
水温控制课设.docx
《水温控制课设.docx》由会员分享,可在线阅读,更多相关《水温控制课设.docx(35页珍藏版)》请在冰点文库上搜索。
水温控制课设
单片机应用
课程设计报告书
系别:
信息工程系
专业:
自动化
班级:
自动112
学号:
201107074246
姓名:
张海鹏
目录
单片机应用1
课程设计报告书1
引言1
(一)课题研究的背景2
(二)课题研究的目的和意义2
(三)课程设计分析设计2
1、题目:
水温控制系统的设计2
3、设计键盘电路,完成温度给定。
2
5、系统设计技术指标2
(四)方案选择3
1、控制电路选择的论证3
2、测温电路方案的选择3
3、加热控制方案的论证3
4、软件算法方案选择4
(五)课程设计分析设计4
1、系统总体方案设计4
2、温度传感器DS18B20简介5
3、控制芯片AT89C51单片机简介6
4、时钟电路简介7
5、键盘与LED数码显示电路简介8
6、加热控制电路简介8
(六)系统硬件电路设计9
1、温度采集电路的设计9
2、加热控制电路的设计10
3、键盘、显示电路的设计11
4、显示电路11
5、报警模块11
(七)系统软件设计12
1、读取DS18B20温度模块子程序12
2、数据处理子程序13
3、键盘扫描子程序15
4、PID控制算法的程序设计16
5、系统主程序流程图17
(八)程序源代码18
(九)上机调试运行结果及分析18
(十)心得体会19
(十一)参考文献20
附录一21
附录二22
附录三(源程序)23
引言
随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。
本设计论述了一种以STC89C52单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。
该控制系统可以实时存储相关的温度数据并记录当前的时间。
系统设计了相关的硬件电路和相关应用程序。
硬件电路主要包括STC89C52单片机最小系统,测温电路、实时时钟电路、LCD液晶显示电路以及通讯模块电路等。
系统程序主要包括主程序,读出温度子程序,计算温度子程序、按键处理程序、LCD显示程序以及数据存储程序等。
[关键词]STC89C52单片机;DS18B20;显示电路
(一)课题研究的背景
工业控制是计算机的一个重要应用领域,计算机控制系统正是为了适应这一领域的需要而发展起来的一门专业技术,它主要研究如何将计算机技术、通过信息技术和自动控制理论应用于工业生产过程,并设计出所需要的计算机控制系统。
随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。
本设计就是基于单片机STC89C52温度控制系统的设计,通过本次课程实践,我们更加的明确了单片机的广泛用途和使用方法,以及其工作的原理。
(二)课题研究的目的和意义
随着社会的发展,温度的测量及控制变得越来越重要。
本文采用单片机STC89C52设计了温度实时测量及控制系统。
单片机STC89C52能够根据温度传感器DS18B20所采集的温度在液晶屏上实时显示,通过控制从而把温度控制在设定的范围之内。
所有温度数据均通过液晶显示器LCD显示出来。
系统可以根据时钟存储相关的数据。
通过该课程的学习使我们对计算机控制系统有一个全面的了解、掌握常规控制算法的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼同学们在微型计算机应用方面的实际工作能力。
(三)课程设计分析设计
1、题目:
水温控制系统的设计
2、设计要求:
被控对象为1公斤净水。
容器为搪瓷器皿。
温度设定范围40-90度。
误差小于1度。
以51系列单片机控制核心通过温度传感器检测当前的水温。
并在LED数码管上显示当前的温度。
3、设计键盘电路,完成温度给定。
4、发挥部分:
以上为基本功能要求,学生可根据实际情况,在程序设计和实现功能上做进一步的扩展。
比如,设计超温报警功能、语音提示功能等等。
5、系统设计技术指标
本设计水温设定由人工设定,温度设定范围为40-90℃,最小区分度为1℃,标定温差≤1℃;环境温度降低时,温度控制的静态误差≤1℃;用十进制数码管显示水的实际温度;采用适当的控制方法,当设定温度突变(由40℃提高到90℃)时,减小系统的调节时间和超调量。
根据任务和测量控制现象以及现有的条件,此方案采用了AT89C51单片机为核心,采用温度传感器DS18B20进行温度采集,用固态继电器控制加热,使其达到电路简单、可靠的目的。
使用单片机具有编程灵活,控制简单的优点,使系统能简单的实现温度的控制及显示,并且通过软件编程能实现各种控制算法使系还具有控制精度高的特点。
(四)方案选择
1、控制电路选择的论证
方案一:
采用运放等模拟电路搭建一个控制器,用模拟方式实现PID控制,对于纯粹的水温控制,这是足够的。
但是附加显示、温度设定等功能,还要附加许多电路,稍显麻烦。
同样,使用逻辑电路也可实现控制功能,但总体的电路设计和制作比较烦琐。
方案二:
采用FPGA实现控制功能。
使用FPGA时,电路设计比较简单,通过相应的编程设计,可以很容易地实现控制和显示、键盘等功能,是一种可选的方案。
但与单片机相比,价格较高,显然大材小用。
方案三:
采用单片机最小系统同时完成控制、显示、键盘等功能,电路设计和制作比较简单,成本也低,是一种非常好的方案。
综上所述本设计采用方案三作为控制电路。
2、测温电路方案的选择
方案一:
采用热敏电阻作为测温元件。
热敏电阻精度高,需要配合电桥使用,要实现精度测量需要配上精密较高的电阻。
此外还需要制作相应的调理电路。
方案二:
采用半导体集成温度传感器作为测温元件,半导体集成温度传感器应用也很广泛,它的精度、可靠性都不错,价格也适中,使用比较简单,是一个较好的选择。
综上所述本设计采用方案二作为测温电路。
3、加热控制方案的论证
首先要选择好加热装置。
根据题目,可以采用热得快进行加热,控制热的快的功率即可控制加热速度。
当水温过高时,一般不能对水进行降温控制,而只能关掉热得快,让其自然冷却。
在制作中,为了达到更好的控制效果,也可以放置一个小风扇,当加热时开启热得快关闭风扇,当水温超高时关闭热得快开启风扇加速散热。
热得快这类电阻性电器可直接使用220V交流电,控制有两种实现方式。
它们的电压波形如图所示。
(a)(b)
具体方案如下。
方案一:
采用控制导通交流周期数的方式如图(a)所示,为了达到控制的精度,需要在一个较多的周期数中控制导通的数目,不适用于动态性能较高的控制。
水温控制系统具有较大的惯性,可以考虑这种控制方式。
方案二:
采用控制导通角的方式如图(b)所示,由于对每个周期的交流电都进行控制,因此响应速度比较高,另外由于导通角连续可调,因此控制精度比较高。
4、软件算法方案选择
方案一:
采用模糊控制算法,对于一个典型的模糊控制系统,考虑它的输入信号有偏差
和偏差变化率
两种,输出信号为控制信号
。
根据测试经验,可选取三角型隶属函数,分为正大、正中、正小、正零、零、负零、负小、负中、负大,9个档次。
然后根据控制规则列出规则基表。
这种控制方法能够较精确的实现设计要求,但是考虑到单片机的存储量,和实时性,不采取这种尚未完全推广的控制方法。
方案二:
采用经典PID控制算法和根据实验数据分区间控制的算法,对于温度系统来说,被控对象没有精确的数学模型。
热得快加热使得水温具有有热惯性,而且检测的实时数据是检测点附近的实时温度并不能完全体现1升水的实际温度,所以经典PID控制算法不能满足设计要求,还必须根据实验数据进行调整。
这种控制算法基本能够满足设计要求,且通用性较强
本设计采用方案二作为控制算法。
(五)课程设计分析设计
1、系统总体方案设计
本系统的电路设计方框图如图2-1所示,它由七部分组成:
①控制部分主芯片采用单片机AT89C51;②显示部分采用4位LED数码管以动态扫描方式实现温度显示;③温度采集部分采用DS18B20温度传感器;④加热控制部分采用继电器电路;⑤时钟电路;⑥复位电路;⑦单列3按键键盘输入设定温度值。
图2-1系统设计方框图
2、温度传感器DS18B20简介
温度传感器是整个控制系统获取被控对象特征的重要部件,它的特性直接影响系统的精度。
美国DALLAS公司生产的单线数字温度传感器DS1820,可把温度信号直接转换成串行数字信号供微机处理,是最新的“一线器件”。
它具有体积小、适用电压宽、经济、实用、线性度很好,精度较高且其本身已经进行了校正,使用时不需再进行调整等特点。
本设计采用DS18B20作为智能温度传感器,采集的数据以“一线总线”的数字方式传输直接送到单片机中,同时可传送CRC校验码,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。
图2-2DS18B20外部结构
用一线制数字温度传感器DS18B20来作为本课题的温度传感器。
传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。
DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。
该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。
本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:
(1)系统的特性:
测温范围为-55℃~+125℃,测温精度为士0.5℃;温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。
(2)系统成本:
由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。
一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。
(3)系统复杂度:
由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。
(4)系统的调试和维护:
由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。
同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。
DS18B20温度传感器只有三根外引线:
单线数据传输总线端口DQ,外供电源线VDD,共用地线GND。
DS18B20有两种供电方式:
一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。
这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。
另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短。
3、控制芯片AT89C51单片机简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM-FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位处理器,俗称单片机。
单片机的可擦除存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,其结构图及各管脚如图2-4所示。
图2-4AT89C51结构图
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收、输出4个TTL门电流。
当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
当因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位期间时,要保持RST脚两个机器周期的高电平。
当51芯片通电,时钟电路开始工作,在RST引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM的状态。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如果想禁止ALE的输出,可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EA/VPP:
当EA保持低电平时,只允许外部程序存储器(0000H-FFFFH)使用,不管是否有内部程序存储器。
注意加密方式为“1”时,EA将内部锁定为RESET;当EA端保持高电平时,只允许内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
反向振荡放大器的输出及内部时钟工作电路的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4、时钟电路简介
时钟电路是计算机的心脏,它控制着计算机的工作节奏。
CPU就是通过复杂的时序电路完成不同的指令功能的。
时钟信号可以由两种方式产生:
一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。
时钟电路频率范围为1.2~12MHz。
单片机虽然有内部振荡电路,但要形成时钟,外接晶振以及电容,构成并联谐振电路,接在放大器的反馈回路中,这种方式称为内部时钟方式。
对外接电容的值虽然没有严格的要求,但电容的大小多少会影响振荡器频率的高低、振荡器的稳定性、起振的快速性和温度稳定性。
当时钟频率为12MHz时典型值为30pF[11]。
本控制器采用的是内部振荡方式,振荡频率为12MHz,因为这种方式得到的时钟信号比较稳定。
5、键盘与LED数码显示电路简介
数码管由7个发光二极管组成,行成一个日字形,它们可以共阴极,也可以共阳极。
通过解码电路得到的数码接通相应的发光二极而形成相应的字。
数码管具有:
低耗能、低损耗、低压、寿命长耐老化,对外界环境要求低。
同时数码管采用BCD编码显示数字,程序编译容易、资源占用少。
说到七段数码管,它在家电及工业控制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间等等,具有显示醒目、直观的优点,七段数码管是由7个独立的二极管采用共阴或共阳的方法连接而成。
通常将这7个独立的二极管做成a、b、c、d、e、f、g这7个笔划,数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字。
本电路采用三位LED7段共阴数码管分别显示温度的十位、个位和小数位,用单列3按键进行温度设定。
扫描电路,节约了单片机的输出端口,便于程序的编写[8]。
其显示数字对应的二进制电平信号如表2-2所示。
表2-2显示数字对应的二进制电平信号
显示数字
a
b
c
d
e
f
g
0
1
1
1
1
1
1
0
1
0
1
1
0
0
0
0
2
1
1
0
1
1
0
1
3
1
1
1
1
0
0
1
4
0
1
1
0
0
1
1
5
1
0
1
1
0
1
1
6
0
0
1
1
1
1
1
7
1
1
1
0
0
0
0
8
1
1
1
1
1
1
1
9
0
0
0
1
1
0
1
数码管使用条件:
①段及小数点上加限流电阻;
②使用电压:
段:
根据发光颜色决定;小数点:
根据发光颜色决定;
③使用电流:
静态:
总电流80mA(每段10mA);动态:
平均电流4-5mA 峰值电流100mA;
数码管使用注意事项说明:
①数码管表面不要用手触摸,不要用手去弄引角;
②焊接温度:
260℃;焊接时间:
5s
③表面有保护膜的产品,可以在使用前撕下来
6、加热控制电路简介
根据设计要求,可以使用电热丝进行加热,控制电热丝的功率即可以控制加热的速度。
当水温过高时,关掉电热丝进行降温处理,让其自然冷却。
由于加热的功率较大,考虑到简化电路的设计,本设计直接采用220V的电源,采用继电器控制。
使用继电器可以很容易实现通过低电压、低电流控制高电压、高电流,在正常条件下,工作十分可靠。
继电器无需外加光耦,自身即可实现电气隔离,这种电路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,但可以由多路加热丝组成功率控制,由单片机对温差的处理实现分级功率控制提高系统动态性能[9]。
因此,采用继电器控制省去光耦和交流过零检测电路,在软件上选用适当的控制算法,可以达到更好的效果。
(六)系统硬件电路设计
本系统的执行方法是循环查询执行的,键盘扫描也是循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。
各电路的
关系图如图3-1所示。
图3-1系统硬件电路关系
1、温度采集电路的设计
本系统采用半导体智能温度传感器DS18B20作为敏感元件,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。
DS18B20应用广泛,性能可以满足题目的设计要求。
DS18B20的测温电路如图3-2所示。
图3-2DS18B20测温电路
2、加热控制电路的设计
由于本系统要控制电热丝加热,功率较大,因此要借助功率电路。
在器件选择上留足余量,增加安全性。
加热部分采用继电器控制,电路简单可靠。
电路如图3-3所示。
图3-3继电器控制
当实际温度低于设定值时,由单片机输出高电平信号。
三极管2N3904导通,继电器开始对水加温,为了防止继电器频繁动作,在软件中对水温测量精确到0.1℃,而在温度设定时只取整数,可以有1℃的余量。
3、键盘、显示电路的设计
本设计中以动态显示方式采用共阴极连接来驱动三个七段数码管,分别显示温度的十位、个位和小数位。
数码管采用共阴极,由于AT89C51单片机每个I/O的电流只有1-2mA,所以在位码和段码上加了相同驱动器。
键盘采用按键开关经上拉电阻分别接P1.5、P1.6、P1.7口上,起到设置、上调和下调作用。
每按上调和下调键,设定温度值增1减1。
原理图如图3-5所示。
图3-5键盘按键电路
4、显示电路
显示与指示采用七段LED共阳数码管显示,相对于LCD显示电路,电路简单多了,电路如下图4-6所示:
图4-6显示电路原理图
电路采用了8个七段共阳数码管来作为显示单元,电路通过AT89C2051单片机P0口分别与每个数码管输入端相连来分时输出数据。
5、报警模块
根据设计要求,在保温阶段,温度控制精度为正负1度,故当温度超过设定温度时需要报警提醒。
所以在电路设计上应用了蜂鸣器和发光二极管,系统正常运行时绿色发光二极管点亮,当出现故障时红色发光二极管点亮并且蜂鸣器鸣叫,提醒操作人员注意。
(七)系统软件设计
1、读取DS18B20温度模块子程序
每次对DS18B20操作时多要按照DS18B20中的协议进行。
初始化DS18B20→发ROM功能命令→发存储器操作命令→处理数据。
程序流程图如图4-1所示。
图4-1读取DS18B20温度子程序流程图
voidInit_DS18B20(void)
{
unsignedcharx=0;
DQ=1;//DQ复位
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时大于480us
DQ=1;//拉高总线
delay(14);
x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay(20);
}
/****************************从18B20中读一个字节************************/
ucharRead_OneChar(void)
{
uchari=0;
uchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//给脉冲信号
dat>>=1;
DQ=1;//给脉冲信号
if(DQ)
dat|=0x80;
delay(8);
}
return(dat);
}
2、数据处理子程序
由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。
由于本程序采用的是0.0625的精度,小数部分的值可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可[17]。
也就是说,本系统的温度精确到了0.1℃。
数据处理子程序流程图如图4-2所示。
图4-2数据处理子程序流程图
voidtimer0_isr(void)interrupt1//中断
{
ucharj;
TR0=0;
EA=0;
TH0=0xec;
TL0=0x78;
TR0=1;
EA=1;
cp++;
if(cp>=200)//刚好
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水温 控制