还剩40页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2013届本科毕业设计(论文)电加热器温度的数字PID控制ThedigitalPIDcontrolofelectricheater学院工学院专业班级电子信息工程0902班姓名王阿东学号090102050112指导教师赵世强副教授完成时间2013年4月10日二〇一三年四月论文题目电加热器温度的数字PID控制专业电子信息工程学生王阿东签名指导教师赵世强签名摘要温度是重要的物理量,温度的测量和控制,在工业生产和科研工作中都非常重要本文介绍了一种以STC89C52单片机为检测控制中心的数字式水温自动控制系统温度测量部分采用单总线集成温度传感器DS18B20,使系统简单可靠,且易于操作温度设置部分采用四个独立按键组成,显示部分采用四位共阴数码管显示,使系统变得简便而高效温度控制采用PID数字控制算法,通过计算偏差值来控制光耦合和可控硅的通断,从而控制加热器的加热程度实际调试表明,采用PID算法能使温度稳定在设定值附近关键词:PID算法;单片机;温度控制;光耦合;可控硅Title:ThedigitalPIDcontrolofelectricheaterMajor:ElectronicinformationengineeringName:WangAdongSignature:Supervisor:ZhaoShiqiangSignature:ABSTRACTTemperatureisanimportantphysicalquantitiesTheTemperaturesmeasurementandcontrolareveryimportantInindustrialproductionandscientificresearchwork.ThisarticleintroducesaautomaticdigitalwaterstemperaturecontrolsystemusingtheSTC89C52microcontrollerasthedetectandcontrolcenter.ThetemperaturemeasurementpartusestheonebusintegratedtemperaturesensorDS18B20whichmakingthesystemmoreSimpleandreliableAndeasytooperate.Temperaturesettingpartismadeupoffourseparatebuttons,andDisplaypartadoptsfourLedDisplaytodisplaywhichmadethesystemeasyandefficient.TheTemperatureiscontroledbythePIDDigitalcontrolalgorithm.TheheaterusesthecommonfastheaterwhichtheOrdinaryfamiliescommonlyused.Keywords PIDalgorithm;MCU;Temperaturecontrol;Optocoupler;Siliconcontrolled目录TOC\o1-3\h\u前言11硬件系统设计
21.1系统总体框图
21.2单片机系统
31.
2.1单片STC89C52………………………………………………………………
31.3数字温度传感器DS18B
2041.
41.
51.
51.4温度显示部分
61.5温度设定部分
61.6光耦器件
71.
6.1光电耦合器件简介……………………………………………………………
71.
6.2光电隔离技术的应用…………………………………………………………
71.
6.3光耦器件MOC3040……………………………………………………….....
81.7可控硅
81.
7.1可控硅简介……………………………………………………………………82PID算法
102.1PID算法简介
102.2PID算法的程序设计
122.3PID算法参数整定方法133软件设计
153.1PID控制流程
153.2系统软件设计总流程图164结语17参考文献18致谢20附录20前言温度控制已成为工业生产、科研领域中很重要的一个环节能否成功地将温度控制在需要的范围内关系到整个工作的成败由于控制对象的多样性和复杂性导致采用的温控手段也具有多样性采用PID控制原理研制成适合用于小型电加热器的温度控制器该控制器能够达到很好的控制效果若精心选择PID的各种参数温度控制的精度可以达到±
0.05℃温度控制的目的就是将电加热器的工作温度以一定的精度稳定在一定的范围内这就要求根据电加热器工作时的实际情况如产热量大小等采取一定的措施来控制电加热器的加热程度在温控系统中首先将需要控制的被测参数温度由传感器转换成一定的信号后再与预先设定的值进行比较把比较得到的差值信号经过一定规律的计算后得到相应的控制值将控制量送给控制系统进行相应的控制不停地进行上述工作从而达到自动调节的目的当控制对象的精确数学模型难以建立时比较成熟且广泛使用的控制方法是采用按差值信号的比例(Proportionality),积分Integration和微分Differentiation进行计算控制量的方法即PID算法1硬件系统设计
1.1系统总体框图系统总体设计思路为当系统上电后,数码管会显示当前的温度,然后等待按键输入设定值,设定完毕后,系统开始温度自动控制过程,如果当前温度高于设定温度,系统会断开光耦器件及可控硅使水温冷却,如果当前温度低于设定温度,若低于2度以上,系统会采取全加热的方式,如果温差小于2度,则采用PID算法进行控制加热定时器0每半秒钟会进行一次温度采样然后与设定值进行比较,比较出来的值将会决定定时器1控制的可控硅器件的通断时间长短,从而实现对温度的精确控制系统的总体框图如图
1.1所示,具体连接电路如图
1.2所示图
1.1系统框图图
1.2总体电路
1.2单片机系统随着集成电路技术的发展,单片微型计算机(单片机)的功能也不断增强,许多高性能的新型机种不断涌现出来单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中广泛应用的器件,在工业生产中成为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大
1.
2.1单片机STC89C52STC89C52是一种高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案具有以下标准功能8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止最高运作频率35MHz,6T/12T可选STC89C52的主要特性如下
1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051;
2.工作电压
5.5V~
3.3V(5V单片机)/
3.8V~
2.0V(3V单片机);
3.工作频率范围0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz;
4.用户应用程序空间为8K字节;
5.片上集成512字节RAM;
6.通用I/O口(32个),复位后为P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻;
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P
3.0TxD/P
3.1)直接下载用户程序,数秒即可完成一片;
8.具有EEPROM功能;
9.具有看门狗功能;
10.共3个16位定时器/计数器即定时器T
0、T
1、T2;
11.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒;
12.通用异步串行口(UART),还可用定时器软件实现多个UART;
13.工作温度范围-40~+85℃(工业级)/0~75℃(商业级)
1.3数字温度传感器DS18B
201.
3.1单线数字温度计DSl8B20介绍DS18B20数字温度计提供9位二进制温度读数指示器件的温度信息经过单线接口送入DSl8B20或从DSl8B20送出因此从主机CPU到DSl8B20仅需一条线和地线DSl8B20的电源可以由数据线本身提供而不需要外部电源因为每一个DSl820在出厂时已经给定了唯一的序号因此任意多个DSl8B20可以存放在同一条单线总线上这允许在许多不同的地方放置温度敏感器件DSl8B20的测量范围从-55到+125增量值为
0.5可在ls典型值内把温度变换成数字每一个DSl8B20包括一个唯一的64位长的序号该序号值存放在DSl8B20内部的ROM只读存贮器中开始8位是产品类型编码DSl8B20编码均为10H接着的48位是每个器件唯一的序号最后8位是前面56位的CRC循环冗余校验码DSl8B20中还有用于贮存测得的温度值的两个8位存贮器RAM编号为0号和1号存贮器存放温度值的符号如果温度为负则1号存贮器8位全为1否则全为00号存贮器用于存放温度值的补码LSB最低位的1表示
0.5将存贮器中的二进制数求补再转换成十进制数并除以2就得到被测温度值-55~125度
1.
3.2DSl8B20工作过程及时序DSl8B20工作过程中的协议如下:初始化RoM操作命令存储器操作命令处理数据
(1)初始化单总线上的所有处理均从初始化开始
(2)ROM操作指令总线主机检测到DSl820的存在便可以发出ROM操作命令之一指令代码ReadROM读ROM[33H]MatchROM匹配ROM[55H]SkipROM跳过ROM][CCH]SearchROM搜索ROM[F0H]Alarmsearch告警搜索[ECH]
(3)存储器操作命令指令代码WriteScratchpad写暂存存储器[4EH]ReadScratchpad读暂存存储器[BEH]CopyScratchpad复制暂存存储器[48H]ConvertTemperature温度变换[44H]RecallEPROM重新调出[B8H]ReadPowersupply读电源[B4H]
(4)时序主机使用时间隙timeslots来读写DSl820的数据位和写命令字的位初始化主机总线在开始时刻发送一复位脉冲最短为480μS的低电平信号接着在下一时刻释放总线并进入接收状态DSl820在检测到总线的上升沿之后等待15-60us接着DS18B20在t2时刻发出存在脉冲低电平持续60-240μS.
1.
3.3DS18B20连接图DS18B20的连接电路如图
1.3所示图
1.3DS18B20连接图
1.4温度显示部分温度显示部分采用4位共阳数码管来显示,位选端采用4个PNP型三极管9012来驱动数码管前两位显示温度,后两位显示摄氏度符号具体连接电路如图
1.4所示图
1.4温度显示部分
1.5温度设定部分温度设定部分采用四个独立按键来完成,按键S0负责进入设定部分,S1和S2分别为温度加和温度减,按键S3为切换到显示当前温度独立按键的工作原理比较简单,其具体连接图如图
1.5所示图
1.5按键连接图
1.6光电耦合器件
1.
6.1光电耦合器件简介光电耦合器件(简称光耦)是把发光器件(如发光二极管)和光敏器件(如光敏三极管)组装在一起,通过光线实现耦合构成电—光和光—电的转换器件光电耦合器分为很多种类,常用的有三极管型光电耦合器光电耦合器之所以在传输信号的同时能有效地抑制尖脉冲和各种杂讯干扰,使通道上的信号杂讯比大为提高,主要有以下几方面的原因
(1)光电耦合器的输入阻抗很小,只有几百欧姆,而干扰源的阻抗较大,通常为105~106Ω据分压原理可知,即使干扰电压的幅度较大,但馈送到光电耦合器输入端的杂讯电压会很小,只能形成很微弱的电流,由于没有足够的能量而不能使二极体发光,从而被抑制掉了光电耦合器的输入回路与输出回路之间没有电气联系,也没有共地;之间的分布电容极小,而绝缘电阻又很大,因此回路一边的各种干扰杂讯都很难通过光电耦合器馈送到另一边去,避免了共阻抗耦合的干扰信号的产生2光电耦合器可起到很好的安全保障作用,即使当外部设备出现故障,甚至输入信号线短接时,也不会损坏仪表因为光耦合器件的输入回路和输出回路之间可以承受几千伏的高压3光电耦合器的回应速度极快,其响应延迟时间只有10μS左右,适于对响应速度要求很高的场合
1.
6.2光电隔离技术的应用
(1)微机介面电路中的光电隔离微机有多个输入端,接收来自远处现场设备传来的状态信号,微机对这些信号处理后,输出各种控制信号去执行相应的操作在现场环境较恶劣时,会存在较大的杂讯干扰,若这些干扰随输入信号一起进入微机系统,会使控制准确性降低,产生误动作因而,可在微机的输入和输出端,用光耦作介面,对信号及杂讯进行隔离
(2)功率驱动电路中的光电隔离在微机控制系统中,大量应用的是开关量的控制,这些开关量一般经过微机的I/O输出,而I/O的驱动能力有限,一般不足以驱动一些点磁执行器件,需加接驱动介面电路,为避免微机受到干扰,须采取隔离措施如可控硅所在的主电路一般是交流强电回路,电压较高,电流较大,不易与微机直接相连,可应用光耦合器将微机控制信号与可控硅触发电路进行隔离3)远距离的隔离传送在电脑应用系统中,由于测控系统与被测和被控设备之间不可避免地要进行长线传输,信号在传输过程中很易受到干扰,导致传输信号发生畸变或失真;另外,在通过较长电缆连接的相距较远的设备之间,常因设备间的地线电位差,导致地环路电流,对电路形成差模干扰电压为确保长线传输的可靠性,可采用光电耦合隔离措施,将2个电路的电气连接隔开,切断可能形成的环路,使他们相互独立,提高电路系统的抗干扰性能若传输线较长,现场干扰严重,可通过两级光电耦合器将长线完全“浮置”起来
1.
6.3光耦器件MOC3040由于单片机是弱点,而电加热器是强电,所以用光耦合很好的解决了强弱电隔离的问题,在本设计中采用了一种比较常用的光耦器件MOC3040,其在本设计中的连接电路如图
1.6所示图
1.6光耦合连接电路
1.7可控硅
1.
7.1可控硅简介可控硅分为单向的和双向的两种符号也不同.单向可控硅有三个PN结由最外层的P极和N极引出两个电极分别称为阳极和阴极由中间的P极引出一个控制极.1单向可控硅单向可控硅的基本应用电路如图
1.7所示当Uak0时,若Ugk0,可控硅不导通;当Uak0时,若Ugk0,可控硅导通;当Uak0时,不论Ugk为何值,可控硅都处于关断状态,Iak=0图
1.7单向可控硅应用电路通过对单向可控硅的技术分析,可归纳出如下特点1)可控硅的导通条件是在阳极A与阴极K之间加有正向电压情况下,在门极G与阴极K之间加上一个正向脉冲信号,形成门极电流,此电流将触发可控硅进入自锁的导通状态2)门极G无法控制可控硅2双向可控硅双向可控硅相当于两个单向引脚多数是按T
1、T
2、G的顺序从左至右排列电极引脚向下面对有字符的一面时.加在控制极G上的触发脉冲的大小或时间改变时就能改变其导通电流的大小.与单向可控硅的区别是双向可控硅G极上触发脉冲的极性改变时其导通方向就随着极性的变化而改变从而能够控制交流电负载.而单向可控硅经触发后只能从阳极向阴极单方向导通所以可控硅有单双向之分.电子制作中常用可控硅单向的有MCR-100等双向的有TLC336等可控硅的工作条件
1.可控硅承受反向阳极电压时,不管门极承受哪种电压,可控硅都处于关断状态
2.可控硅承受正向阳极电压时,仅在门极承受正向电压的情况下可控硅才导通
3.可控硅在导通情况下,只要有一定的正向阳极电压,不论门极电压如何,可控硅保持导通,即可控硅导通后,门极失去作用
4.可控硅在导通情况下,当主回路电压(或电流)减小到接近于零时,可控硅关断注意可控硅是半控件,关断不由门极控制,而只当主电流接近零时才能关断
(3)双向可控硅在本设计中的电路连接图如图
1.8所示图
1.8可控硅连接电路 2PID算法
2.1PID算法简介在过程控制中,按偏差的比例PProportional、积分I(Integral)和微分D(Differential)进行控制的PID控制器是应用最为广泛的一种自动控制器它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点数字PID算法分为置位式和增量式两种当执行需要的不是控制量的绝对值,而是控制量的增量时,需要用PID的“增量算法”如图
2.1所示图
2.1增量式PID控制算法增量式PID控制算法可以通过2-1式推导出由2-1可以得到控制器的第k-1个采样时刻的输出值为式2-2式2-1式2-2将式5-1与式5-2相减并整理,就可以得到增量式PID控制算法公式为式2-3其中由式5-3可以看出,如果计算机控制系统采用恒定的采样周期T,一旦确定A、B、C,只要使用前后三次测量的偏差值,就可以由式5-3求出控制量增量式PID控制算法与位置式PID算法5-1相比,计算量小得多,因此实际中得到广泛的应用位置式PID控制算法也可以通过增量式控制算法推出递推计算公式式2-4式2-4就是目前在计算机控制中广泛应用的数字递推PID控制算法a.比例系数P对系统性能的影响比例系数加大,使系统的动作灵敏,速度加快,稳态误差减小;P偏大,振荡次数加多,调节时间加长;P太大时,系统会趋于不稳定;P太小,又会使系统的动作缓慢P可以选负数,这主要是由执行机构、传感器以及控制对象的特性来决定的如果P得符号选择不当对象测量值就会离控制目标的设定值越来越远,如果出现这样的情况P的符号就一定要取反b.积分控制I对系统性能的影响积分作用使系统的稳定性下降,I小(积分作用强)会使系统不稳定,但能消除稳态误差,提高系统的控制精度c.微分控制D对系统性能的影响微分作用可以改善动态特性,D偏大时,超调量较大,调节时间较短;D偏小时,超调量也较大,调节时间也较长;只有D合适,才能使超调量较小,减短调节时间
2.2PID算法的程序设计要编写一个已知算法的单片机程序,首先要考虑的就是数据的结构和存储方式了因为它直接影响到系统的控制精度,以及PID算法的实现质量本系统从一开始的设计思路就是尽可能高的提高系统的控制精度要提高系统的控制精度,在计算过程中仅取整数或定点小数是不够的,所以本设计采用三字节浮点数运算对于STC89C52单片机而言,有足够的内存去存储和处理这些数据另外,为了使程序的参数修改方便,更易于应用到其他PID控制系统中去,在一开始的参数赋值程序中,参数是以十进制BCD码浮点数存储的,参数赋值完成后,紧接着就是对参数进行二进制浮点数的归一化处理这些工作在系统启动后迅速就完成了,之后PID控制器只进行PID核心控制算法的计算PID算法的程序框图如图
2.2所示算法由于本设计中主要用到增量式PID控制算法,所以在此我们只对增量式PID算法的程序实现做介绍增量式PID算式为:式2-5设则有��开始PID参数初始化�取设定值rt与测量值et�计算偏差Ek=rt-etPpk=Kp*[Ek-Ek-1]Pik=Ki*Ek�Pdk=Kd[Ek-2Ek-1+Ek-2]�Uk=Ppk+Pik+Pdk�Ek-1=Ek-2Ek=Ek-1�返回�图
2.2PID增量式程序流程图
2.3PID算法参数整定方法三个基本参数Kp、Ki、Kd在实际控制中的作用比例调节作用是按比例反映系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差,属于“即时”型调节控制比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降甚至造成系统的不稳定积分调节作用使系统消除静态误差,提高无误差度因为有误差,积分调节就进行,直至无误差,积分调节停止,积分调节输出一常值,属于“历史积累”型调节控制积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢积分作用常与另两种调节规律结合,组成PI调节器或PID调节器微分调节作用微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差的变化趋势,因此能产生超前的控制作用,在偏差还没有形成之前,以被微分调节作用消除,因此属于“超前或未来”型调节控制因此,可以改善系统的动态性能在微分时间选择合适的情况下,可以减少超调,减少调节时间微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利此外,微分反映的是变化率,而当输入没有变化时,微分作用输出为零微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器PID控制器的参数整定是控制系统设计的核心内容它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小PID控制器参数整定的方法很多,概括起来有两大类一是理论计算整定法它主要是依据系统的数学模型,经过理论计算确定控制器参数这种方法所得到的计算数据未必可以直接使用,还必须通过工程实际进行调整和修改二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用PID控制器参数的工程整定方法,主要有临界比较法、反应曲线法和衰减法三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式控制器参数进行整定但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善现在一般采用的是临界比较法PID参数的设定是靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整P/I/D的大小
1.PID调试一般原则a.在输出不振荡时,增大比例增益Pb.在输出不振荡时,减小积分时间常数Tic.在输出不振荡时,增大微分时间常数Td
2.数据调试的一般步骤a.确定比例增益P确定比例增益P时,首先去掉PID的积分项和微分项,一般是令Ti=
0、Td=0,使PID为纯比例调节输入设定为系统允许的最大值的60%~70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值得60%~70%比例增益P调试完成b.确定积分时间常数Ti比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后再反过来,逐渐加大Ti,直至系统振荡消失记录此时的Ti,设定PID的积分时间常数Ti为当前值得150%~180%积分时间常数Ti调试完成c.确定积分时间常数Td积分时间常数Td一般不用设定,为0即可,若要设定,与确定P和Ti的方法相同,取不振荡时的30%d.系统空载,带载联调,再对PID参数进行微调,直至满足要求
3.PID参数调节中与到的问题及解决办法1迅速达到目标值,但是冲击很大a.比例系统太大,致使在未达到设定值前调节比例过高;b.微分系数过小,致使对象反应不敏感;2经常打不到目标值,小与目标值较多a.比例系数过小,加速比例不够;b.积分系数过小,对恒偏差补偿不足;3基本上能够在控制目标上,但上下偏差偏大,经常波动a.微分系数过小,对即时变化反应不够快,反应措施不力;b.积分系数过大,使微分反应被钝化;c.设定的基本定时周期过短,调节参数还没有来得及传递出去;4受工作环境影响较大,在稍有变动时就会引起温度的波动a.微分系数过小,对即时变化反应不够快,不能即时反映;b.设定的基本定时周期过长,不能及时得到修正;3软件设计
3.1PID控制流程将设定值与测量值分别传送到PID控制器,经PID计算处理,计算出控制交流通过脉冲数的定时器1的定时值,将该定时值送入定时器,温度值将趋于设定的温度值具体流程图如图
3.1所示��开始PID参数初始化�取设定值rt与测量值et�计算偏差Ek=rt-etPpk=Kp*[Ek-Ek-1]Pik=Ki*Ek�Pdk=Kd[Ek-2Ek-1+Ek-2]�Uk=Ppk+Pik+Pdk�Ek-1=Ek-2Ek=Ek-1�PID控制器�图
3.1PID控制流程图
3.2系统软件设计总流程图本设计的软件设计流程是,当系统上电后,数码管会显示当前的温度,然后等待按键输入设定值,设定完毕后,系统开始温度自动控制过程,如果当前温度高于设定温度,系统会断开光耦器件及可控硅使水温冷却,如果当前温度低于设定温度,若低于2度以上,系统会采取全加热的方式,如果温差小于2度,则采用PID算法进行控制加热定时器0每半秒钟会进行一次温度采样然后与设定值进行比较,比较出来的值将会决定定时器1控制的光耦器件的通断时间长短,从而实现对温度的精确控制具体流程图如图
3.1所示图
3.2流程图4结语本次设计基本上实现了PID算法温度自动控制的功能,基本完成了设计要求,不足之处是没有降温控制系统,另外PID的控制也不是很精确在本次设计过程中,我在专业理论知识上有了很大的收获,比如PID算法,比如光耦器件以及可控硅的基本知识,另外动手实践能力也得到了很大的提升,另外软件编写的能力也有很大的进步我一定会好好总结并且铭记在这次毕设中遇到的问题以及得到的经验,从而为以后的学习和工作打下一个扎实的基础参考文献
[1]金以慧等.过程控制[M].北京清华大学出版社2002
[2]康华光.电子技术基础[M].北京高等教育出版社2000
[3]陈炳和.计算机控制系统基础[M].北京航空航天大学出版社,2001
[4]何克忠.计算机控制系统[M].北京清华大学出版社,2001
[5]张友德等.单片微机MCS-51用户手册[M].上海复旦大学出版社1990
[6]谢自美.电子线路设计(第二版)[M].武汉华中理工大学出版社2000
[7]孙增圻.智能控制理论与技术[M].北京清华大学出版社2004
[8]诸静.模糊控制原理与应用[M].北京机械工业出版社1995
[9]AllanR.Hambley.Electronics2nded.NewJersey:PrenticeHallInc2000
[10]DavidJohnsKenMartin.AnalogIntegratedCircuitDesign.NewYork:JohnWileySonsInc1997致谢在历时大约3个月后,在我的导师赵世强教授以及其他各科老师的帮助下,我终于完成了自己的毕业设计任务经过了这次设计过程,我不仅专业理论知识得到了巩固,动手实践能力和设计能力也得到了很大的提升,而且于我而言,最弥足珍贵的是我从我的导师以及其他老师身上学到了很多知识以外的东西,比如他们对于科学问题的探索精神,对于工作的奉献精神等等我相信这些美好的品质都将伴随我一生的学习生活中,并且让我受益无穷因此,在这毕设将要结束以及我的大学生涯也将画上一个句号的时刻,我要郑重的感谢,感谢这四年来给于我帮助与关怀的学校领导,老师,和同学朋友,我会永远记住这段美好的岁月,并在以后的工作中努力上进,不辜负老师和同学们的期望,做一个成功的人,一个对社会有用的人谢谢!附录本设计程序如下#includereg
52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintsbitDS=P3^7;sbitgou=P3^3;sbitkey1=P2^0;sbitkey2=P2^1;sbitkey3=P2^2;sbitkey4=P2^3;voiddisplayucharweiucharduan;voiddis_tempuintt;ucharcodeduma[]={0xc00xf90xa40xb00x990x920x820xf80x800x900x9c0xc6};ucharcodewema[]={0xfe0xfd0xfb0xf7};inttemp;uintsettemp=100;uchardata1kpkikd;uintthightimecount;inte1e2e3dukuk;/*延时子程序10ms*/voiddelay10ms{ucharab;fora=10;a0;a--forb=30;b0;b--;}voiddelay1{ucharab;fora=30;a0;a--forb=30;b0;b--;}/*延时子程序,空5个指令*/voiddelayvoid{_nop_;_nop_;_nop_;_nop_;_nop_;}/*延时子程序*/voiddelaybuintcount{uinti;whilecount{i=200;whilei0i--;count--;}}/*DS18B20初始化*/voiddsresetvoid{uinti;DS=0;i=103;whilei0i--;DS=1;i=4;whilei0i--;}/*读一位数据值*/bittmpreadbitvoid{uinti;bitdat;DS=0;i++;//i++小延时一下DS=1;i++;i++;dat=DS;i=8;whilei0i--;returndat;}/*读一个字节数据*/uchartmpreadvoid{ucharijdat;dat=0;fori=1;i=8;i++{j=tmpreadbit;dat=j7|dat1;//读出的数据最低位在最前面,这样刚好//一个字节在DAT里}returndat;//将一个字节数据返回}/*写一个字节到DS18B20里*/voidtmpwritebyteuchardat{uinti;ucharj;bittestb;forj=1;j=8;j++{testb=dat0x01;dat=dat1;iftestb//写1部分{DS=0;i++;i++;DS=1;i=8;whilei0i--;}else{DS=0;//写0部分i=8;whilei0i--;DS=1;i++;i++;}}}/*获取温度并转化命令*/voidtmpchangevoid{dsreset;//初始化DS18B20delayb1;//延时tmpwritebyte0xcc;//跳过序列号命令tmpwritebyte0x44;//发送温度转换命令}/*读取DS18B20中温度寄存器数据*/uintget_temp{floatftemp;ucharab;dsreset;delayb1;tmpwritebyte0xcc;tmpwritebyte0xbe;//发送读取数据命令a=tmpread;//连续读两个字节数据读低8位b=tmpread;//读高8位temp=b;temp=8;//temp高8位和低8位交换,将交换过的值重新赋给temp不懂的看C语言基础书temp=temp|a;//两字节合成一个字ftemp=temp*
0.0625;//得到真实十进制温度值,因为DS18B20可以精确到
0.0625度//所以读回数据的最低位代表的是
0.0625度temp=ftemp*10+
0.5;//放大十倍,这样做的目的将小数点后第一位也转换为可显示数字,同时进行一个四舍五入操作returntemp;//返回温度值}/*定时器0初始化程序*/voidinit_time0void{TMOD|=0x01;//使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响TH0=65536-50000/256;TL0=65536-50000%256;EA=1;//总中断打开ET0=1;//定时器T0允许中断TR0=1;//定时器T0开始工作}/*定时器1初始化程序*/voidinit_time1void{TMOD|=0x10;//使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响TH0=65536-50000/256;TL0=65536-50000%256;EA=1;//总中断打开ET1=1;//定时器T1允许中断//TR1=1;//定时器T1开始工作}voidkeysan{ifkey1==0{delayb30;ifkey1==0{while1{dis_tempsettemp;ifkey2==0{delayb30;ifkey2==0break;}ifkey3==0{delayb50;ifkey3==0settemp+=10;}ifkey4==0{delayb50;ifkey4==0settemp-=10;}}}}}/*数码管显示子程序*/voiddisplayucharweiucharduan{P0=duma[duan];//段码P1=wema[wei];}/*将温度值处理成能直接显示在数码管上面的10进制数*/voiddis_tempuintt{uchari;intt1;t1=t;i=t1%1000/100;//显示十位温度display0i;delay1;i=t1%100/10;//显示个位温度display1i;delay1;display210;//显示温度摄氏符号delay1;display311;delay1;}/******************************PID算法系数装载*******************************/voidPid_init{hightime=0;e1=0;e2=0;e3=0;kp=10;ki=5;kd=5;}voidpid_ys{iftempsettemp//如果实际温度小于设定值{/*ifsettemp-temp20//如果相差2度{gou=0;//全速加热}else//否则运行PID算法进行平滑加热{e1=settemp-temp;duk=kp*e1-e2+ki*e1+kd*e1-e2*2+e3/10;uk=uk+duk;ifuk100uk=100;elseifuk-100uk=-100;ifuk0{hightime=-uk;}else{hightime=uk;}//TR1=1;e3=e2;e2=e1;}*/gou=0;}iftemp=settemp//如果实际温度大于设定值{/*iftemp-settemp0//只要实际温度与设定值有偏差{hightime=0;//停止加热}else//其他情况运行PID算法,但参数与前面的刚好相反{e1=temp-settemp;duk=kp*e1-e2+ki*e1+kd*e1-e2*2+e3/10;uk=uk+duk;ifuk100uk=100;elseifuk-100uk=-100;ifuk0{hightime=100--uk;}else{hightime=100-uk;}e3=e2;e2=e1;}*/gou=1;}}/*主函数*/voidmain{init_time0;init_time1;while1{tmpchange;//温度转换dis_tempget_temp;//显示函数keysan;pid_ys;}}/*定时器0—定时500ms采集一次温度*/voidtime0voidinterrupt1using1{uchart0=0;t0++;ift0==10{get_temp;t0=0;}TH0=65536-50000/256;TL0=65536-50000%256;}/*定时器1—一次定时长为50ms*/voidtime1voidinterrupt3using1{uchart1=0;t1++;ift1==hightime{gou=1;t1=0;}else{gou=0;}TH1=65536-50000/256;TL1=65536-50000%256;}主控制器单片机STC89C52双向可控硅加热器温度显示时钟振荡及复位电路温度传感器DS18B20水温设置PID算法可控硅受控对象r+e∆uuy-----T0T1初始化开始读温度设置值启动后采集温度温度采集标志位置1显示温度查询采集标志是否等于1存控制值PID算法采集标志位置0结束NY读温度值关T0中断T0中断写T1常数采集标志置1存温度值开T0中断置P
3.4=1启动T1关T1中断T1中断开T1中断P
3.4=0。