1、温度控制系统设计报告完整 作者: 日期:16 &nbs
2、p; 个人收集整理 勿做商业用途温度控制系统设计方案 梅欢杰 AP0904227 谭兆聪 AP0904228 王耿禄 AP0904229设计要求:1、基本要求容器内环境温度设定范围:,最小区分度为1;当容器内环境温度降低时(例如用电风扇降温),温度控制的静态误差1;显示容器内环境的实际温度.2、发挥部分采用适当的控制方法,当设定容器内环境温度突变(由30提高到50)时,减小系统的调节时间和超调量,同时自动打印其温度随时间变化的曲线;温度
3、控制的静态误差0。2;采用发光二极管光柱形式和数码形式显示白炽灯灯壁上的温度;其它。基本设计思路:由题目要求可知,本系统对温度控制的精度要求比较高,因此考虑使用PID控制来控制系统温度,而热源的控制采用PWM波来进行精确控制.由温度传感器来传回温度数据,由单片机处理数据并发出相应的动作,从而保证温度的恒定。89S52单片机温度信号采集电路温度控制驱动电路电热元件单片机控制部分供电加热部分供电方案论证:(1)温度传感器DS18B20是达拉斯公司生产的数字温度传感器,测温范围在55125,采用单总线通信微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。精度可以达到0。0625
4、.(2)主控芯片51系列的8位单片机(3)显示及键盘 LCD1602液晶显示。系统设计概要:(1)系统外形缩略图恒温箱控制器热源18B20(3)PID算法PID算法是本程序中的核心部分.我们采用PID模糊控制技术,通过Pvar、Ivar、Dvar(比例、积分、微分)三方面的结合调整形成一个模糊控制来解决惯性温度误差问题.其原理如下:本系统的温度控制器的电热元件之一是发热丝。发热丝通过电流加热时,内部温度都很高.当容器内温度升高至设定温度时,温度控制器会发出信号停止加热。但这时发热丝的温度会高于设定温度,发热丝还将会对被加热的器件进行加热,
5、即使温度控制器发出信号停止加热,被加热器件的温度还往往继续上升几度,然后才开始下降.当下降到设定温度的下限时,温度控制器又开始发出加热的信号,开始加热,但发热丝要把温度传递到被加热器件需要一定的时候,这就要视发热丝与被加热器件之间的介质情况而定.通常开始重新加热时,温度继续下降几度。所以,传统的定点开关控制温度会有正负误差几度的现象,但这不是温度控制器本身的问题,而是整个热系统的结构性问题,使温度控制器控温产生一种惯性温度误差。增量式PID算法的输出量为 Un = Kp(enen-1)+(T/Ti)en+(Td/T)(en2en-1+en-2)式中,en、en1、en-2分别为第n次、n-1次
6、和n-2次的偏差值,Kp、Ti、Td分别为比例系数、积分系数和微分系数,T为采样周期.计算机每隔固定时间 T将现场温度与用户设定目标温度的差值带入增量式PID算法公式,由公式输出量决定PWM方波的占空比,后续加热电路根据此PWM方波的占空比决定加热功率.现场温度与目标温度的偏差大则占空比大,加热电路的加热功率大,使温度的实测值与设定值的偏差迅速减少;反之,二者的偏差小则占空比减小,加热电路加热功率减少,直至目标值与实测值相等,达到自动控制的目的。 硬件设计1、单片机最小系统单元 主控机系统采用了Atmel 公司生产的 AT89S52单片机,它含有256 字节
7、数据存储器,内置8K 的电可擦除FLASH ROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。复位电路和晶振电路是AT89S52 工作所需的最简外围电路.单片机最小系统电路图如下图所示。 单片机最小系统图 AT89S52 的复位端是一个史密特触发输入,高电平有效。RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。在复位电路中,按一下复位开关就使在RST端出现一段时间的高电平,外接24M 晶振和两个30pF 电容组成系统的内部时钟电路。2、18B20温度传感器美国DALLAS公司的产品可编程单总
8、线数字式温度传感器DS18B20可实现室内温度信号的采集,有很多优点:如直接输出数字信号,故省去了后继的信号放大及模数转换部分,外围电路简单,成本低;单总线接口,只有一根信号线作为单总线与CPU连接,且每一只都有自己唯一的64位系列号存储在其内部的ROM存储器中,故在一根信号线上可以挂接多个DS18820,便于多点测量且易于扩展。由图可知,18B20只占用一个IO口,只要将传感器的第二脚接到单片机的P3.7口即可向单片机传输数据。3、键盘显示部分电路独立按键设计比起中断键盘相对简单很多,因为本系统只有两个按键,及用程序扫描键盘即可,液晶的八个数据口接P0口,三个控制端口R/S、R/W、E分别接
9、P1.2、P1。3、P1.4。4、PWM驱动电路驱动部分主要采用IRF540N场效应管,它最大可以通过28A电流,驱动能力相当强悍,由R3的的一端接单片机I/O口,高压部分和低压部分使用用光电耦合器隔离,信号单向传输,输入端与输出端完全实现了电气隔离隔离,输出信号对输入端无影响,抗干扰能力强,工作稳定,无触点,使用寿命长,传输效率高。5、光柱部分电路光柱由74HC373来驱动,由于锁存器可以灌输较大的电流,从而可以保证LED灯的亮度,通过LE锁存端得锁存作用,可以防止灯柱因IO口电平快速变化而造成灯柱闪烁。当锁存端LE为高电平时,锁存器直通,灯柱跟随IO口的电平变化,结束后LE变回低电平锁存数
10、据.软件设计1、系统主程序本系统的系统主程序采用C语言编写,基本流程如下: 检测系统温度向液晶输出当前温度键盘扫描响铃2S定时器0、1初始化液晶初始化是否达到设定温度PID控制输出量灯柱控制StartEND是否有按键按下温度设定值步进1是否是否主程序开始后进行各个模块初始化,启动定时器0和定时器1分别用作PWM发生器和响铃时间控制器,而后18B20开始检测系统环境温度,液晶显示函数输出当前的系统温度,接着键盘扫描函数开始扫描键盘,判断是否有按键按下,并且判断提高设定温度还是降低设定温度,响铃控制函数判断温度是否已达到设定温度,当达到时开启蜂鸣器响铃2S,PID控制器通
11、过18B20的返回值和设定值相比较,通过改变PWM的占空比来改变输出量的大小.灯柱显示当前的PWM波的占空比。(1) 定时器0中断程序 在定时器0中断程序中加入控制PWM占空比的计数变量,当这个变量值在1至71,在PID控制函数中只要改变这个变量的值就可以改变输出PWM的占空比。变量取1时占空比最小,此时输出功率最小,当变量取70时占空比最大,此时的输出功率最大。(2) 蜂鸣器响铃程序 如果响铃程序仅仅简单的判断是否达到设定温度响铃的话,铃声可能就会响很长时间,这是我们不愿看到的情况,因此响铃程序是这样实现的:响亮标志flag=1响铃2S系统
12、温度高于设定温度&&flag=0为真温度低于设定温度响铃标志flag=0是否是否响铃标志flag=1通过响铃标志位flag的作用,只有温度从低温到达高温的时候系统才会响铃。(3) 灯柱控制函数 灯柱所显示的就是当前PWM的占空比,当占空比越高的时候灯柱上的灯亮的越多,为实现这个功能我们采用了多分枝判断函数,具体流程如下:PWM占空比小于25%是否PWM占空比25%50%PWM占空比50%75%PWM占空比75%100%否否点亮四个LED点亮两个LED灯不亮点亮六个LED是是是 (4) PID控制程序
13、PID及Pvar、Ivar、Dvar(比例、积分、微分),通过PID控制器来控制的灯泡的发热量,测温系统的返回值作为PID控制函数的输入值,经过函数的处理得到相应的控制量,具体函数处理过程为,由测温系统的返回值Temperature,和设定温度Set的差值计算出误差量Error,Error*Kp得出比例项输出量PID1,积分项变量Integral=Error,从而得出积分项输出量PID2=Integral*Ti,对本系统实验证明,单用PI控制已经满足要求,因此我们没有再加入微分项。系统调试与校准测试环境温度()测试仪器测试仪器量程()测试仪器分度()温度计误差()32液体酒精温度计010010
14、.52.5(1)18B20校准因为18B20是存在误差,因此需要与标准温度计做矫正.第一次测量数据:18B20()T1温度计温度()T2误差()T2-T129.80300。2030.78310。2231.80320。2032。50330。5033.44340。5634。25350。7535。28360。7236。00371.0036。90381.1037.50391。5038.38401。62第二次测量数据:18B20()T1温度计温度()T2误差()T2T130。8131.50。6930.78310.2231.80320。2032.50330.5033.44340。5634.13350.87
15、35。436。20.8036。0036。90.9037。0638.00。9438。0039。81.8039.0040。41.40测量误差曲线:较正后测量数据:18B20()T1温度计温度()T2误差()T2T130。1530-0。150 31。1131-0.110 32。132-0.100 33.1233-0。120 34.0734-0.070 34.98350.020 36。0136-0.010 37。15370.150 38.13380。130 39。02390。020 40.08400.080 (2)误差产生原因 1、本系统中误差,一部分来自18B
16、20的设计误差,18B20的理论设计上的误差曲线如下: 我们的系统工作在3040之间,理论典型误差基本应在0。2。因此Error1是由18B20本身所产生的。 2、第二部分的系统误差来自于温度计,由于我们使用的是液体酒精温度计其本身就有很大的误差,它的分度值为1,十分位上会存在估读误差而温度计的误差有在0.52.5之间,但为标准统一起见我们以温度计的读书为准校对18B20。3、空气的比热约1。40 Cv,当温度传感器所感受的的温度到达设定值得时候,由于热量分布不均匀,温度计和温度传感
17、器之间有一定的距离这也会造成测量温度误差。(3)减小误差的方法1、DS18B20的设计误差无法避免,要提精度必须采用更高精度的温度传感器。2、根据误差度数做出温度误差曲线,根据曲线的近似斜率对18B20进行相应的温度补偿,尽量减小系统误差。3、温度传感器和温度计尽量靠近,以减小热量分布不均匀所产生的误差.系统设计总结:本系统主要由王文涛和陈志超完成,在制作阶段陈志超主要负责硬件和单片机最小系统的焊接,软件及编程工作主要由王文涛完成,我们在制作的过程中遇到了不少问题,譬如PID算法的应用,我们之前并没有接触过PID算法,只是在系统调试时使用比例控制,但根本无法达到预期的效果,从而我们开始了解PID算法及其应用原理,并将其应用到我们的系统之中.经过这次的制作,我们进一步的掌握的系统调试的一些技巧,积累了实践经验,我们深刻的认识到了理论和实际还是有很大的差距的。原来以为不用多少时间就能完成任务,当时我们觉得这是最简单的一个系统,但结果用了整整四天的时间,虽然花了一定的时间和精力,可是也学到了不少东西,知识是不用说的,还有就是团队合作精神。