计算机控制系统实验报告

上传人:仙*** 文档编号:80336775 上传时间:2022-04-25 格式:DOC 页数:44 大小:1.64MB
收藏 版权申诉 举报 下载
计算机控制系统实验报告_第1页
第1页 / 共44页
计算机控制系统实验报告_第2页
第2页 / 共44页
计算机控制系统实验报告_第3页
第3页 / 共44页
资源描述:

《计算机控制系统实验报告》由会员分享,可在线阅读,更多相关《计算机控制系统实验报告(44页珍藏版)》请在装配图网上搜索。

1、温度控制系统一、题目要求请设计一套以单片机为控制装置的温度控制系统,可以是电热炉温度控制,水温控制等,要求有合理的方案设计,总体结构图,算法选择和验证分析。可以以软件实现。推荐制造实物验证系统,并给出较好的精度和稳定性。二、应用背景与理论基础2.1 应用背景温度是生活及生产中最基本的物理量,它表征的是物体的冷热程度。自然界中任何物理、化学过程都紧密的与温度相联系。在人类的生活环境中,温度扮演着极其重要的角色。在很多生产过程中,温度的测量和控制都直接和安全生产、提高生产效率、保证产品质量、节约能源等重大技术经济指标相联系。因此,温度的测量与控制在国民经济各个领域中均受到了相当程度的重视。近年来,

2、温度的检测在理论上发展比较成熟,但在实际测量和控制中,如何保证快速实时地对温度进行采样,确保数据的正确传输,并能对所测温度场进行较精确的控制,仍然是目前需要解决的问题。温度控制技术按照控制目标的不同可分为两类:动态温度跟踪与恒值温度控制。动态温度跟踪实现的控制目标是使被控对象的温度值按预先设定好的曲线进行变化。在工业生产中很多场合需要实现这一控制目标,如在发酵过程控制,化工生产中的化学反应温度控制,冶金工厂中燃烧炉中的温度控制等;恒值温度控制的目的是使被控对象的温度恒定在某一给定数值上,且要求其波动幅度(即稳态误差)不能超过某允许值。本文所讨论的基于单片机的温度控制系统就是要实现对水温的恒值温

3、度控制,故以下仅对恒值温度控制进行讨论。从工业控制器的发展过程来看,温度控制技术大致可分以下几种:2.1.1 定值开关控温法所谓定值开关控温法,就是通过硬件电路或软件计算判别当前温度值与设定目标温度值之间的关系,进而对系统加热装置(或冷却装置)进行通断控制。若当前温度值比设定温度值高,则关断加热器,或者开动制冷装置;若当前温度值比设定温度值低,则开启加热器并同时关断制冷器。这种开关控温方法比较简单,在没有计算机参与的情况下,用很简单的模拟电路就能够实现。但由于这种控制方式是当系统温度上升至设定点时关断电源,当系统温度下降至设定点时开通电源,因而无法克服温度变化过程的滞后性,致使被控对象温度波动

4、较大,控制精度低,完全不适用于高精度的温度控制。2.1.2 PID线性控温法这种控温方法是基于经典控制理论中的PID调节器控制原理,PID控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好、可靠性高等优点被广泛应用工业过程控制中,尤其适用于可建立精确数学模型的确定性控制系统。由于PID调节器模型中考虑了系统的误差、误差变化及误差积累三个因素,因此,其控制性能大大地优越于定值开关控温。其具体控制电路可以采用模拟电路或计算机软件方法来实现PID调节功能。前者称为模拟PID控制器,后者称为数字PID控制器。其中数字PID控制器的参数可以在现场实现在线整定,因此具有较大的灵活性,可以得到较好的

5、控制效果。采用这种方法实现的温度控制器,其控制品质的好坏主要取决于三个PID参数(比例值、积分值、微分值)。只要PID参数选取的正确,对于一个确定的受控系统来说,其控制精度是比较令人满意的。但是,它的不足也恰恰在于此,当对象特性一旦发生改变,三个控制参数也必须相应地跟着改变,否则其控制品质就难以得到保证。2.1.3 智能温度控制法为了克服PID线性控温法的弱点,人们相继提出了一系列自动调整PID参数的方法,如PID参数的自学习,自整定等等。并通过将智能控制与PID控制相结合,从而实现温度的智能控制。智能控温法以神经网络和模糊数学为理论基础,并适当加以专家系统来实现智能化。其中应用较多的有模糊控

6、制、神经网络控制以及专家系统等。尤其是模糊控温法在实际工程技术中得到了极为广泛的应用。目前已出现一种高精度模糊控制器,可以很好的模拟人的操作经验来改善控制性能,从理论上讲,可以完全消除稳态误差。2.2 理论基础PID控制策略是最早发展起来的控制策略之一,现使用的PID控制器产生并发展于1915-1940年期间。尽管自1940年以来,许多先进的控制方法不断的推出,但由于PID控制具有结构简单、鲁棒性好、可靠性高、参数易于整定,P、I、D控制规律各自成独立环节,可根据工业过程进行组合,而且其应用时期较长,控制工程师们已经积累大量的PID控制器参数的调节经验。因此,PID控制器在工业控制中仍然得到广

7、泛的应用,许多工业控制器仍然采用PID控制器。在现代计算机控制系统中,PID控制算法将由计算机软件实现。由于计算机软件的灵活性,利用就算几实现PID控制具有许多优点,可以将PID算法修改得更为合理,得到许多考虑了实际要求的该井算法;同时对于参数的在线调整和修改更为方便,朝着更加灵活和智能化的方向发展。此外,计算机还能实现数据处理、显示、报警和打印功能,便于管理和造作。所以,用计算机实现数字PID算法获得了广泛的应用。2.2.1 数字PID基本算法数字PID算法主要包括位置式PID算法和增量式PID算法。除此之外,还有一些改进算法,包括抗积分饱和算法、微分改进算法等等。本次实验用到的算法在算法选

8、择中会详细介绍,在此不再赘述。2.2.2 PID调节参数的整定一个PID控制必须选择几个主要参数,如,以及采样周期T等。由于数字PID控制中,采样周期比被控对象的时间常数要小得多,所以是准PID控制,一般仍沿用连续PID控制的参数整定方法。1. 试凑法确定PID参数(1)首先只整定比例部分。比例系数由小变大,观察相应的系统响应,直到得到反应快,超调小的响应曲线。系统若无静差或静差已小到允许范围内,并且响应效果良好,那么只须用比例调节器即可。(2)若稳态误差不能满足设计要求,则需加入积分控制。整定时先置积分时间TI为一较大值,并将经第1步整定得到的减小些,然后减小,并使系统在保持良好动态响应的情

9、况下,消除稳态误差。这种调整可根据响应曲线的状态,反复改变及,以期得到满意的控制过程。 (3)若使用PI调节器消除了稳态误差,但动态过程仍不能满意,则可加入微分环节。在第2步整定的基础上,逐步增大,同时相应地改变和,逐步试凑以获得满意的调节效果。 2. 扩充临界比例度法这种方法是对连续系统临界比例度法的扩充。适用于具有自平衡能力的被控对象,不需要准确知道对象的特性。具体步骤如下:(1)选择一个足够短的采样周期T,通常可选择采样周期为被控对象纯滞后时间的1/10。 (2)用选定的T使系统工作。这时,去掉数字控制器的积分作用和微分作用,只保留比例作用。然后逐渐减小比例度(),直到系统发生持续等幅振

10、荡。记下此时的临界比例度及系统的临界振荡周期 (即振荡波形的两个波峰之间的时间) 。 (3)选择控制度。控制度 实际应用时并不需要计算两个误差平方积分,控制度仅表示控制效果这一物理概念。工程经验给出了整定参数和控制度的关系,通常认为控制度为1.05是,数字控制与模拟控制效果相当;控制度为2时,数字控制效果比模拟控制差得多。(4)根据选定的控制度,查表2-1 ,求得、的值。(5)按计算所得参数投入在线运行,观察效果,如果性能不满意,可根据经验和对P、I、D各控制项作用的理解,进一步调节参数,直到满意为止。表2-1 扩充临界比例度法整定参数控制度控制规律1.05PIPID0.030.0140.53

11、0.630.880.490.141.20PIPID0.050.0430.490.470.910.470.161.50PIPID0.140.090.420.340.990.430.202.0PIPID0.220.160.360.271.050.400.22三、题目分析题目要求是以单片机为控制装置的温度控制系统,考虑到成本、时间与安全等诸多因素,我选择做水温加热控制。该系统的任务包括软件仿真和硬件实现量大部分组成。软件部分主要用到的软件有Matlab、Simulink、Protues以及Keil。Matlab和Simulink主要做PID算法仿真,Protues做的是电路仿真,Keil做的是单片机

12、的编程。硬件部分主要包括单片机、继电器、温度传感器等部分。水温控制系统的基本原理为:将设定温度与实际水温进行比较,它们的差值经PID计算后得到控制量,控制执行机构的输出功率,从而控制给水加热的能量大小,并且实时检测水温。其原理图如图3-1所示。PIDZOH继电器加热装置水温PWMWMr(k)u(t)WM温度传感器Y(z)G(s)图3-1 水温控制系统原理图为了对该系统进行仿真,我们需要水温加热的传递函数。设水温为T,环境温度(干扰)为,供热量 (3-1)式中:为散热系数,为散热面积。能量平衡式: (3-2)式中:为水的质量,为水的比热。将带入(3-2)整理得: (3-3)设为对象的供热时间常数

13、,为对象的供热比例系数,则得对象特征的微分方程为 (3-4)对(3-4)作拉式变换,推出被测温度与供热之间的传递函数为 (3-5)由上式不难看出,水温加热为一阶惯性环节。在实际实验过程中,发现用加热棒加热,会因加热不均,而产生迟滞,故而,最终的传递函数应为: (3-6)故水温加热环节为一阶惯性迟滞环节。 由上面的推导过程不难看出,对于水量的不同、环境的不同,所取得、和也会不同,因此很难依靠经验确定参数。我们先做好了部分硬件,意图通过实验来完成数学模型的建立。 先利用相关离散化公式将式(3-6)离散化,采样时间T=1s,可以得到该系统的数字化时域形式: (3-7)其中为输入功率,为输出温度。通过

14、实验,不难得出延迟时间,其余数据如下表:参数组别143.643.828.527244.744.825.5244.444.3421.26044.644.854故。所以得到传递函数为: (3-7)所以得到系统结构图为:PIDZOHr(t)图3-2 水温控制系统原理图四、算法选择4.1 PID算法4.1.1模拟PID控制算法离散化(PID位置式算法)模拟PID控制器的基本算式为: (2-1) (2-2)对式(2-1)离散化,可得 (2-3)通常,计算机输出的控制指令是直接控制执行机构(如控制流量的阀门),的值与执行机构输出的位置(如阀门的开度)相对应,随意将式(2-3)称为PID位置算法。按位置算法

15、构成的计算机控制系统如图3-1所示。工业应用时,采用PID位置算法是不够方便和有欠缺的。由于要累计误差,占用内存较多,并且安全性较差。由于计算机输出的直接对应的是执行机构的实际位置,如果一旦计算机出现故障,的大幅度变化会引起执行机构位置的突变,在某些场合下,就可能造成重大生产是够。考虑到这种情况,在工业应用中,还采用一种增量式算法。图2-1 PID位置式计算机控制系统4.1.2 PID增量式算法 PID增量式算法是位置算法的一种改进。由式(1-3)可以得到(k-1)次的PID输出表达式: (1-4)由式(1-3)和(1-4)可得 (1-5)该式为增量式PID算法。该算法优点:(1)较为安全。因

16、为一旦计算机出现故障,输出控制指令为零时,执行机构的位置(如阀门的开度)仍可保持前一步的位置,不会给被控对象带来较大的扰动。(2)计算时不需进行累加,仅需最近几次误差的采样值。增量式算法带来的主要问题是执行机构的实际位置也就是控制指令全量的累加需要用计算机外的其他的硬件(如步进电机)实现。,如图2-2。因此,如果系统的执行机构具有这个功能,采用增量算法是很方便的。图2-2 PID增量式计算机控制系统4.2 Smith预估控制在工程过程控制中,许多被控对象具有纯滞后的性质。Smith提出了一种纯滞后补偿模型,其原理为,与PID控制器并接一个补偿环节,该补偿环节称为Smith预估器。带有纯迟滞的单

17、回路控制系统的闭环传递函数为:。其特征方程为。可见,特征方程中出现了纯延迟环节,是系统稳定性降低。如果足够大,系统讲不稳定,这就是大延迟过程难于控制的本质。针对这种问题,Smith提出采用人造模型的方法,构造如图2-3所示的控制系统:图2-3 Smith预估控制系统五、仿真5.1 位置式PID仿真5.1.1 MATLAB仿真程序。ts=1;%采样时间sys=tf(1.6,66,1,inputdelay,5);%传递函数dsys=c2d(sys,ts,z);%离散化num,den=tfdata(dsys,v);u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;u_6=0;y_1=0;y

18、_2=0;y_3=0;%设定初值x=0,0,0;error_1=0;for k=1:1:350 time(k)=k*ts; yout(k)=-den(2)*y_1+num(2)*u_6; %延时抽样为5s rin(k)=45; Kp=5.95;Ki=0.1;Kd=0.28;%PID参数设定 u(k)=Kp*x(1)+Kd*x(2)+Ki*x(3);%位置式PID控制信号 error(k)=rin(k)-yout(k);%误差 u_6=u_5;u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); x(1)=e

19、rror(k);%参数P x(2)=(error(k)-error_1)/ts;%参数D x(3)=x(3)+error(k)*ts;%参数I error_1=error(k);endfigure(1);plot(time,rin,k,time,yout,b)%画图5.1.2 PID参数计算首先用扩充临界比例度法来选定参数。按照上面介绍的步骤,增大使系统发生等幅振荡。当时,系统发生等幅振荡,如下图所示:图5-1 系统等幅震荡由上图可以得知:。经计算,该系统的控制度为1.20。故,。以此为基础,结合试凑法确定PID参数,进行Matlab仿真。5.1.3 仿真结果首先令,仿真结果如下图5-2 水温

20、控制系统PID 控制仿真曲线图(Kp5,Ki0.1,Kd0.25)由上图可知,参数如此设置,系统可以达到稳定,但是超调超过30%,超调过大,调节时间也长。为改善调节效果,可以减小比例环节和微分环节。多次仿真后,当,时,可以可到较好的控制效果,如图5-3所示。图5-3 水温控制系统PID 仿真曲线图(Kp3,Ki0.05,Kd0.25)从上图可以看出,超调量小于5%,对应5%误差度,调节时间约为25s。调节效果较好。5.1.4 Simulink仿真首先利用Simulink的集成模块来进行仿真。仿真图如下图所示:图5-5 水温控制系统Simulink离散PID仿真令,得到如下仿真结果。图5-6 水

21、温控制系统PID 控制仿真曲线图(Kp3,Ki0.05,Kd0.25)但是该离散PID的仿真模型是封装好的,无法看清其内部结构,因此我利用Simulink的Matlab Function模块,通过编写M文件的方式实现位置式PID的方针。图5-7 位置式PID仿真图MATLAB Function中的函数如下:function u=pidsimf(u1,u2)persistent pidmat errori error_1 if u1=0 errori=0 error_1=0end ts=1;kp=3;ki=0.000012;kd=0; error=u2;errord=(error-error_1

22、)/ts;errori=errori+error*ts; u=kp*error+kd*errord+ki*errori;error_1=error;若按原参数仿真,即令,系统发散。如下图所示:图5-8 温度控制系统Simulink仿真图(Kp=5,Ki=0.1,Kd=0.25)对参数进行调整,使其稳定。当,时,系统稳定,且无超调,控制效果好。图5-9 温度控制系统Simulink仿真图(Kp=3,Ki=0.000012,Kd=0)5.2 增量式PID仿真5.2.1 Matlab仿真程序ts=1;sys=tf(1,60,1,inputdelay,5);dsys=c2d(sys,ts,z);num

23、,den=tfdata(dsys,v); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;u_6=0;y_1=0;y_2=0;y_3=0;x=0,0,0;error_1=0;error_2=0;for k=1:1:350 time(k)=k*ts; yout(k)=-den(2)*y_1+num(2)*u_6; %延迟5s rin(k)=45; Kp=6;Kd=0;Ki=0.1; du(k)=Kp*x(1)+Kd*x(2)+Ki*x(3);%增量式PID u(k)=u_1+du(k); error(k)=rin(k)-yout(k); u_6=u_5;u_5=u_4;u_4=u_3

24、;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); x(1)=error(k)-error_1; x(2)=error(k)-2*error_1+error_2; x(3)=error(k); error_2=error_1; error_1=error(k);endplot(time,rin,r,time,yout,b)xlabel(time(s);ylabel(rin,yout); 5.2.2 Matlab仿真结果首先,按照上回计算的,令,。结果如下图。图5-10 水温控制系统PID 仿真曲线图(Kp5,Ki0.1,Kd0.25)

25、上图可以看出,系统超调约为11%,调节时间约为50s,基本满足要求。为精益求精,进一步调节系统参数。令,可以达到系统无超调,无稳态误差的良好控制效果,如下图所示:图5-11 水温控制系统PID 仿真曲线图(Kp3,Ki0.05,Kd0.25)5.2.3 Simulink仿真 增量式PID的Simulink仿真图如图5-12所示:图5-12 位置式PID仿真图MATLAB Function中的函数如下:function u=pidsimf(u1,u2)persistent pidmat errori error_1 error_2 u_1 if u1=0 errori=0 error_1=0 e

26、rror_2=0 u_1=0end ts=1;kp=3;ki=0.000012;kd=5; error=u2;errord=(error-error_1);errori=error-2*error_1+error_2; du=kp*errord+kd*errori+ki*error;u=u_1+du;u_1=u;error_2=error_1;error_1=error;令,时,系统稳定,且无超调,控制效果好。如图5-13所示。图5-13 温度控制系统Simulink仿真图(Kp=3,Ki=0.000012,Kd=0)5.3 Smith预估控制系统5.3.1 Smith预估控制系统Matlab

27、程序Ts=1;kp=1.6;Tp=66;tol=5;sys=tf(kp,Tp,1,inputdelay,tol);dsys=c2d(sys,Ts,zoh);num,den=tfdata(dsys,v); kp1=kp;Tp1=Tp;tol1=tol;sys1=tf(kp1,Tp1,1,inputdelay,tol1);dsys1=c2d(sys1,Ts,zoh);num1,den1=tfdata(dsys1,v); u_0=0;u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;e1_1=0;e2=0.0;e2_1=0.0;ei=0; xm_1=0.0;ym_1=0

28、.0;y_1=0.0; for k=1:1:350 time(k)=k*Ts; rin(k)=45.0; %输入信号 xm(k)=-den1(2)*xm_1+num1(2)*u_1;ym(k)=-den1(2)*ym_1+num1(2)*u_5; %加入延迟yout(k)=-den(2)*y_1+num(2)*u_5; P=15; I=0.3; e2(k)=rin(k)-xm(k); ei=ei+Ts*e2(k); u(k)=P*e2(k)+I*ei; e2_1=e2(k); xm_1=xm(k);ym_1=ym(k); u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=

29、u_0;u_0=u(k);y_1=yout(k);endplot(time,rin,b,time,yout,r);xlabel(time(s);ylabel(rin,yout);5.3.2 Matlab仿真结果图5-14 温控制系统Smith仿真曲线图(Kp15,Ki0.3,Kd0)如果不加入Smith,在同等PID参数的情况下,系统完全发散,如下图:图5-15 加Smith的水温控制系统仿真曲线图(Kp15,Ki0.3,Kd0) 由上图不难看出,Smith对系统的调节作用非常明显。5.3.2 Smith预估控制系统Simulink仿真Simulink仿真图图5-16所示:图5-16 Smit

30、h预估Simulink仿真当,加入Smith的相应和为加入的响应如图5-17和5-18所示:图5-17 Smith预估的Simulink仿真结果图5-17 未加入Smith预估的Simulink仿真对比图5-16和图5-17,加入Smith预估控制的系统要比为加入Smith预估控制的系统稳定的多。5.4 实际实验算法选择从上面的仿真可以看出,系统无论是用位置式PID、增量式PID亦或是加入Smith预估的PID,系统都可以稳定。但是,增量式算法的控制指令全量的累加需要用计算机外的其他的硬件,会增加实验成本,因此不选用。而Smith系统的稳定性虽然高于位置式,但是其存在控制函数较为复杂,对存储空

31、间要求高的缺点,因此我决定选择最为简单、也最为实用的位置式PID算法来进行硬件的控制。六、方案、结构设计6.1 方案设计选择单片机为控制核心,利用温度传感器,加热棒等构建温度控制系统。控制算法采用位置式PID。6.2 结构设计6.2.1 硬件结构设计 按照题目要求,我们用单片机作为控制器,通过编程实现其对温控控制系统的控制。我们令温度传感器传回的温度与单片机内部的温度的设定至之差,通过PID相关算法运算,转换成PWM波最为控制信号输出,控制继电器的开关使执行机构(加热棒)为被控对象(水杯内的水)加热,改变水的温度。从而形成闭环控制系统。与此同时,还可以通过单片机实现对LCD液晶屏的控制,实现温

32、度的实时显示和温度曲线的绘制。此外,我们还可以利用单片机使数据的返回电脑,从而实现利用电脑做出温度变化曲线以及数据的分析。硬件结构示意图如6-1所示。单片机(STC12LE5A60S2)继电器PWM加热棒P1.2水杯温度传感器(DS18B20)LCD液晶屏P2.6P2.0P2.4PC图6-1 硬件结构示意图6.2.2 软件结构设计 我们利用软件编程实现对于单片机的控制。主程序主要包括是数据定义以及一些子程序的调用。其中,子程序主要包括测温子程序、显示子程序、PID控制子程序、中断子程序等等,其详细功能在图6-2中,在此不再赘述。主程序测温子程序显示子程序PID控制子程序中断子程序实时温度测量;

33、采样时间50msLCD温度显示;刷新时间50msLCD打点记录温度曲线;打点时间2.5s增量式PID控制PWM波输出;周期5s数据返回电脑;采样时间1s图6-2 软件结构示意图七、硬件选型7.1 单片机型号:STC12LE5A60S2STC12C5A60S2/AD/PWM 系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S一次,即25万次/秒),􄪸针对电机控制,强干扰场合。其主要特点如

34、下:1) 增强型 8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051;2) 工作电压:STC12LE5A60S2 系列工作电压: 3.6V-2.2V;3) ISP(在系统可编程)/ IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;4) 共4个16位定时器:两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器;5) PWM(2路)/ PCA(可编程计数器阵列,2路);6) A/D转换, 10

35、位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次);7) 通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器或PCA软件实现多串口。 由上面介绍可知,该类型的单片机与普通C51相比,既有速度快、功耗低等优点,且片内集成PWM及A/D转换电路,功能强大,且程序下载较普通单片机更为简单,因此选用该型号的单片机。7.2 温度传感器 常用的温度传感器有PT1000、AD590以及DS18B20。考虑到前两种传感器均需A/D转换电路才可完成测温,因此选用电路更为简单、不需外接A/D就可测温的DS18B20温度传感器。本次试验选用DS18B20传感器,DS18

36、B20是美国DALLAS半导体公司继DS1820之后最新推出的一种数字化单总线器件,属于新一代适配微处理器的改进型智能温度传感器。使用DS1SB20可使系统结构更趋简单,可靠性更高。其测量温度范围为-55+125,在-1085范围内,精度为土0.5。现场温度直接以“一线总线”的数字方式传输,用符号扩展的16位数字量方式串行输出,大大提高了系统的抗干扰性。因此,数字化单总线器件DS18B20适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。它在测温精度、转换时间、传输距离、分辨率等方面较DS18B20都有了很大的改进,给用户带来了更方便和更令人满意的效果。DS18

37、B20的性能特点如下:1) 采用DALLAS公司独特的单线接口方式:DS18B20与微处理器连仅需要一条口线即可实现微处理器与DSI8B20的双向通讯;2) 在使用中不需要任何外围元件。可用数据线供电,供电电压范围+3.0V5.5V;3) 可用数据线供电,供电电压范围+3.0V5.5V;4) 测温范围:-55125。固有测温分辨率为0.5。当在-10+85范围内,可确保测量误差不超过0.5,在-55+125范围内,测量误差也不超过2;5) 通过编程可实现912位的数字读数方式;6) 用户可自设定非易失性的报警上下限值;7) 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测

38、温;8) 负压特性,即具有电源反接保护电路。当电源电压的极性反接时,能保护DS18B20不会因发热而烧毁。但此时芯片无法正常工作;9) DS18B20的转换速率比较高,进行9位的温度转换仅需93.75ms;10) 适配各种单片机或系统;7.3 加热装置 考虑到给水加热的应用环境及成本等因素,选用220V/150W加热棒为温度控制系统加热。7.4 显示装置为了能够实时显示温度,还需要显示装置。目前常用的显示装置有两种LED和LCD,考虑到LED电路较为复杂,且无法直接绘出温度曲线,故选用铭正同创12864显示模块。其主要特点如下:1) 128 64 点阵;2) 串行SPI接口方式(仅写入);3)

39、 自带1212点和1616点汉字库(包含一级和二级汉字库);4) 自带610、816点ASCII码西文字库(96个字符);5) 自带基本绘图GUI功能(绘点、直线、矩形、矩形框、实心圆形、圆形框);6.自带整型数显示功能,直接输入整型数显示,而无需作变换;6) 带有背光控制指令,只需一条指令便可控制背光亮度等级(0127)。7) 模块本身是3.3V供电7.5 控制环节本实验采用PWM波控制加热棒的加热。PWM波为高低电平,而加热棒则需要220V交流供电,因此中间需要一个利用小电压控制大电压的控制环节。目前常用的有继电器和光耦元件。光耦元件隔离效应好,无声音,但是成本也较高。而继电器控制简单,电

40、路简单,同时成本很低,基本可以完成PID的控制需要,因此在本实验中选用继电器进行控制。八、硬件电路及软件设计8.1 硬件电路8.1.1 测温电路图8-1 测温电路DS18B20外围电路较为简单,只需在数据线和电源之间连接一个电阻。数据线接单片机P2.6口。8.1.2 继电器电路图8-2 继电器电路继电器电路与P1.2口相连,P1.2口输出PWM波,经三极管8550放大电流后,与继电器线圈端相连,与此同时,在线圈端,并上一个发光二极管,当电路正在加热时,二极管发光,这样更加易于监测电路。当P1.2为高点平时,三极管不能导通,继电器处于常闭端。当P1。2为低电平时,三极管导通,对电流放大,继电器由

41、常闭端吸合至常开端。8.1.3 加热电路图8-3 加热电路图中R5即为加热棒,当P1.2口为低电平时,三极管导通,继电器吸合至常闭端,电路开始加热。反之,当P1.2口为高电平时,电路断开,不加热。8.1.4 显示电路 由于选用的是铭正同创12864显示模块,在仿真软件Proteus 7 Professional的元件库中没有该模型,因此该部分没有进行仿真。其管脚图如下:图8-4 铭正同创12864管脚图 将电源与地与单片机分别连好。其余各脚分别与P2.0-P2.4相连即可。8.2 软件设计8.2.1 主程序 在主程序中,先定义变量、并对中断、显示模块、测温DS18B20、PWM等模块进行初始化

42、设置。设while()循环。定时器1的定时时间为50ms。对于水温加热来说,温度的变化不会很快,因此该采样时间对于实际情况而言太小了,不妨时采样时间为0.5s。因此,我设了一个计数器cycle。只有定时器工作十次,也就是cycle9时,才开始温度的测量和温度显示。然后根据实时温度,计算PWM中低电平的时间,即以5s为一个周期,加热的时间。在程序的最后,是画图部分。由于采用12864LCD,因此每一屏只能打128个点。若0.5s打一个点,只需64秒即可将屏幕打满。根据实际试验,每一次实验时间大约5min左右。这样算下来,打一个点的时间应该在2.5s左右。因此在设一个计数器,使得其打点时间为2.5

43、s。如此循环。图8-5为主程序流程图。开始系统初始化cycle99NOYES温度测量温度显示关中断cycle=0开中断计算PWM低电平时间子程序每2.5s打一个点图8-5 主程序流程图8.2.2 计算低电平数子程序 由于水温控制系统为一阶惯性迟滞环节,为使其控制更加稳定,当温度与设定温度之差小于2时,才执行PID子程序。若大于2,直接令low_time=100。开始s=set,t=t/10sts-t2low_time=100PID子程序计算low_time返回low_timeNOYES8.2.3 PID子程序 采用位置式PID的控制方法。利用公式: 。返回算得的值。利用该值计算低电平数,即加热

44、的时间。开始Error=Set-TemmSumError=SumError+ErrordError=Error-LastErrorPrevError =LastErrorLastError = ErrorReturn Proportion * Error+ Integral * SumError+ Derivative * dError返回图8-7 PID流程图8.2.4 中断程序中断程序中要完成两方面的任务:其一是将温度数据传回电脑,其二是发出脉宽调制(PWM)信号发送出来。将温度数据传回电脑利用串口实现,波特率为9600。返回数据的形式为16进制数,难以读数,我的方法是通过数学上的变换使十

45、六进制数看起来为十进制数,是读数更为简单。这些数据再经matlab处理,即可以画出温度变化曲线。发出PWM信号的周期是5s,中断的周期是50ms。因此我将PWM的信号周期分为100份,设计数器counter,当counter=low_time时发低电平信号,为水加热;其余部分为高电平,不加热。开始+counter=lowtimeCounterSetPoint - NextPoint; / 偏差pp-SumError += Error; / 积分dError = pp-LastError - pp-PrevError; / 当前微分pp-PrevError = pp-LastError; pp-

46、LastError = Error;return (pp-Proportion * Error+ pp-Integral * pp-SumError+ pp-Derivative * dError); void duty_cycle(unsigned int t) / 占空比 unsigned char s;t=t/10; /实际温度s=set;if(st)if(s-t)2) low_time=100; else rout = PIDCalc ( &spid,t ); / PID控制量返回值if(low_timeSetPoint*10 - NextPoint; / 偏差pp-SumError

47、+= Error; / 积分dError = Error-pp-LastError; / 当前微分pp-PrevError = pp-LastError; pp-LastError = Error;return (pp-Proportion * Error+ pp-Integral * pp-SumError+ pp-Derivative * dError); void duty_cycle(unsigned int t) / 占空比 unsigned int s; s=set*10;if(st)if(s-t)20) low_time=100; else rout = PIDCalc ( &s

48、pid,t ); if(low_time=100) low_time=(unsigned char)(rout/(100*0.7); else low_time=100; else low_time=0; 实验结果如下:图9-3 水温控制系统PID 控制温度变化曲线图(Kp6,Ki0.1,Kd0.3)不难看出,实际系统与仿真结果得到了很好的统一,在,时,系统能够较快达到稳定,无超调,无稳态误差,调节时间也较短,控制效果很好。参考文献1 高金源.计算机控制系统M.北京:清华大学出版社,2007.2 刘金琨.先进PID控制及其Matlab仿真(第二版)M.北京:电子工业出版社,2002.3 赵春锋

49、, 孙兴朋, 王东兴. 基于MATLAB /Simu1ink下加热炉传递函数的PID仿真试验 J.节能, 2009,4:20-22.4 张越,张炎,赵延军. 基于单片机和模糊控制的水温自动控制系统J. 仪表技术与传感器, 2001,7:71-72.5PID温度控制D.辽宁:渤海大学,2010附1:整体电路图:附2:实物图附3:程序清单(忽略头文件):主程序:#include includes.hvoid duty_cycle(unsigned int t);void DelayXus();void DS18B20_Reset();void DS18B20_WriteByte();void xi

50、nt0();void xtimer0();unsigned char lowtime,hightime,counter=0;extern unsigned char low_time;unsigned int cycle=0;unsigned int j,flag;unsigned int a,flag,shu1,shu2,shu3;unsigned long temp;unsigned int count,y,time=0;/定义小数计算部分sbit DQ = P25; /DS18B20的数据口位P3.3sbit PWM=P12;typedef unsigned char BYTE;BYTE TPH; /存放温度值的高字节BYTE TPL; /存放温度值的低

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!