基于PID算法的水温控制系统设计报告_第1页
基于PID算法的水温控制系统设计报告_第2页
基于PID算法的水温控制系统设计报告_第3页
基于PID算法的水温控制系统设计报告_第4页
基于PID算法的水温控制系统设计报告_第5页
免费预览已结束,剩余41页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 PID 的水温控制系统设计摘要本次设计采用proteus仿真软件,以AT89C51单片机做为主控单元,运用 PID控制算法,仿真实现了一个恒温控制系统。设计中使用温度传感器DS18B20采集实时温度,不需要复杂的信号调理电路和 A/D 转换电路, 能直接与单片机完成数据的采集和处理,使用 PID 算法控制加热炉仿真模型进行温度控制,总体实现了一个恒温控制仿真系统。系统设计中包含硬件设计和软件设计两部分,硬件设计包含显示模块、按键模块、温度采集模块、 温度加热模块。 软件设计的部分, 采用分层模块化设计, 主要有: 键盘扫描、按键处理程序、 液晶显示程序、 继电器控制程序、 温度信号处理程

2、序。 另外以 AT89C51单片机为控制核心,利用 PID 控制算法提高了水温的控制精度,使用 PID 控制算法实施自动控制系统,具有控制参数精度高、反映速度快和稳定性好的特点。关键词 :proteus仿真,PID, AT89C51, DS18B20温度控制1 系统总体设计方案论证 11.1 设计要求 1.2 总体设计方案2 系统的硬件设计2.1 系统硬件构成概述32.2 各单元总体说明 42.3 按键单元 2.4 LCD 液晶显示单元62.5 温度测试单元2.6 温度控制器件单元83 恒温控制算法研究( PID ) 错 误 !.未定义书签。.3.1 PID控制器的设计 103.2 PID 算

3、法的流程实现方法与具体程序124 系统的软件设计 14.1 统软件设计概述 174.2 系统软件程序流程及程序流程图 184.3 温度数据显示模块分析 194.4 测试分析 25 模拟仿真结果错误!.未定义书签。1 系统总体设计方案论证1.1 设计要求一种基于数字PID 和单片机的温度控制系统设计。要求如下:1、超调量010%2、温度可调,范围; K1=50 度 K2=60 度 K3=70 度 K4=80 度3、人机对话方便4、温度误差0土 1C1.2 总体设计方案在仿真设计中,先通过按键设置温度,然后通过温度传感器DS18B2Q从环境中采集温度,由单片机获取采集的温度值,经过处理后,可得到当

4、前环境温度中一个比较稳定的温度值,并且通过LCD 液晶显示。再去根据当前设定的温度值进行比较,温度未达到预定的下限温度时,单片机将通过P2.6 口连接的RELAY 输出高电平控制信号来驱动RL1,使得加热棒工作,为系统提供热量,来升高温度。温度上升到预定上限温度时, 单片机将通过P2.6 口连接的RELAY输出低电平控制信号来驱动 RL1,使得加热棒停止加热,让温度慢慢回落 咒工作原理图如图1.1所示:在设计中使用温度传感器 DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制。DS18B20是DALLAS公司生产的经典的数字温度传感器, 具有低功 耗、高性能、抗干扰能力、

5、微型化、强易配处理器等等优点,它特别适合用于多点温度 测控的系统,它可直接将温度转化成数字信号,交给单片机处理,并且在同一总线上可挂接多个传感器芯片,进行范围性的温度检测。在其内部集成了A/D转换器,可使电路结构更简单,且减少了温度测量转换时的精度损失。 数字温度传感DS18B20只用一个 引脚,即可与单片机进行连接了,这样大大的减少了设计中接线麻烦的问题,使得单片机可以节约许多端口。 DS18B20芯片的体积又比较小,且还是单线与主控芯片连接,于是在实际运用中,常常把数字温度传感器 DS18B20做成小型的测量温度的探头,即使是一些狭小的位置也能很方便的检测到,使温控系统发挥最大的作用4。在

6、本仿真设计中DS18B20与51单片机的P3.4口链接。DS18B20可以仿真设置环境温度,来完成设计要求。本次设计采用proteus仿真软件,以AT89C51单片机做为主控单元。51单片机上连接晶振和复位电路,保证单片机的正常运行。 P0 口与 LCD 液晶连接,显示测量结果。P1.0, P1.4, P3.3, P3.4分别与4个控制按键连接。由 AT89C51的端口丰富使得整个系统设计起来方便简单, 线路清晰, 且 AT89C51 是一个高性能, 低功耗的CMOS 8位单片机,AT89C51设计和配置了振荡频率可为0Hz,在实际的应用中性价比很高,是温控系统的不二选择。本设计中选择AT89

7、C51 做为主控单位也是考虑到了实际的需求和做此设计的意义的 5。2 系统的硬件设计2.1 系统硬件构成概述本章主要介绍本次设计中的硬件设计部分,其中包含:显示模块、按键扫描模块、温度采集模块、温度加热模块。2.2 各单元总体说明1、 显示模块:本设计中采用 LCD 液晶显示温度值,其中最后一位为小数位。2、 按键模块:本设计中采用 5按键设置,第一按键为复位按键,第2、 3、 4、 5按键为温度档位按键,连接上拉电阻使其未按键时能够保持高电平。3、温度采集模块:本次设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制,数字温度传感器DS18B20只需一

8、个引脚,即可与单片机进行通信,在设计中将 DS18B20与51单片机的P3.4 口连接,用其来完成温度 的测量 6。4 、 温度加热模块:本设计采用加热棒来进行温度值的控制,其配有功率显示表,以便在仿真中与温度传感器 DS18B20相对应,便于统计。加热棒与光电耦合器连接,光 电耦合器通过RELAY 与 51 单片机的P2.6 口连接。通过51 单片机发送信号来控制加热棒的运作。2.3 按键单元一般的键盘设计采用的是硬件设计,可是其在仿真设计中连接,线路会比较麻烦。所以在本此设置中我采用的是5 按键软件控制,第一个按键为复位按键,其他两个为档位调节按键, K1 为 50度、 K2 为 60度、

9、 K3 为 70度、 K4 为 80度,方便简洁,线路清晰设计起来也较为方便。连接上上拉电阻,使其当未有按键按下时,各各按键位都处于高电平。按键操作说明:1 号按键为复位设置按键,第一次按下它时, 1 号按键位将处于低电平, LCD 液晶将会显示未加热时的温度,此时,可通过档位按键设置温度,然后进行其他功能模块的操作。3.1 所示:3.6 温度测试单元在本设计中温度测试采用温度芯片 DS18B20与51单片机的P3.4 口连接。此集成芯 片,可以很好的减少外界的干扰。其内部集成 A/D转换器,使得电路结构更简单,且 减少了温度测量转换时的精度损失,从而使测量的温度值更为精确,具有实在的设计意

10、义。且数字温度传感器DS18B20只用一个引脚,即可与单片机进行通信了,大大的减少 了接线麻烦的问题,使得单片机更加具扩展性。由于DS18B20芯片的小型化,通过单条 数据线,就可以和主电路连接,在实际应用中,可把数字温度传感器DS18B20做成测温 探头,可方便的探入到狭小的地方,从而增加了实用性咒DS18B20的开始运作时,首先要做的是复位工作,即在开始工作前,51单片机将会 给DS18B20当总先发送一个不小于480us的低电平信号,对其进行复位。DS18B20在接 收到这个信号后的1560us内会回发一个芯片的存在脉冲。为了接收存在脉冲,数据当 总线将会被控制器拉高,存在脉冲是一个 6

11、0240us的低电平信号。接下去将进行51单 片机与DS18B20间的通信。51单片机发送控制的指令共有5指令,而每一个工作周期 只可以发送一条指令。5条指令分别为:读取数据、指定匹配的芯片、跳跃 ROM、芯片 搜索、报警芯片搜索。接着51单片机发送存储器操作指令(在指令发送给DS18B20后, 马上就发送存储器操作指令了)。存储器指令的功能就是控制 DS18B20怎么样进行工作DS18B20同51单片机的接线如图3.4所示:见图可知DS18B20只需与单片机的一个端口连接即可,不过当总线为开漏需要外接一个上拉电阻 R ,为4.7KQ3.7 温度控制器件单元在本次设计中,是采用加热棒通过 PI

12、D算法来对温度进行控制的,以便在仿真中与温度传感器 DS18B20相对应,便于统计。加热棒与光电耦合器连接,光电耦合器通过RELAY与51单片机的P2.6 口连接。51单片机通过RELAY 口向光电耦合器发送高电平时, 无电流流过,光电耦合器将不导通,继电器也不能导通,继电器的线圈无电流通过,RL1打向电源处, 加热棒通电开始工作加热,可以看出加热棒提升的温度。当测量到的温度值超出先前设定的预期温度值上限时,51单片机通同过RELAY 口向光电耦合器发送低电平时,光电耦合器将导通,有电流流过,使得继电器也导通,继电器的线圈有电流通过, RL1打向继电器线圈,加热棒断开连接,停止工作,使温度慢慢

13、的回落。温控系统连接方法如图3.5所示:图3.5温控系统电路4恒温控制算法研究(PID )4.1 PID控制器的设计PID控制是目前在温度控制中应用最广泛的一种控制算法,其核心思想是按设定值与测量值之间的偏差比例、偏差的积累和偏差变化的趋势来控制输出量,即根据偏差值来计算控制量。数字 PID控制律的实现,需采用数值逼近法,当采样的周期相当短时,可以用用差商代替微分,求和代替积分,可以有如下近似变换叫t KTte t dt okT e jTj 0(4.1)de t e kT e k 1T e k e k 1dtTT式中,k为采样的序号,k=l, 2,;T为采样的周期。在离散化的过程中,采样时间

14、T须足够的短,不然难以确保精度。在运算时,把ekT表示成ek等,省去了 T。则可推算出离散的PID表达式写成:ku k Kpek K e j Kd e k e k 1 j o(4.2)式中,k为采样的序号,k=1, 2,;uk是第k次采样时,计算机输出的值;ek是第k次采样时输入的偏差值;ek 1是第k 1次采样时输入的偏差值;K1是积分系数,K1 KP工;KD是积分系数,KD Kp""。TiT在实际的应用中,通常采用增量式 PID控制算法,即数字控制器输出只是控制量的增量,该算法编程简单,数据可以递推使用,占用存储空间少,运算快。根据递推原理可得:4恒温控制算法研究(PI

15、D )4.1 PID控制器的设计PID控制是目前在温度控制中应用最广泛的一种控制算法,其核心思想是按设定值与测量值之间的偏差比例、偏差的积累和偏差变化的趋势来控制输出量,即根据偏差值来计算控制量。数字 PID控制律的实现,需采用数值逼近法,当采样的周期相当短时,可以用用差商代替微分,求和代替积分,可以有如下近似变换叫t KTte t dt okT e jTj odet e kT e k1T e kdt(4.1)式中,k为采样的序号,k=l, 2,;T为采样的周期。在离散化的过程中,采样时间 T须足够的短,不然难以确保精度。在运算时,把ekT表示成ek等,省去了 T则可推算出离散的PID表达式写

16、成:ku k Kpek Ki e j Kd e k e k 1j o(4.2)式中,k为采样的序号,k=1, 2,;uk是第k次采样时,计算机输出的值;ek是第k次采样时输入的偏差值;ek 1是第k 1次采样时输入的偏差值;Ki是积分系数,Ki KpT; Kd是积分系数,Kd KpTdo TiT在实际的应用中,通常采用增量式 PID控制算法,即数字控制器输出只是控制量的增量,该算法编程简单,数据可以递推使用,占用存储空间少,运算快。根据递推原理可得:ku k 1 Kpek 1 Ki ej Kd e K 1 e k 2(4.3)j o公式(4.2)与公式(4.3)相减,即彳4到增量式PID控制算

17、法(4.4):u k Kp e k e k 1KIek Kd ek 2e k 1 e k 2(4.(4)本次设计中,控制器的设计采用增量数字PID控制算法的功能,可以比较灵活的调节控制信号的导通时间来控制温度值控制的工作。能够基本满足温度控 制的要求。4.2 PID算法的流程实现方法与具体程序本系统设计的温度控制系统是与光电耦合器连接的加热炉。传统的方法是:当测量的环境温度达到设定值时, 加热炉不在加热状态,可是此时加热炉的温度 仍然会高与设定的温度值,加热炉还是会起到加热的作用,使得系统的温度经常 继续要升高一会后才能开始下降。当下降到设定的下限温度值时,温控系统会促 使加热炉开始工作,对系

18、统进行加热,此过程需要一定的时间,所以往往又会下 降一定温度,才能开始上升温度。所以传统的方法往往会出现一定的误差, 此误 差就是温度的惯性引起的110PID算法是PID模糊控制技术的核心部分,通过比例、积分、微分三方面的结合与调整构成一个反馈控制,可解由于温度的惯性而产生的误差。et n0 t n t经过PID控制器处理后可输出电压的控制信号 u t ,从而反馈调节温度。数字PID的控制示意图如图4.1所示:图4.1数字PID的控制实验中最主要的就是 PID参数的选择,它决定着整个温度控制的精确度。 我们可以根据具体情况的要求,来调节合适的参数。P为比例系数,当在一定范围内若是调节增加 P时

19、,系统的反映将会变的灵 敏,稳态的误差值将会变小,可要是P值过大时的话,同样会时系统变得不稳定。 P值过于小了,系统的反映又会变的很慢。可见的,P值要是选取不恰当,测量值就会和设定值的偏差越来越大,要是出现了这样的问题时,可将P值的符号取 反叫I为积分系数,I的值越小积分的作用就会越强,积分作用强了就会导致系 统的稳定性下降,不过T值小了,稳态所产生的误差将会减小。D为微分控制,微分控制可以改善动态的特性,当 D偏大时,超调量随之 变大,调节时间会减短;D偏小时,超调量同样变大,不过调节时间就会比较长, 只有D合适时,才能使超调量较小,调节时间也较短。调试时,只能参考参数对系统控制过程的变化趋

20、势,来对参数调整来先比例, 后积分,再微分的步骤慢慢调试,一直凑到满意的结果为止。编辑版word数字PID的差分方程:在上式中Ud n KpK p e n,Up nTDenTTnei TDen en 1Ti i 0Tu0 Up(n) Ui(n) UD(n) U0Ke n称为比例项;Ui Kpe n 1称为微分项(4.5)Tie i称为积分项;o得到增量式公式为:a0e na1e n 1a2e n(4.6)在此式中,a。Kp 1TTd二,a1TiTKP 12TdTa2 KPTdoPID的具体算法程序如下13:EnumY,U,R,Ts, Kd Kp;/Y 采集量、U控制量、R设定量、Ts采样时间、

21、Kd微分、K p比例 pint para6,ptr,out;/out 是从 PID()得到的控制量int r, Kp, Kd,Ts,e2,e1,e0,u;/*/Void initPID( ) / 初始化 PID 函数 paraR=20;paraKp=2;paraKd =2;paraTs=1Void PID( ) paraY=(int)(ad_data);r=paraR;e0=e1;e1=e2;e2=r-paraY/10;Kp=paraKp;Kd=para Kd;ts=paraTs;u=r+ Kp*e2+Kd*(e2-e1);,if(u<0)u=0;/ 控制量限制if(u>200)u

22、=200;parau=u/10;out=parau;Void Tem_timer0( ) interrupt 1 / 采样时间 THO=tim0>>8;TL0=tim0;If(tm+>out)TEM=1;else TEM=0;if(m>200)tm=0;if(out<10)TEM=1;if(timecnt+=100) timecnt=0;Void timer1( ) interrupt 3 TH1=timer 1( )>>8;TLI=tim 1;If(dealCS=0)wdCtrl=paraR;if(wdCtrl-(int)(ad_data)/10)&

23、gt;10)out=200;else if (int)(ad_data)/10-wdCtrl)>2)out=0;else out=CtrltabwdCtrl+2-(int)(ad_data)/10;Else if (tx+>=ts) PID( );t=0;编辑版 word5 系统的软件设计5.1 统软件设计概述在恒温 PID 控制系统中软件是整个系统的核心,在软件设计中采用分层模块化设计,其中主要的模块包含:人机交互模块、数据显示模块、 PID 控制器模块、信号采集模块、超、低温报警模块几部分14。1、人机交互模块,是通过3 位按键来实现的。第一个按键为复位按键,其他两个为调节按键

24、, 当有键按下时该键位将会处于低电平状态, 按键连接上了电阻,使其当未有按键按下时,各各按键位都处于高电平15。本设计中的按键具体原理与操作方法,在第三章的按键单元中已经做了详细的说明。2、数据显示模块,是通过LCD 液晶实现的。采用的是通过动态显示法,分时分别控制 LCD 液晶的 COM 端,使每个位轮流显示,每位点亮的时间间隔大概为1ms左右。3、 PID 控制器模块,本设计是运用 PID 控制算法,仿真实现一个恒温控制系统。在上一章中我们已经描述了 e t n0 t n t ,电压的控制信号u t ,从而反馈调节温度。设计中最主要的就是PID 参数的选择,它决定着整个温度控制的精确度。我

25、们可以根据具体情况的要求,来调节合适的参数。对PID 函数进行初始化时, 需设置函数参数, 这些参数都是根据实验测定获得的, 具体参数在上一章 PID 算法研究中有详细说明。4、信号采集模块,本设计中是运用DS18B20进行温度采集的,在DS18B20开始运作时,首先要做的是复位工作,DS18B20在接收到这个信号后的1560us 内会回发一个芯片的存在脉冲。为了接收存在脉冲,数据当总线将会被控制器拉高,存在脉冲是一个60240us的低电平信号。接下去将进行51单片机与DS18B20 间的通信。接着51单片机发送存储器操作指令(在指令发送给 DS18B20后,马 上就发送存储器操作指令了)。控

26、制DS18B20怎么样进行工作16。5.2 系统软件程序流程及程序流程图系统软件流程如图5.2所小:图5.2系统软件流程图程序流程为:在程序开始的时,先设置初始化,通过按键设置预定温度值,然后通过数码 管来显示当前的温度,再比较设定的预期温度与测量温度值的大小, 将比较的信 息通过继电器,去根据当前设定的温度值的上下限, 当测量到的温度值未达到先 前设定的预期温度值下限时,使单片机向蜂鸣器发送高电平信号使其发出警报生,再通过RELAY 口向光电耦合器发送高电平时,无电流流过,光电耦合器将不导通,继电器也不能导通,继电器的线圈无电流通过, RL1 打向电源处,加热棒通电开始工作加热, 可以根据功

27、率表的数据显示看出加热棒提升的温度。 当测量到的温度值超出先前设定的预期温度值上限时, 使单片机将向蜂鸣器发送高电平信号使其发出警报生,再通过过RELAY 口向光电耦合器发送低电平时,光电耦合器将导通,有电流流过,使得继电器也导通,继电器的线圈有电流通过,RL1 打向继电器线圈,加热棒断开连接,停止工作,使温度慢慢的回落。5.3 温度数据显示模块分析在本次软件设计中,核心的部分就是 PID算法的控制与DS18B20温度采集的实现, PID 算法在上文中已经做了详细的介绍, 在此再具体的分析下DS18B20。在本次设计我选择了 DS18B20 来继续温度检测,因为数字温度传感器DS18B20只需

28、一个引脚,即可与单片机进行通信了,大大的减少了接线麻烦的问题,使得单片机更加具扩展性。由于DS18B20芯片的小型化,通过单条数据线,就可以和主电路连接,可把数字温度传感器DS18B20做成测温探头,可方便的探入到狭小的地方,从而增加了实用性。且本次设计采用proteus仿真软件,在proteus仿真软件里DS18B20可以随意设定温度,模仿实际环境温度值,便于实 验17。DS18B20数字温度传感器的内部包含了高速暂存RAM与用来存储TH、TL的 E2ARM 。接受到的数据先是存入RAM ,经检验后传送至 E2ARM 。 RAM 中的第5个字节用与控制温度的数字转换分辨率,此分辨率决定DS1

29、8B20工作时温度转换的先对应的数值。 其中要注意的是设定的分辨率越高, 就需要消耗越多的 转换时间。所以在设置分辨率时我们需要有所考虑18。编辑版 wordDS18B20在接收到温度转换的命令后,将温度值数据转换成以二进制补码的形式存储在RAM 中, 然后 51 单片机再通过单总线接收此数据, 以地位在前高位在后的方式来读取数据。接收数据后通过温度计算,将得出的温度值与设定的TH 、 TL 进行比较, 51 单片机再根据比较的结果做出相应的运行工作。为此我们在程序设计中设计了下面主要几个子程序。首先对DS18B20进行初始化处理void Init_DS18B20(void)unsigned

30、char x=0;DQ = 0;/ 单片机将 DQ 拉低delay_18B20(80); /精确延时大于480usDQ = 1;/ 拉高总线delay_18B20(14);x=DQ;/ 稍做延时后,如果x=0 则初始化成功x=1 则初始化失败delay_18B20(20);在初始化后,先让DS18B20读一个字节unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-)DQ = 0; / 给脉冲信号dat>>=1;DQ = 1; / 给脉冲信号if(DQ)dat

31、|=0x80;delay_18B20(4);return(dat);再让其写一个字节,运行子程序如下:void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;delay_18B20(5);DQ = 1;dat>>=1;TH 和接下来设计DS18B20的工作状态,设置其上、下限报警温度分别为TL,且设置显示的分辨率为RS,执行的子程序如下18:void setds18b20(unsigned char TH,unsigned char TL,

32、unsigned char RS) Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x4E); / / 写入“写暂存器”命令, 修改 TH 和 TL 和分辩率配置寄存器/ 先写 TH ,再写 TL ,最后写配置寄存器WriteOneChar(TH);/ 写入想设定的温度报警上限WriteOneChar(TL);/ 写入想设定的温度报警下限WriteOneChar(RS); / 写配置寄存器,格式为 0 R1 R0 1, 1 1 1 1/R1R0=00 分辨率娄 9 位, R1R0=11 分辨率为 12位最后就是读取DS1

33、8B20的温度值了,执行子程序如下: unsigned char *ReadTemperature(void) unsigned char tt2;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay_18B20(70);/ 温度转化要一段时间Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0xBE);/ 读取温度寄存器等(共可读9 个寄存器)前两个就是温度/delay_18B20(70);tt0=ReadOneCh

34、ar();/ 读取温度值低位tt1=ReadOneChar();/ 读取温度值高位return(tt);5.4 测试分析1、测试环境仿真环境温度20 90摄氏度。2、测试方法用调节DS18B20, 来模拟环境温度,通过按键来设置温度的上、 下限与复位,根据 LCD 液晶显示来观察结果。3、测试结果(1)设定温度由20 摄氏度到 90 摄氏度。(2标定温差三1摄氏度调节时间15s (具体情况随实际情况)。(3常态误差三0.5氏度最大超调量1摄氏度。4、通过仿真测试分析,对于实际的室内的温度控制,可以再得出以下2 点方法:(1)我们可以通过增加传感器的个数,然后算出平均值, 这样可以获得较为精确的

35、温度值。(2)在对环境温度的控制环节中,我们可采用功率较大的加热电阻, 实现对环境温度的提升,用风扇来对环境温度进行降温处理。51 单片机通过RELAY 口向光电耦合器发送高电平时, 无电流流过, 光电耦合器将不导通, 继电器也不能导通, 继电器的线圈无电流通过, RL1 打向电源处,如图 6.2所示:编辑版 word图6.2 17 C时系统电流流向图此时加热棒通电开始工作加热,可以根据功率表的数据显示得出加热棒提升 的温度,如图6.3所示:51单片机通同过RELAY 口向光电耦合器发送低电平时,光电耦合器将导通有电流流过,使得继电器也导通,继电器的线圈有电流通过, RL1打向继电器线圈,如图

36、6.5所示:此时加热棒断开连接,停止工作,但是加热棒还是会有一定的延迟性, 只能让温度慢慢的回落,如图6.6所示:本次设计采用proteus仿真软件,以AT89C51单片机做为主控单元,运用PID控制算法,仿真实现了一个恒温控制系统。设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热棒仿真模型进行温度控制,总体实现了一个恒温控制仿真系统。仿真中先通过按键设置温度,然后通过温度传感器DS18B2Q从环境中采集温度,由单片机获取采集的温度值,经过处理后,可得编辑版word到当前环境温度中一个比较稳定的温度值,并且通过LCD 液晶显示。再去根据当前设定的温度值的上下限,温度未达到

37、预定的下限温度时,同时通过P2.6 口连接的RELAY输出高电平控制信号来驱动 RL1,使得加热棒工作,为系统提供热量, 来升高温度。 温度上升到预定上限温度时, 同时通过 P2.6 口连接的 RELAY输出低电平控制信号来驱动 RL1,使得加热棒停止加热,让温度慢慢回落。附录主程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P3A4;ds18b20 与单片机连接口unsigned char code led=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x

38、82,0xf8,0x80,0x90,0xff;uchar data disdata5;uchar Vref=5;uchar a6;sbit PIN=P0A7;unsigned int tvalue;/M 度值signed int temp=0;uchar tflag;/温度正负标志signed char th=40;/ 上限温度signed char tl=20; / 下限温度sbit SPEAKER=P1A5;sbit SET=P1A0;sbit ADD=P1A4;sbit SUB=P3A3;unsigned char num;sbit RELAY=P2A6;编辑版 word/*LCD160

39、2 程序 */void delay1ms(unsigned int ms)/®时 1 毫秒(不够精确的)unsigned int i,j;for(i=0;i<ms;i+)for(j=0;j<100;j+);void keyscan() if(SET=0)delay1ms(10);if(SET=0)(num+;if(num=3)num=0;while(!SET);)if(num!=0)(if(ADD=0)(delay1ms(10);if(ADD=0)(if(num=1)(th+;if(th=125)th=tl+1;编辑版wordif(num=2)if(tl<(th-1

40、)tl+;while(!ADD);if(SUB=0)delay1ms(10);if(SUB=0)if(num=1)th-;if(th=(tl+1)th=125;if(num=2)tl-;if(tl=-25)tl=th-1;while(!SUB);编辑版 word/*DS18B20程序*/void delay_18B20(unsigned int i)施时 1 微秒while(i-);void ds1820rst()/*ds182Cfi 位*/ unsigned char x=0;DQ =1;/DQ复位delay_18B20(4); / 延时DQ =0;/DQ拉低delay_18B20(100)

41、; /精确延时大于480usDQ =1;/ 拉高delay_18B20(40);uchar ds1820rd()/*实数据 */ unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ = 0; / 给脉冲信号dat>>=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;delay_18B20(10);return(dat);void ds1820wr(uchar wdata)/*!数据 */unsigned char i=0;for (i=8; i>0; i-) DQ = 0;DQ = w

42、data&0x01;delay_18B20(10);DQ = 1;wdata>>=1;read_temp()/微取温度值并转换*/uchar a,b;ds1820rst();ds1820wr(0xcc);/*跳过读序列号 */ds1820wr(0x44);/*启动温度转换 */ds1820rst();ds1820wr(0xcc);/*跳过读序列号 */ds1820wr(0xbe);/*读取温度 */a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff)t

43、flag=0;elsetvalue=tvalue+1; / 低于零度tflag=1;tvalue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数return(tvalue);/*/void ds1820disp()温度值显示disdata0=tvalue/1000;disdata1=tvalue%1000/100;disdata2=tvalue%100/10;disdata3=tvalue%10;/小数位 /disdata=0;/ if(tflag=0)P2=0x01;P0=leddisdata0;delay1ms(10);P2=0x02;P0=leddisdata1;del

44、ay1ms(10);P2=0x04;P0=leddisdata2;PIN=0;delay1ms(10);P2=0x08;P0=leddisdata3;delay1ms(10) ;elseP2=0x01;P0=0xbf;delay1ms(10);P2=0x02;P0=ledtvalue%1000/100;delay1ms(10);P2=0x04;P0=ledtvalue%100/10;PIN=0;delay1ms(10);P2=0x08;P0=ledtvalue%10;delay1ms(10) ;void displayth(void)P2=0x01;P0=0x89;delay1ms(10);if(th>0)P2=0x02;P0=ledth/100;delay1ms(10);P2=0x04;P0=ledth%100/10;delay1ms(10);P2=0x08;P0=ledth%100%10;delay1ms(10);elseP2=0x02;P0=0xbf;delay1ms(

温馨提示

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

评论

0/150

提交评论