1、XXX 大学本科毕业设计IXXXX 大学本科毕业设计PID水温控制系统学生姓名所 在 系专业名称班 级学 号指导教师XXX 大学本科毕业设计IIPID水温控制系统学生: 指导教师:摘要:随着社会主义现代化的发展,在科学技术突飞猛进的今天,人工智能起不不可忽视的作用。尤其是各种智能化的仪器、仪表在农、工业的广泛应用给社会带来了极大的便利。本文从温控模型和特点出发,采用以单片机 PIC16F877 为核心,用 AD7416 数字温度传感器进行测量温度。以 PID 算法控制温度,并对温度进行良好的精度控制。本系统的多个部件如,定时器,加热开关,按键设置水温,实时显示温度,控制温度和报警保温等功能等都
2、可利用单片机来实现。文章着重介绍核心器件的选择、温度控制系统分析、各部份电路及软件的设计。它具有结构简单、可靠性好,抗干扰能力强、实现容易,成本低,具有实用价值等特点。它提供了一个通过温度来控制设备的基本思想和原理,相信能在实际应用中为我们的生活带来更大的便利。关键词:单片机 数字温度传感器 PID 温度控制 XXX 大学本科毕业设计IIIPID-based temperature control systemAbstract:Along with the development of socialist modernization, rapid progress in science and
3、 technology today, not artificial intelligence from the role that can not be overlooked. Especially the variety of intelligent instruments, meters in the agricultural, industrial society to the broad application brought great convenience. In this paper the characteristics of the model and temperatur
4、e control, the introduction of SCM PIC16F877 at the core, with AD7416 digital temperature sensor to measure the temperature. PID algorithm to control the temperature , and temperature control for good accuracy. Many parts of the system such as, timers, heating switches, buttons installed water tempe
5、rature, real-time display of temperature, temperature control and alarm functions, such as insulation SCM can be used to achieve. The article highlights the core device of choice, temperature control system, part of the circuit and software design. It has a simple structure, reliability, and strong
6、interference capability to achieve easy, low cost, has practical value, and other characteristics. It provides a temperature controlled equipment through the basic ideas and principles, I believe in the practical application of our life more convenient.Keywords: microcomputer digital temperature PID
7、 temperature control XXX 大学本科毕业设计IV目 录一、前 言 .1(一)设计任务及要求 1(二)方案的比较与选择 2二、总体设计 .2(一)系统总体设计 2(二)单元电路的功能原理分析 7(三)发挥部分设计 8三、系统软件设计 .9(一)程序的主流程图 9(二)各个功能模块流程 10四、系统测试与调试 .14(一)电路测试 14(二)仪器的使用 15(三)测试的结果 15(四)发挥部分测试 15五、结 论 .15致 谢 .16附 录 .17附录一 设计总电路图 17XXX 大学本科毕业设计V附录二 设计 PCB 图 .18附录三 设计 3D 图 .19附录四 程序清单
8、 20参考文献 .28XXX 大学本科毕业设计1一、前 言(一)设计任务及要求本文介绍的是一个由 PIC16F877 为核心的单片机制作的一个水温控制器。实现温度控制系统的设计过程,其中涉及系统结构设计、元器件的选取和控制控制算法的选择、和整体电路的设计以及部分电路的设计。在系统构建时选取了数字温度传感器 AD7416测量温度,基于 PID 温度控制方式实现温度控制。系统设计水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变;能在 40 摄氏度至 90 摄氏度范围内设定控制水温,静态控制精度为 0.2 摄氏度;具有较好的快速性与较小的超调等功能。自 70
9、 年代以来,由于工业过程控制的需要,特别是在微电子技术和计算机技术的迅猛发展,以及自动控制理论和设计方法发展的推动下,国外温度控制系统发展迅速,并在智能化自适应参数自整定等方面取得成果。在这方面以日本、美国、德国、瑞典等国技术领先,并且都生产出了一批商品化的性能优异的温度控制器及仪器仪表,目前,国外温度控制系统及仪表正朝着高精度智能化、小型化等方面快速发展。温度控制是无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用,过低的温度或过高的温度都会使水资源失去应有的作用,从而造成水资源的巨大浪费。特别是在当前全球水资源极度缺乏的情况下,我们更应该掌握好对水温的控制,把身边的水资源好好地利
10、用起来。在现代冶金、石油、化工及电力生产过程中,温度是极为重要而又普遍的热工参数之一。在环境恶劣或温度较高等场合下,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对加热炉炉温进行测、显示、控制,使之达到工艺标准,以单片机为核心设计的炉温控制系统,可以同时采集多个数据,并将数据通过通讯口送至上位机进行显示和控制。那么无论是哪种控制,我们都希望水温控制系统能够有很高的精确度(起码是在满足我们要求的范围内) ,帮助我们实现我们想要的控制,解决身边的问题提高人民的生活水平。通过本方案的设计,使本系统具有设置水温、实时显示温度,控制温度和报警保温等功能,它具
11、有结构简单、实现容易,成本低,具有实用价值等特点。而且还可以根据自己的需要来进行扩展,具有灵活使用的优点。1. 基本要求具备测量与控制两种工作方式;XXX 大学本科毕业设计2测量误差SetPoint*10 - NextPoint; / 偏差pp-SumError += Error; / 积分dError = pp-LastError - pp-PrevError; / 当前微分pp-PrevError = pp-LastError;pp-LastError = Error; return (pp-Proportion * Error / 比例项+ pp-Integral * pp-SumErr
12、or / 积分项+ pp-Derivative * dError / 微分项);XXX 大学本科毕业设计14N初始化开始结束计算 E一次启动?C=0计算 C记录当温计算 U返回 U图 11 温度控制框图5其他功能模块数据处理、保温、定时计数等其他功能程序都根据程运行时间进行了统筹设计,在此不再进行详述。四、系统测试与调试(一)电路测试电路焊接无误后,先将数字温度传感器放到水里,LED 会显示出当前水的温度,再放一支标准温度计与之比较,若几乎相等,则说明电路无误;再设定目标温度,若可以自动加热,使达到目标温度,则说明电路测试无误,实验可以正常进行。XXX 大学本科毕业设计15(二)仪器的使用首先
13、连接好相应的电源线,将温度计和传感器放在水里,此时数码管会显示出当前温度值,用户可以根据需要设定目标温度值,按下加热开关可开始加热。当温度达到你所想要的温度时,系统会自动断电,接着系统它又会进入保温系统,进行保温。(三)测试的结果根据测试得到的部分实验数据如表 5-1:实验数据验证说明,测量误差为 0.3控制误差为 0.4,因此本系统的设计不管是在采样控制显示温度,还是在实时处理显示精度上,都取得了理想的效果。表 2 数据测量表当前温度值 20.5 20.5 30 40 50 60 50.5 13 11 80目标温度值 60 30 40 50 70 80 60 40 20 90精确温度值 60
14、.3 30.2 40.2 50.0 70.5 80.1 60.3 40 20.3 89.9实测温度值 60.4 30.3 40.2 49.8 70.4 80.2 60.2 40.2 20.2 90.2测量精度 0.1 0.1 0 0.2 0.1 0.1 0.1 0.2 0.1 0.3控制精度 0.4 0.3 0.2 0.2 0.4 0.2 0.2 0.2 0.2 0.2(四)发挥部分测试当温度达到目标温度后,系统会自动报警提醒用户。这时候,系统会进入保温状态。温度时温度达到的最高温度与目标温度的差值只有 0.3 的误差。五、结 论本次实验采用了 PICC 编程方式,实现了温度的测量与控制,完全
15、达到了本次实验的要求,更重要的是该实验的测量误差小于 0.3度,控制误差小于 0.4度,已基本实现本实验扩展部分的要求。它可以广泛用于温度测量精度要求比较高的场面,实现简单,成本低。综上所示,本系统的方案具有实用推广价值。本系统通过添加一个传感器,将其贴放在电热杯的内壁上,系统开始加热,若温度迅速上升,则说明杯中水不足,很有可能为干烧,为不安全加热,用户请注意,这属于该系统需要改进的地方。XXX 大学本科毕业设计16致 谢通过这次毕业设计,论文基本上掌握了开发一个电子监控控制系统的基本思路和实施步骤。在设计和论文写作的整个过程中,指导汪光宅教授和刘强老师在各方面都给予了全面的指导和帮助。导师的
16、精深渊博知识、求实创新、勤奋严谨的治学风范、忘我的工作作风时刻熏陶着我;导师的因材施教、诲人不倦的授业精神给学生留下了深刻的印象,这将使我受益终身。在校期间,得到辅导老师的亲切关怀和无私的培养,使我在学习的过程学到了许多做人的道理。在此我向他们道声:您们辛苦了!感谢四川师范大学成都学院的老师们多年来在工作、学习上给予的热情关怀、指导与帮助。另外,互联网上一些朋友也给我完成设计提出了很多宝贵的意见和无私的帮助。这对于我以后的学习和工作都有很大的帮助,在此对他们表示由衷的感谢。特别感谢我的姐姐对我的默默奉献,在学习上的理解和大力支持!感谢父母及家人多年来的在生活和学习上的鼓励和支持!XXX 大学本
17、科毕业设计17附 录附录一 设计总电路图XXX 大学本科毕业设计18附录二 设计 PCB 图XXX 大学本科毕业设计19附录三 设计 3D 图XXX 大学本科毕业设计20附录四 程序清单#include /头文件unsigned char s14,s24;/采集温度数据并存储到两个数组中,高字节存到 S1 中,低字节存到 S2 中unsigned int counter1,counter2 ,figure1=2,figure2,flag2;/定时器,目标温度,标志位申明unsigned int num1,num2,flag1=0,i,j,m;/采集温度数据 num1:整数位,num2 :小数位
18、,启动标志位 flag1 及延时变量申明double y,temp,e ,c, t,u,k;/模糊控制参数申明const char table10=0x3f,0x06,0x5b,0x4f ,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/不带小数点笔段码const char table010=0xbf,0x86,0xdb,0xcf,0xe6 ,0xed,0xfd ,0x87,0xff,0xef;/带小数点笔段码/*系统 I/O 端口初始化子程序*/void INITIAL()OPTION=0X0F;ADCON1=0X07;/设定 RA 口为变通数字端口TRISD=0;TRISB=
19、0;PORTD=0;PORTB=0;TRISA2=1;TRISA3=1;TRISC0=0;TRISA0=0;TRISA1=0;TRISC1=0;RC0=0;RC1=0;RA0=0;RA1=0;/tmr1 初始化子程序void tmr1int()TMR1IF=0;PEIE=1;TMR1IE=1;T1CON=0X30;/tmr2 初始化子程序void tmr2int()XXX 大学本科毕业设计21TMR2IF=0;PEIE=1;TMR2IE=1;T2CON=0X7B;PR2=255;/i2c 初始化子程序void i2cint()SSPCON=0X08; /初始化 sspcon 寄存器TRISC3
20、=1; /设置 scl 为输入口TRISC4=1; /设置 sda 为输入口SSPSTAT=0X80; /初始化 sspstat 寄存器SSPADD=19; /设定 i2c 波特率 50khz 频率SSPCON2=0X00; /初始化 sspcon2 寄存器di(); /关闭总中断SSPIF=0; /清 ssp 中断标志SSPEN=1; /ssp 模块使能 /5ms 延时子程序void delay()for(j=300;-j;)continue;/用户目标温度输出子程序void ledout()PORTB=tablefigure1;RD7=1;delay();RD7=0;PORTB=table
21、figure2;RD6=1;delay();RD6=0;PORTB=0X40;RD5=1;delay();RD5=0;/键盘服务子程序int keyserve()XXX 大学本科毕业设计22RC0=0;RC1=1;if(RA2=0)figure1+=1;RC0=1;RC1=0;if(RA2=0)figure2+=1;if(figure1=10)figure1=2;if(figure2=10)figure2=0;RC0=0;RC1=1;if(RA3=0)flag1=1;RC0=0;RC1=0;i2cin();display();while(1)if(RA2=1)i2cin();/模糊控制算法fl
22、oat control( ) if(flag2=1) /判断是否第一次启动控制c=0; /是,则 C 设定为 0;else c=(float)(num1*100+num2)/100-temp;/否,则 C 为当前温度与上一采样温度之差u=k*e+(1-k)*c; /模糊控制公式temp=(float)(num1*100+num2)/100;/记录上一时刻温度值return u; /返回控制参数 /冒泡从小到大排序算法void bubblesort(char a,int num)int m,n,flag=1 ,temp;for(m=1;man+1)flag=1;XXX 大学本科毕业设计23tem
23、p=an;an=an+1;an+1=temp;/led 显示部分int display()CLRWDT();bubblesort(s1,4);/S1 从小到大排序bubblesort(s2,4);/S2 从小到大排序num1=(s11+s12)/2; /滤去最大,最小数再求平均值PORTB=tablenum1/10;/送显RD4=1;delay();RD4=0;PORTB=table0(num1-(num1/10)*10);RD3=1;delay();RD3=0;PORTB=tablenum2/10;RD2=1;delay();RD2=0;ledout();/目标温度显示int i2cin() /数据接收子程序for(i=0;i=(float)(figure1*10+figure2) /判断当前温度是否大于等于目标温度 RA0=1; i2cin(); RA0=0; / 是,则不可控制并报警else /否,则执行下列程序while(1)if(float)(num1*100+num2)/100=(float)(figure1*10+figure2-7)TMR2ON=0;i2cin();