ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:558.48KB ,
资源ID:17667466      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-17667466.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机温度控制论文.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于单片机温度控制论文.docx

1、基于单片机温度控制论文指导教师评定成绩: 审定成绩: 重 庆 邮 电 大 学自 动 化 学 院计算机控制技术课程设计报告 基于单片机的温度控制系统设计单位(二级学院): 学 生 姓 名: 专 业: 班 级: 0810901 学 号: 指 导 教 师: 设计时间: 2012 年 6 月重庆邮电大学自动化学院制设计题目基于单片机的温度控制系统设计1、设计目标及技术要求:(1)设计出了相应的电子电路和控制软件流程及源代码;(2)控制算法采用PID控制算法。2、设计过程要求:(1)确定总体方案;(2)软、硬件设计;(3)其他:稳压电源设计、转速到脉冲信号的转化用光电传感器或霍尔传感器来实现,信号采集、

2、计数、数码显示、报警等功能用单片机8051来控制并实现。摘 要本课程设计主要是讲述基于单片机温度控制系统设计。主要组成部分:单片机(89C52)、温度传感器(DS18B20)、LCD1602显示、继电器,SET-300温度测量控制仪。本系统可以实时的显示实时温度和设定温度,实现对温度的PID控制。经过实践表明,本设计对温度的控制有方便、简单的特点,工作在50-100时,误差范围在2-3%,基本可以实现精确控制,达到了相关的技术指标。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机,单片机再将实时得到的数据进行PID计算,得到了PWM的宽度,再输送给继电器,从而实现对SET-

3、300的控制。关键词: 温度控制系统,单片机,DS18B20,PID算法 目 录第一章 系统总体设计 21、系统设计任务与要求 2(1)、系统设计任务与要求 2(2)、重点内容 2(3)、实现途径及方法 22、系统总体方案设计 3(1)、方案选择 3(2)、总体设计方案 4第二章 系统的硬件设计 51、主控模块的设计 5(1)、STC89C52单片机简介 5(2)、温度传感器的选择 6(3)、复位和时钟电路的设计 8(4)、温度采集电路 9(5)、继电器驱动电路 92、人机交互设计 10(1)、按键的设计 10(2)、显示电路的设计 10第三章 系统软件设计 121、主程序模块 122、温度采

4、集和显示模块 133、输入模块 18第四章 PID控制算法和参数整定 191、PID调节器控制原理 192、PID参数的整定 19(1)、采样周期选择的原则 20(2)、实验确定法整定PID参数 203、数字PID 21第五章 心得体会 24参考文献 25附录一 硬件连线图 26附录二 源程序 27 第一章 系统总体设计1、系统设计任务与要求(1)、系统设计任务与要求本温度控制系统采用89C52单片机为控制芯片,传感器采用智能温度传感器DS18B20,实现对温度的检测和控制。技术参数:可以实现精确的控制温度范围为50-100。该温度控制系统系统由温度信号采集电路,独立按键及LCD1602显示电

5、路,继电器电路等构成,并运用PID算法进行温度控制和调整。根据设计任务,详细分析了温度控制系统的设计需求,本小组对软硬件进行总体设计。由键盘电路输入设定温度信号给单片机,温度信号由DS18B20将采集的温度信号直接转换成数字量输给单片机,单片机根据输入与反馈信号的偏差进行PID计算,输出控制量,再由控制量计算出PWM的占空比,从而输出PWM波形给继电器,由继电器去控制SET-300,实现升温。LCD1602则显示实时温度和设定的温度值。本设计需要设计出具体实物。(2)、重点内容本设计包括硬件设计和软件设计。硬件设计主要包括温度信号采样电路,键盘及显示电路,继电器控制电路等,其中硬件设计重点是温

6、度显示电路和继电器控制电路。软件设计主要完成DS18B20子程序设计,键盘处理子程序、LCD1602显示子程序、PID算法子程序,PWM调制子程序等工作。(3)、实现途径及方法本系统主要通过资料查找、系统需求分析、系统总体设计,软硬件总体设计、详细的软件与硬件设计、系统仿真与调试、资料整理等步骤来完成。本系统最终要利用单片机的最小系统来做一个实物,利用Keil C51软件完成系统控制软件的编译调试工作,并且在自己做的实物上进行调试。2、系统总体方案设计(1)、方案选择方案一:图1 方案一的图此方案是传统的一位式模拟控制方案,选用模拟电路,用电位器设定值,反馈的温度值和设定值比较后,决定加热或不

7、加热。其特点是电路简单,易于实现,但是系统所得结果的精度不高并且调节动作频繁,系统静态差大、不稳定。系统受环境影响大,不能实现复杂的控制算法,不能用LCD1602显示,不能用键盘设定。方案二:图2 方案二的图此方案采用STC89C52单片机系统来实现。单片机软件编程灵活、自由度大,可用软件编程来实现PID控制算法。单片机系统可以用LCD1602来显示实时温度值,能用键盘输入设定值。最终结论:方案一是传统的模拟控制方式,而模拟控制系统难以实现复杂的控制规律,控制方案的修改也较为繁琐。而方案二是采用以单片机为控制核心的控制系统,尤其对温度控制,可达到模拟控制所达不到的效果,并且实现显示和键盘设定功

8、能,大大提高了系统的智能化。也使得系统所测得结果的精度大大提高。所以,经过对两种方案的比较,本小组最终采纳了方案二。(2)、总体设计方案 在控制芯片上,我们采用STC89C52单片机。在温度传感器的选择上我们采用温度芯片DS18B20测量温度。该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。在01000C时,最大线形偏差小于10C。该芯片直接向单片机传输数字信号,便于单片机处理及控制。本制作的最大特点之一就是直接采用温度芯片对温度进行测量,使数据传输和处理简单化。对于温度的调节系统,我们采用的只是简单的升温方法,当温度低于我们设定的温度值时,则单片机系统由PID算法产生PWM

9、来控制继电器,继电器控制SET-300来提高温度。在这个过程中,我们通过单片机将传感器所测量出来的温度通过LCD1602可以显示出来。这样就能实时显示温度情况。 本设计采用了PID控制。在工程实际中,PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型,控制理论的其他技术也难以采用,系统控制器的结构和参数必须依靠经验和现场调试来确定时,应用PID控制技术最为方便。 PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时问和微分时间的大小。PID控制器参数整

10、定的方法概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。第二章 系统的硬件设计1、主控模块的设计(1)、STC89C52单片机简介 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系可编程Flash 存储器。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使STC89C5

11、2为众多嵌入式控制应用系统提供高灵活、有效的解决方案。 STC89C52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 STC89C52的广泛使用使得市面价格较8155、8255、8279要低,所以说用它

12、是比较经济的。该芯片具有如下功能:有1个专用的键盘/显示接口;有1个全双工异步串行通信接口;有2个16位定时/计数器。这样,1个STC89C52,承担了3个专用接口芯片的工作;不仅使成本大大下降,而且优化了硬件结构和软件设计,给用户带来许多方便。STC89C52有40个引脚,有32个输入端口(I/O),有2个读写口线,可以反复插除。所以可以降低成本。 其主要工作特性为: 内含8KB的Flash存储器,擦写次数达1000次; 内含128字节的RAM; 具有32根可编程I/O线; 具有2个16位可编程定时器; 具有6个中断源、5个中断矢量、2级优先权的中断结构; 具有1个全双工的可编程串行通信接口

13、; 具有1个数据指针DPTR; 两种低功耗工作模式,即空闲模式和掉电模式; 具有可编程的3级程序锁定位; 工作电源电压为51.2V,典型值为5V; 最高工作频率为24MHz。 引脚排列如图3所示。图3 STC89C52引脚排列(2)、温度传感器的选择DS18B20原理与特性:本系统采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,大大简化了电路的复杂度,以及算法的要求。首先来介绍一下DS18B20这块传感器的特性及其功能: DSl8B20的管脚及特点 DS18B20可编程温度传感器有3个管脚。内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH

14、和TL、配置寄存器。DS18B20的外形及管脚排列如图4所示GND为接地线,DQ为数据输入输出接口,通过一个较弱的上拉电阻与单片机相连。VDD为电源接口,既可由数据线提供电源,又可由外部提供电源,范围3O5.5 V。主要特点有: 用户可自设定报警上下限温度值。 不需要外部组件,能测量55+125 范围内的温度。 10 +85 范围内的测温准确度为05 。图4 DS18B20的外形及管脚图 通过编程可实现9l2位的数字读数方式,可以分别在93.75 ms和750 ms内完成9位和12位的数字量,测温分辨率可达0.0625 。 独特的单总线接口方式,与微处理器连接时仅需要一条线即可实现与微处理器双

15、向通讯。 测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 DS18B20支持多点组网的功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 DS18B20的工作过程如下:初始化ROM操作命令存储器操作命令数据处理。本次设计要用到的ROM操作命令有:跳过ROM(0xCC),因为只是单线操作,所以无需读取ROM编码。要用到的存储器操作命令有:温度变换命令(0x44),读暂存存储器(0xBE)。温度转换命令发布后,经转换得到的温度值以二进制补码形式放在高速暂存

16、存储器的第0和第1个字节。单片机可通过单口读取该数据,读取时,低位在前,高位在后。读到的二进制码中,前5位是符号位,后四位是小数位,中间是整数位。只要将得到的数值乘以0.0625即可以得到实际温度。表1 DS18B20温度数据表温度/二进制补码表示十六进制表示符号位(5位)数据位(11位)+1250 0 0 0 01111101000007D0H+25.06250 0 0 0 0001100100010191H+10.1250 0 0 0 00001010001000A2H+0.50 0 0 0 0000000010000008H00 0 0 0 0000000000000000H-0.51

17、1 1 1 111111111000FFF8H-10.1251 1 1 1 111101011110FF5EH-25.6251 1 1 1 111001101111FE6FH-551 1 1 1 110010010000FC90H(3)、复位和时钟电路的设计本系统中采用手动按键复位方式。本系统电路采用的晶体振荡器频率为110592MHz。采用这种频率的晶体振荡器的原因是可以方便的获得标准的波特率。复位电路和时钟电路如图5所示。按钮复位采用电平复位方式,按下复位电钮时,电源对外接电容充电,使RST/VPD端为高电平,复位按钮松开后,电容通过内部下拉电阻放电,逐渐使RST/VPD端恢复低电平。图5

18、 复位电路和时钟电路(4)、温度采集电路数据采集电路如图6所示,1脚接地,2脚即为单总线数据口,3脚接电源。温度传感器DS18B20采集被控对象的实时温度,提供给STC89C52的P2.1口作为数据输入。 图6 数据采集电路(5)、继电器驱动电路通过PID算法计算得出的PWM波形最终将输送给继电器,由继电器去控制开关来选择是否加热。本次设计使用的继电器型号是HK4100F-DC5V-SHG,由单片机自带的ULN2003芯片来驱动继电器,继电器的输入接口是P2.4,而且还接有一个发光二极管,当继电器导通的时候,该发光二极管会亮,PWM输出波形的效果增加明显。图7为继电器的接线图。图7 继电器电路

19、图2、人机交互设计(1)、按键的设计在本设计只需要两个按键,由于I/O口被占用,本设计将矩阵键盘改成两个独立的按键,按键的分布如图8所示。K1键为设定温度值的加一键,K2为设定温度值的减一键。图8 独立按键(2)、显示电路的设计本设计的显示采用LCD1602。图9为LCD1602的引脚图。图9 LCD1602引脚图1602采用标准的16脚接口,其中: 第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存

20、器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第1516脚:空脚在本设计中LCD1602与单片机的连接如图10所示。单片机的P0口为数据输出口,接到LCD1602的DB0DB7口,P3.4-P3.6为控制端,分别接使能端E,寄存器选择RS和读写信号线R/W,共同控制LCD1602读写操作。图10 LCD1602

21、显示电路图第三章 系统软件设计系统的软件主要由主程序模块、温度采集模块、显示模块,PID算法模块等组成。主模块的功能是为其余几个模块构建初始化工作;温度采集模块的作用是获取温度转换后的数字量;显示模块则是将采集到的温度和设定温度一并输出。PID算法模块完成PID运算并给出控制量。1、主程序模块主程序模块要做的主要工作是上电后对系统初始化,包括对单片机的初始化、DS18B20的初始化,LCD1602初始化等。若系统运行,则依次调用各个相关模块,循环控制直到系统停止运行。主程序模块的程序流程图如11所示。图11 主程序流程图2、温度采集和显示模块温度采集模块的任务是负责温度信号的采集以及将采集到的

22、数字量提供给单片机。STC89C52通过控制DS18B20读取实时温度,然后,通过P0口送到LCD1602进行显示。温度数据采集模块程序流程图如图12所示,显示程序设计框图如图13所示。图12 温度采集和处理流程图图13 温度显示流程图/*以下是LCD1602驱动程序*/void lcd_delay(uchar ms) /LCD1602延时 uchar j; while(ms-) for(j=0;j250;j+) ; void lcd_busy_wait() /LCD1602忙等待 lcd_rs_port = 0; lcd_rw_port = 1; lcd_en_port = 1; lcd_d

23、ata_port = 0xff; while (lcd_data_port&0x80); lcd_en_port = 0; void lcd_command_write(uchar command) /LCD1602命令字写入 lcd_busy_wait(); lcd_rs_port = 0; lcd_rw_port = 0; lcd_en_port = 0; lcd_data_port = command; lcd_en_port = 1; lcd_en_port = 0; void lcd_system_reset() /LCD1602 初始化 lcd_delay(20); lcd_com

24、mand_write(0x38); lcd_delay(100); lcd_command_write(0x38); lcd_delay(50); lcd_command_write(0x38); lcd_delay(10); lcd_command_write(0x08); lcd_command_write(0x01); lcd_command_write(0x06); lcd_command_write(0x0c); void lcd_char_write(uchar x_pos,y_pos,lcd_dat) /LCD1602 字符写入 x_pos &= 0x0f; /X位置范围 015

25、 y_pos &= 0x01; /Y位置范围 0 1 if(y_pos=1) x_pos += 0x40; x_pos += 0x80; lcd_command_write(x_pos); lcd_busy_wait(); lcd_rs_port = 1; lcd_rw_port = 0; lcd_en_port = 0; lcd_data_port = lcd_dat; lcd_en_port = 1; lcd_en_port = 0; void lcd_bad_check() /LCD1602 坏点检查 char i,j; for(i=0;i2;i+) for(j=0;j0;i-) DQ

26、= 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(4); return(dat);WriteOneChar(unsigned char dat) /写一个字节 unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; void ReadTemper(void) unsigned char a,b; TR0=0; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作 Wri

27、teOneChar(0x44); / 启动温度转换 delay(50); / 这个延时很重要 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等前两个就是温度 delay(50); a=ReadOneChar(); /读取温度值低位 b=ReadOneChar(); /读取温度值高位 b=b&0x07; temper=(a4)|(b4); c=a&0x0f; c=c*10/16; TR0=1;/*以上是DS18B20驱动程序*/3、输入模块键盘输入采用扫描方式工作,。键盘处理子程序流程图如图14所示:图14 键盘程序设计框图void scan() /键盘扫描函数 jiedi=0; if(plus=0) /加一键 delay_1ms(5); if(plus=0) temp_set+; while(plus=0);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2