1、(2011届)毕业设计题 目: 一种基于数字PID和单片机的温度控制系统设计 姓名: 专业: 电子信息工程 班级: 学 号: 指导教师: 导师职称: 年 月 日III一种基于数字PID和单片机的温度控制系统设计摘 要本次设计采用proteus仿真软件,以AT89C51单片机做为主控单元,运用PID控制算法,仿真实现了一个恒温控制系统.设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制,总体实现了一个恒温控制仿真系统。系统设计中包含硬件设计和软件设计两部分,硬件设计包含温度控制电路、温度检测电路等主要电路、LED显示电路等部分。软件设计的部分,采用模块化
2、结构,主要的模块有:键盘扫描、按键处理程序、数码管显示程序、继电器控制程序、温度信号处理程序、超温报警程序。关键词:PROTEUS仿真 PID DS18B20温度控制Based on PID and AT89C51 emperature Control Systems DesignAbstractThis design uses proteus simulation software and takes AT89C51 as master unit, using PID control algorithm to simulation a temperature control system。
3、The Design uses temperature sensor DS18B20 acquisition real-time temperature, the use of PID algorithm control furnace temperature control simulation model, the overall implementation of a temperature control simulation system。 The System design contains hardware design and software design two parts
4、 and the Hardware design include temperature control circuit, temperature detection and LED display circuit and so on 。 Part of the software design adopts modular structure 。the main module is Keypad scanning. Key processing program digital pipe display procedures, relay control procedures, temperat
5、ure signal processing program andSuper temperature alarming program。Keywords:PROTEUS simulation;DS18B20 Temperature Chip;Temperature Control;目录摘 要IIIAbstractIV第一章 绪论11。1课题的来源11。2课题的意义11。3温度控制系统的国内外发展现状3第二章 系统总体设计论证及总体设计方案32.1设计要求32.2总体设计方案3第三章 系统硬件模块设计63.1系统硬件构成概述63。2 各单元总体说明63。3按键单元83.4 LED数码管显示单元8
6、3.5温度超、低温与异常情况报警单元93.6温度测试单元103.7温度控制器件单元11第四章 恒温控制算法研究(PID)134.1 PID控制器设计134。2 PID算法的流程实现方法与具体程序14第五章 软件设计实现185.1系统软件设计概述185。2系统软件各模块介绍及模块构图185。3系统软件程序流程及程序流程图20结论25模拟仿真过程26测试分析29参考文献30致谢32附录A33附录B3443一种基于数字PID和单片机的温度控制系统设计第一章 绪 论1。1课题的来源 在现实情况中,由于环境中温度值的滞后现象严重,惯性很大,且存在很多不确定的因素,所以很难建立精确的数学模型,因此常常导致
7、控制系统的性能不佳,有时还会出现控制不稳定和失控现象.本次设计采用proteus仿真软件,以AT89C51单片机做为主控单元,运用PID控制算法,仿真实现了一个恒温控制系统,可以避免一些不确定的影响因素。传统的继电器温控电路虽然运用起来比较简单,但由于继电器运作频繁 ,可能会因触点不良而影响正常工作。现今在控制领域,一般使用PID算法进行温度控制,不过PID控制对象的数学参数也是难以建立的,并且当扰动因素不确定时,参数调整会比较麻烦,这依然是普遍存在的技术难题。本设计中的温度采集是用数字温度传感器DS18B20,在其内部集成了A/D转换器,可使电路结构更简单,且减少了温度测量转换时的精度损失,
8、从而使测量温度更为精确。数字温度传感器DS18B20只用一个引脚,即可与单片机进行连接了,这样大大的减少了设计中接线麻烦的问题,使得单片机可以节约许多端口.DS18B20芯片的体积又比较小,且还是单线与主控芯片连接,于是在实际运用中,常常把数字温度传感器DS18B20做成小型的测量温度的探头,即使是一些狭小的位置也能很方便的检测到,使温控系统发挥最大的作用1。 1.2课题的意义现在国内外市场用单片机作为为核心的温度控制系统已经越来越广泛了,且设计方案都很灵活,应用起来相当的广泛,应用于工业上的加热炉、热处理炉、反应炉,在我们日常生活中的应用也是比较广的,如热水器,室温控制,农业中的大棚温度控制
9、等等.现在人们的物质生活已经转好,随之而来的就是对生活质量的需求了。在舒适的温度下休息、活动,在不同的季节里都可以吃到各种蔬菜、水果,等等这些都需要对温度的控制.可见不仅在工业生产上温度控制是重点,在人们的日常生活中温度控制领域也潜藏这巨大的前景。如饲养几条鱼儿也成为一种趋势,这也将会带动与之相关的产业也应运发展起来.鱼缸是养鱼的必备用具,型鱼缸也在市场上层出,其中水温的控制是关键。可见本次设计的温度控制系统具有实在的研究意义。1。3温度控制系统国内外发展现状目前,国外温度控制系统正向着高精度、高智能化发展。温度控制系统在我国各个行业的应用虽然已经很普遍了,可是从国内生产的温度控制器来看,总体
10、发展水平还是落后与先进国家,同先进国家相比,还是有着很大的差距。在高端,高精度的温度控制方面,我国的温度控制技术受到了很大的局限性。在这方面有待与我们这代人的努力,同时在这方面我国还潜藏着巨大的潜力,有许多我们伸展的空间2。 由于市场的需求,国内以信息化时代的到来,带动了温度控制产业的迅速发展.温度已成为工业对象控制中一个最重要的参数,特别是在化工工业、冶金工业、机械工业、电力工业、食品工业等等领域,都需要对各种加热炉的温度进行精确的控制.随着信息工业不断的发展,传统的控制方式已满足不来高精度、高速度的控制要求了。必须不断的开发研究创造出新型的信息花的温度控制系统、近几年,国内外对温度控制系统
11、都进行了大量的研究。在各国,温度控制系统技术都已经被列为未来控制领域研究的几大方向之一,具有广阔的应用、市场前景。第二章 系统总体设计论证及总体设计方案2。1设计要求:一种基于数字PID和单片机的温度控制系统设计.要求如下: 1。 超调量0%102. 温度连续可调,范围为20403。 人机对话方便4。 温度误差0。52。2 总体设计方案在仿真设计中,先通过按键设置温度,然后通过温度传感器 DS18B20 ,从环境中采集温度,由单片机获取采集的温度值,经过处理后,可得到当前环境温度中一个比较稳定的温度值,并且通过LED数码管显示。再去根据当前设定的温度值的上下限,温度未达到预定的下限温度时,单片
12、机将通过P1。5口向蜂鸣器发送高电平信号使其发出警报生,同时通过P2。6口连接的RELAY输出高电平控制信号来驱动RL1,使得加热炉工作,为系统提供热量,来升高温度。温度上升到预定上限温度时,单片机将通过P1.5口向蜂鸣器发送高电平信号使其发出警报生,同时通过P2。6口连接的 RELAY输出低电平控制信号来驱动RL1,使得加热炉停止加热,让温度慢慢回落 3 。当因环境温度变化剧烈或因加热、降温设备出现故障时,或者因温度传感头出现故障,导致在一段时间内不能将环境温度调整到温度限内的时,单片机将通过P1.5口向蜂鸣器发送高电平信号使其发出警报生。 工作原理图如下图21:AT89C51导通加热断开降
13、温键盘电路DS18B20温度芯片数据传送LED数据显示超、低温报警继电器图21工作原理图在设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制。DS18B20是DALLAS公司生产的经典的数字温度传感器,具有低功耗、高性能、抗干扰能力、微型化、强易配处理器等等优点,它特别适合用于多点温度测控的系统,它可直接将温度转化成数字信号,交给单片机处理,并且在同一总线上可挂接多个传感器芯片,进行范围性的温度检测.在其内部集成了A/D转换器,可使电路结构更简单,且减少了温度测量转换时的精度损失。数字温度传感DS18B20只用一个引脚,即可与单片机进行连接了,这样大大
14、的减少了设计中接线麻烦的问题,使得单片机可以节约许多端口。DS18B20芯片的体积又比较小,且还是单线与主控芯片连接,于是在实际运用中,常常把数字温度传感器DS18B20做成小型的测量温度的探头,即使是一些狭小的位置也能很方便的检测到,使温控系统发挥最大的作用4。在本仿真设计中DS18B20与51单片机的P3.4口链接.DS18B20可以仿真设置环境温度,来完成设计要求,设置到20和40摄氏度时蜂鸣器就会发起警报。本次设计采用proteus仿真软件,以AT89C51单片机做为主控单元.51单片机上连接晶振和复位电路,保证单片机的正常运行。P0口与LED数码管连接,显示测量结果。P1.0,P1。
15、4。P3.3分别与3个控制按键连接,P1。5口与报警系统蜂鸣器连接。由AT89C51的端口丰富使得整个系统设计起来方便简单,线路清晰,且AT89C51 是一个高性能,低功耗的CMOS 8位单片机, AT89C51设计和配置了振荡频率可为0Hz,在实际的应用中性价比很高,是温控系统的不二选择。本设计中选择AT89C51做为主控单位也是考虑到了实际的需求和做此设计的意义的5。第三章 系统硬件模块设计3。1系统硬件构成概述本章主要介绍本次设计中的硬件设计部分,其中包含:显示模块、按键扫描模块、温度采集模块、温度加热模块、,蜂鸣器报警模块。系统电路如下图3-1:3542131系统电路图3。2 各单元总
16、体说明1 显示模块:本设计中采用4位LED数码管显示温度值,其中最后一位为小数位.2 按键模块:本设计中采用3按键设置,第一按键为复位按键,第二、三按键为温度调节按键,连接上拉电阻使其未按键时能够保持高电平。3 温度采集模块:本次设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制,数字温度传感器DS18B20只需一个引脚,即可与单片机进行通信,在设计中将DS18B20与51单片机的P3.4口连接,用其来完成温度的测量6.4 温度加热模块:本设计采用加热炉来进行温度值的控制,其配有功率显示表,以便在仿真中与温度传感器DS18B20相对应,便于统计。加热炉
17、与光电耦合器连接,光电耦合器通过RELAY与51单片机的P2。6口连接。通过51单片机发送信号来控制加热炉的运作.5 蜂鸣器报警模块:本设计中采用蜂鸣器做为报警系统,当采集到的温度经过处理后,超过规定温度上、下限时,单片机将通过P1.5口向蜂鸣器发送高电平信号使其发出警报生。3.3 按键单元一般的键盘设计采用的是硬件设计,可是其在仿真设计中连接,线路会比较麻烦。所以在本此设置中我采用的是3按键软件控制,第一个按键为复位按键,其他两个为调节按键,3按键即可完成设计中起始温度设置与复位要求,方便简洁,线路清晰设计起来也较为方便。连接上上拉电阻,使其当未有按键按下时,各各按键位都处于高电平。按键操作
18、说明:1号按键为复位设置按键,第一次按下它时,1号按键位将处于低电平, LED数码管将会显示HT(上限温度值),此时,可通过2号键和3好键来调整预设的上限温度值,每次按一下2号按键预设的温度上限值就上升一度,每次按一下3号键时预设的温度上限值就下降一度,此过程都会同过LED数码管显示.设置好上限温度后,再次按下1号按键,同样1号按键位处于了低电平,LED数码管将会显示LT(下限温度值),此时同样此时,可通过2号键和3好键来调整预设的下限温度值,每次按一下2号按键预设的温度下限值就上升一度,每次按一下3号键时预设的温度下限值就下降一度,此过程都会同过LED数码管显示.在设置好预设温度的上、下限时
19、,我们再次按下1号键,此时LED数码管显示的将是温度传感器DS18B20传送的温度值,51单片机将会把此测量值与先前预设的温度上、下限值进行比较处理,然后进行其他功能模块的操作。具体如下:复位 , 按一下为设置上限,按两下为设置下限,再按一下进入显示状态。上限 按下复位进入上下限设置时,每按一下为上限升高一度。下限 按下复位进入上下限设置时,每按一下为下限降低一度。真电路如下图3-2:32 按键电路图3。4 LED数码管显示单元为使温度显示的更为准确,本次设计中我选择的是8段的供阳的4位LED数码管(其中一段为小数点),LED数码管的8段位分别连接51单片机的P0。0P0。7端口,数码管的4位
20、选位分别通过P2。0P2.3端口连接。LED数码管在工作时,由于其为供阳的,每个段位只有当输入低电平时此段位被点亮,以显示数字“0为例,共阳的g f e d c b a 相应的为1000000,字型码为C0H.在本设计中将所以LED数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连接在一起,另外为每个数码管的公共极COM增加位元选通的控制电路,位元选通由它们自己的I/O端口链接控制。当51单片机运作时,所有的数码管都会接收到同样的字符码,我们可以通过51单片机对COM端电路进行控制,来决定那个数码管显示字符,所以只要将需要显示的数码管的选通控制打开,该单元就会显示字形,没选通的
21、就不会点亮。这样通过分时分别控制LED数码管的COM端,可以使每个位轮流显示,每位点亮的时间间隔大概为1ms左右7。LED数码管如下图33:33 LED数码管电路图3。5温度超、低温与异常情况报警单元采集到的温度经过处理后,超过规定温度上限时,单片机将通过P1。5口向蜂鸣器发送高电平信号使其发出警报生,同时通过P2。6口连接的 RELAY输出低电平控制信号来驱动RL1,使得加热炉停止加热,让温度慢慢回落;当采集到的温度经过处理后,低于设定温度下限时,单片机将通过P1。5口向蜂鸣器发送高电平信号使其发出警报生,同时通过P2.6口连接的RELAY输出高电平控制信号来驱动RL1,使得加热炉工作,为系
22、统提供热量,来升高温度。要是由于环境温度变化太剧烈或加热、降温设备出现故障,或温度传感头出现故障,而在一定时间内,不能将温度控制到规定的温度限内,单片机也将会通过P1。5口向蜂鸣器发送高电平信号使其发出警报生8。在实验中设置的下限温度是20摄氏度,当温度达到20摄氏度时,蜂鸣器就虎发出报警。实验中设置的上限温度为40摄氏度,当温度达到所示的40摄氏度时,蜂鸣器就会开始报警.仿真电路如下图34:34蜂鸣器电路图3。6温度测试单元在本设计中温度测试采用温度芯片DS18B20与51单片机的P3.4口连接.此集成芯片,可以很好的减少外界的干扰。其内部集成A/D转换器,使得电路结构更简单,且减少了温度测
23、量转换时的精度损失,从而使测量的温度值更为精确,具有实在的设计意义。且数字温度传感器DS18B20只用一个引脚,即可与单片机进行通信了,大大的减少了接线麻烦的问题,使得单片机更加具扩展性。由于DS18B20芯片的小型化,通过单条数据线,就可以和主电路连接,在实际应用中,可把数字温度传感器DS18B20做成测温探头,可方便的探入到狭小的地方,从而增加了实用性9。DS18B20的开始运作时,首先要做的是复位工作,即在开始工作前,51单片机将会给DS18B20当总先发送一个不小于480us的低电平信号,对其进行复位.DS18B20在接收到这个信号后的1560us内会回发一个芯片的存在脉冲。为了接收存
24、在脉冲,数据当总线将会被控制器拉高,存在脉冲是一个60240us的低电平信号。接下去将进行51单片机与DS18B20间的通信。51单片机发送控制的指令共有5指令,而每一个工作周期只可以发送一条指令。5条指令分别为:读取数据、指定匹配的芯片、跳跃ROM、芯片搜索、报警芯片搜索。接着51单片机发送存储器操作指令(在指令发送给DS18B20后,马上就发送存储器操作指令了)。存储器指令的功能就是控制DS18B20怎么样进行工作。DS18B20同51单片机的接线如下3-5图:35 DS18B20电路图见图可知DS18B20只需与单片机的一个端口连接即可,不过当总线为开漏需要外接一个上拉电阻R2,为4、7
25、K.3。7 温度控制器件单元在本次设计中,是采用加热炉通过PID算法来对温度进行控制的,其配有功率显示表,以便在仿真中与温度传感器DS18B20相对应,便于统计。加热炉与光电耦合器连接,光电耦合器通过RELAY与51单片机的P2.6口连接。当测量到的温度值未达到先前设定的预期温度值下限时,51单片机通过RELAY口向光电耦合器发送高电平时,无电流流过,光电耦合器将不导通,继电器也不能导通,继电器的线圈无电流通过,RL1打向电源处,加热炉通电开始工作加热,可以根据功率表的数据显示看出加热炉提升的温度。当测量到的温度值超出先前设定的预期温度值上限时,51单片机通同过RELAY口向光电耦合器发送低电
26、平时,光电耦合器将导通,有电流流过,使得继电器也导通,继电器的线圈有电流通过,RL1打向继电器线圈,加热炉断开连接,停止工作,使温度慢慢的回落。温控系统连接方法如下3-6图:36 温控系统电路图第四章恒温控制算法研究(PID)4。1 PID控制器的设计PID控制是目前在温度控制中应用最广泛的一种控制算法,其核心思想是按设定值与测量值之间的偏差比例、偏差的积累和偏差变化的趋势来控制输出量,即根据偏差值来计算控制量。数字PID控制律的实现,需采用数值逼近法,当采样的周期相当短时,可以用用差商代替微分,求和代替积分,可以有如下近似变换10. (4-1)式中,k为采样的序号,k=l,2,;T为采样的周
27、期。在离散化的过程中,采样时间T须足够的短,不然难以确保精度。在运算时,把表示成)等,省去了T。则可推算出离散的PID表达式写成: (42)式中,k为采样的序号,k=1,2,,;u(k)是第k次采样时,计算机输出的值;是第k次采样时输入的偏差值;是第次采样时输入的偏差值;是积分系数,;是积分系数。在实际的应用中,通常采用增量式PID控制算法,即数字控制器输出只是控制量的增量,该算法编程简单,数据可以递推使用,占用存储空间少,运算快。根据递推原理可得: (43)公式(4-2)与公式(43)相减,即得到增量式PID控制算法(4-4): (44)本次设计中,控制器的设计采用增量数字PID控制算法的功
28、能,可以比较灵活的调节控制信号的导通时间来控制温度值控制的工作。能够基本满足温度控制的要求。4。2 PID算法的流程实现方法与具体程序本系统设计的温度控制系统是与光电耦合器连接的加热炉。传统的方法是:当测量的环境温度达到设定值时,加热炉不在加热状态,可是此时加热炉的温度仍然会高与设定的温度值,加热炉还是会起到加热的作用,使得系统的温度经常继续要升高一会后才能开始下降。当下降到设定的下限温度值时,温控系统会促使加热炉开始工作,对系统进行加热,此过程需要一定的时间,所以往往又会下降一定温度,才能开始上升温度.所以传统的方法往往会出现一定的误差,此误差就是温度的惯性引起的11.PID算法是PID模糊
29、控制技术的核心部分,通过比例、积分、微分三方面的结合与调整构成一个反馈控制,可解由于温度的惯性而产生的误差。经过PID控制器处理后可输出电压的控制信号,从而反馈调节温度。数字PID的控制示意图如下41:PID控制器系统图41数字PID的控制实验中最主要的就是PID参数的选择,它决定着整个温度控制的精确度.我们可以根据具体情况的要求,来调节合适的参数。P为比例系数,当在一定范围内若是调节增加P时,系统的反映将会变的灵敏,稳态的误差值将会变小,可要是P值过大时的话,同样会时系统变得不稳定.P值过于小了,系统的反映又会变的很慢。可见的,P值要是选取不恰当,测量值就会和设定值的偏差越来越大,要是出现了
30、这样的问题时,可将P值的符号取反12。I为积分系数,I的值越小积分的作用就会越强,积分作用强了就会导致系统的稳定性下降,不过T值小了,稳态所产生的误差将会减小。 D为微分控制,微分控制可以改善动态的特性,当D偏大时,超调量随之变大,调节时间会减短;D偏小时,超调量同样变大,不过调节时间就会比较长,只有D合适时,才能使超调量较小,调节时间也较短.调试时,只能参考参数对系统控制过程的变化趋势,来对参数调整来先比例,后积分,再微分的步骤慢慢调试,一直凑到满意的结果为止。数字PID的差分方程: (4-5)在上式中,称为比例项;称为积分项;称为微分项.得到增量式公式为: (46)在此式中,。PID的具体
31、算法程序如下13:EnumY,U,R,Ts,Kd,Kp;/Y采集量、U控制量、R设定量、Ts采样时间、Kd微分、Kp比例 int 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=paraKd;ts=paraTs; u=r+Kpe2
32、+Kd(e2e1);,if(u0)u=0; / 控制量限制 if(u200)u=200; parau=u/10; out=parau; Void Tem_timer0( ) interrupt 1 / 采样时间 THO=tim08;TL0=tim0;If(tm+out)TEM=1;else TEM=0; if(m200)tm=0; if(out8;TLI=tim 1;If(dealCS=0) wdCtrl=paraR; if((wdCtrl-(int)(ad_data)/10)10)out=200; else if ((int)(ad_data)/10wdCtrl)2)out=0; else
33、out=CtrltabwdCtrl+2(int)(ad_data)/10; Else if (tx+=ts) PID( ); t=0; 第五章 软件设计实现5。1统软件设计概述在恒温PID控制系统中软件是整个系统的核心,在软件设计中采用分层模块化设计,其中主要的模块包含:人机交互模块、数据显示模块、PID控制器模块、信号采集模块、超、低温报警模块几部分。5。2、系统软件各模块介绍及模块结构图系统总体软件构成下图51: 人机交互模块数据显示模块PID控制器模块信号采集模块超、低温报警模块驱动输出图51系统总体软件构成图人机交互模块,是通过3位按键来实现的。第一个按键为复位按键,其他两个为调节按键
34、,当有键按下时该键位将会处于低电平状态,按键连接了上电阻,使其当未有按键按下时,各各按键位都处于高电平.本设计中的按键具体原理与操作方法,在第三章的按键单元中已经做了详细的说明.数据显示模块,是通过8段的供阳的4位LED数码管(其中一段为小数点)实现的。采用的是通过动态显示法,分时分别控制LED数码管的COM端,使每个位轮流显示,每位点亮的时间间隔大概为1ms左右. PID控制器模块,本设计是运用PID控制算法,仿真实现一个恒温控制系统。在上一章中我们已经描述了电压的控制信号,从而反馈调节温度。设计中最主要的就是PID参数的选择,它决定着整个温度控制的精确度。我们可以根据具体情况的要求,来调节
35、合适的参数。对PID函数进行初始化时,需设置函数参数,这些参数都是根据实验测定获得的,具体参数在上一章PID算法研究中有详细说明.信号采集模块,本设计中是运用DS18B20进行温度采集的,在DS18B20开始运作时,首先要做的是复位工作, DS18B20在接收到这个信号后的1560us内会回发一个芯片的存在脉冲.为了接收存在脉冲,数据当总线将会被控制器拉高,存在脉冲是一个60240us的低电平信号。接下去将进行51单片机与DS18B20间的通信。接着51单片机发送存储器操作指令(在指令发送给DS18B20后,马上就发送存储器操作指令了)。控制DS18B20怎么样进行工作16。超、低温报警模块,
36、本设计中采用蜂鸣器,对异常情况进行报警。当出现异常情况,温度过高或是过低时,控制芯片将会向蜂鸣器发送高电平,蜂鸣器在接收高电平时就会发出鸣叫声报警.5.3系统软件程序流程及程序流程图 系统软件流程如下图5-2开始系统初始化温度采集温度显示按键设置预设温度比较设定的温度与测量温度值的大小PID控制 图52系统软件流程图程序流程为:在程序开始时,先进行初始化,通过按键设置给定温度值,然后通过数码管来显示当前的温度,再比较设定的预期温度与测量温度值的大小,将比较的信息通过继电器来控制加热炉的通断,超过先前设定的预期温度值时,使单片机向蜂鸣器发送高电平信号使其发出报警,同时点亮报警指示灯.再通过单片机
37、I/O口向三极管发送低电平时,使对应三极管截止,三极管不导通,继电器也不能导通,继电器的线圈无电流通过,继电器开关不能吸合,加热炉回路处于断开状态,电路处于报警状态。可以根据电压表的数据显示看出加热炉提升的温度。当测量到的温度值低于先前设定的预期温度值上限时,使单片机将向蜂鸣器发送高电平信号使对应三极管导通,再通过I/O口向对应三极管发送高电平,三极管将处于导通状态有电流流过,使得继电器也导通,继电器的线圈有电流通过,继电器开关吸合,加热炉回路导通,加热炉开始工作。5.4 DS18B20温度传感器分析在本次软件设计中,核心的部分就是PID算法的控制与DS18B20温度采集的实现,PID算法在上
38、文中已经做了详细的介绍,在此再具体的分析下DS18B20。在本次设计我选择了DS18B20来继续温度检测,因为数字温度传感器DS18B20只需一个引脚,即可与单片机进行通信了,大大的减少了接线麻烦的问题,使得单片机更加具扩展性。由于DS18B20芯片的小型化,通过单条数据线,就可以和主电路连接,可把数字温度传感器DS18B20做成测温探头,可方便的探入到狭小的地方,从而增加了实用性。且本次设计采用proteus仿真软件,在proteus仿真软件里DS18B20可以随意设定温度,模仿实际环境温度值,便于实验17。DS18B20数字温度传感器的内部包含了高速暂存RAM与用来存储TH、TL的E 2A
39、RM。接受到的数据先是存入RAM,经检验后传送至E 2ARM。RAM中的第5个字节用与控制控制温度的数字转换分辨率,此分辨率决定DS18B20工作时温度转换的先对应的数值。其中要注意的是设定的分辨率越高,就需要消耗越多的转换时间。所以在设置分辨率时我们需要有所考虑18.DS18B20在接收到温度转换的命令后,将温度值数据转换成以二进制补码的形式存储在RAM中,然后51单片机再通过单总线接收此数据,以地位在前高位在后的方式来读取数据.接收数据后通过温度计算,将得出的温度值与设定的TH、TL进行比较,51单片机再根据比较的结果做出相应的运行工作。为此我们在程序设计中设计了下面主要几个子程序。首先对
40、DS18B20进行初始化处理void Init_DS18B20(void) unsigned char x=0; DQ = 0; /单片机将DQ拉低 delay_18B20(80); /精确延时 大于 480us DQ = 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;i0;i-) DQ =
41、 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); return(dat);再让其写一个字节,运行子程序如下:void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i) DQ = 0; DQ = dat0x01; delay_18B20(5); DQ = 1; dat=1; 接下来设计DS18B20的工作状态,设置其上、下限报警温度分别为TH和TL,且设置显示的分辨率为RS,执行的子程序如下:void setds18b20(
42、unsigned char TH,unsigned char TL,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位
43、最后就是读取DS18B20的温度值了,执行子程序如下: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=Re
44、adOneChar(); /读取温度值低位tt1=ReadOneChar(); /读取温度值高位return(tt);结论本次设计采用proteus仿真软件,以AT89C51单片机做为主控单元,运用PID控制算法,仿真实现了一个恒温控制系统。设计中使用温度传感器DS18B20采集实时温度,使用PID算法控制加热炉仿真模型进行温度控制,总体实现了一个恒温控制仿真系统.仿真中先通过按键设置温度,然后通过温度传感器 DS18B20 ,从环境中采集温度,由单片机获取采集的温度值,经过处理后,可得到当前环境温度中一个比较稳定的温度值,并且通过LED数码管显示。再去根据当前设定的温度值的上下限,温度未达到预定的下限温度时,单片机将通过P1.5口向蜂鸣器发送高电平信号使其发出警报生,同时通过P2。6口连接的RELAY输出高电平控制信号来驱动RL1,使得加热炉工作,为系统提供热量,来升高温度。温度上升到预定上限温度时,单片机将通过P1。5口向蜂鸣器发送高电平信号使其发出警报生,同时通过P2.6口连接的 RELAY输出低电平控制信号来驱动RL1,使得加热炉停止加热,让温度慢慢回落。本设计可以大体的模拟仿