温度控制系统设计报告TEMPERATURE AUTOCONTROL SYSTEM中国·王文涛、志超、喻伟2009-8-8摘要本系统主要基于DS18B20和51单片机为核心来实现系统的温度自动化控制,通过使用PID算法和PWM脉宽调制实现温度的精确控制,由温度传感器返回温度值后与设定温度比较,经过单片机的处理后发出相应的控制信号使一定空间围的温度保持基本恒定,通过实际应用加深对系统设计和PID算法的理解,提高应用能力。
关键词:PID算法 DS18B20 温度控制 51单片机Abstract:This system mainly based on DS18B20 and 51 single-chip microcomputer as the coreto realize automation control system of temperature, through the use of PID algorithm and PWM pulse width modulation realize accurate temperature control of the temperature sensor, the temperature and the temperature returned after comparison, through the processing chip out the corresponding control signal after that certain space within the scope of the temperature is kept constant, through the actual application of the basic of system design and PID algorithm of understanding, improve application ability.Keyword:PID algorithm DS18B20 temperature control 51-series microcomputer设计要求:1、基本要求①容器环境温度设定围:,最小区分度为1℃;②当容器环境温度降低时(例如用电风扇降温),温度控制的静态误差≤1℃;③显示容器环境的实际温度。
2、发挥部分①采用适当的控制方法,当设定容器环境温度突变(由30℃提高到50℃)时,减小系统的调节时间和超调量,同时自动打印其温度随时间变化的曲线;②温度控制的静态误差≤0.2℃;③采用发光二极管光柱形式和数码形式显示白炽灯灯壁上的温度;④其它。
基本设计思路:由题目要求可知,本系统对温度控制的精度要求比较高,因此考虑使用PID 控制来控制系统温度,而热源的控制采用PWM波来进行精确控制。
由温度传感器来传回温度数据,由单片机处理数据并发出相应的动作,从而保证温度的恒定。
方案论证:(1)温度传感器方案一:采用AD590作温度传感器,AD590是一种恒流源形式的温度传感器,只要在其二端加上一定工作电压,则其输出电流随温度变化而变化,其线性电流输出为1uA/K,电流信号再由运放转换为电压信号,通过A/D转换器将输入的模拟电压量转换为数字量,并通过并行接口芯片将数字量送给计算机。
具体接口电路如下:方案二:DS18B20是达拉斯公司生产的数字温度传感器,测温围在-55℃~+125℃,采用单总线通信微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
精度可以达到0.0625℃。
因此由以上来看我们选用方案二18B20足以满足系统要求而且使设计更加简单可行。
(2)主控芯片方案一: 51系列的8位单片机方案二:DSP、ARM等高速数据处理器本系统对主控芯片的要求不是太高,51系列单片机足以胜任,因此选用方案一51系列的AT89S52。
(3)显示及键盘方案一:八位数码管显示。
方案二:LCD1602液晶显示。
由于需要显示的数据比较多,为电路设计简便起见,我们选用方案二。
系统设计概要:(1)系统外形缩略图(3)PID算法PID算法是本程序中的核心部分。
我们采用PID模糊控制技术,通过Pvar、Ivar、Dvar(比例、积分、微分)三方面的结合调整形成一个模糊控制来解决惯性温度误差问题。
其原理如下:本系统的温度控制器的电热元件之一是发热丝。
发热丝通过电流加热时,部温度都很高。
当容器温度升高至设定温度时,温度控制器会发出信号停止加热。
但这时发热丝的温度会高于设定温度,发热丝还将会对被加热的器件进行加热,即使温度控制器发出信号停止加热,被加热器件的温度还往往继续上升几度,然后才开始下降。
当下降到设定温度的下限时,温度控制器又开始发出加热的信号,开始加热,但发热丝要把温度传递到被加热器件需要一定的时候,这就要视发热丝与被加热器件之间的介质情况而定。
通常开始重新加热时,温度继续下降几度。
所以,传统的定点开关控制温度会有正负误差几度的现象,但这不是温度控制器本身的问题,而是整个热系统的结构性问题,使温度控制器控温产生一种惯性温度误差。
增量式PID算法的输出量为ΔUn = Kp[(en-en-1)+(T/Ti)en+(Td/T)(en-2*en-1+en-2)]式中,en、en-1、en-2分别为第n次、n-1次和n-2次的偏差值,Kp、Ti、Td分别为比例系数、积分系数和微分系数,T为采样周期。
计算机每隔固定时间 T将现场温度与用户设定目标温度的差值带入增量式PID算法公式,由公式输出量决定PWM方波的占空比,后续加热电路根据此PWM 方波的占空比决定加热功率。
现场温度与目标温度的偏差大则占空比大,加热电路的加热功率大,使温度的实测值与设定值的偏差迅速减少;反之,二者的偏差小则占空比减小,加热电路加热功率减少,直至目标值与实测值相等,达到自动控制的目的。
硬件设计1、单片机最小系统单元主控机系统采用了Atmel 公司生产的 AT89S52单片机,它含有256 字节数据存储器,置8K 的电可擦除FLASH ROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。
复位电路和晶振电路是AT89S52 工作所需的最简外围电路。
单片机最小系统电路图如下图所示。
单片机最小系统图AT89S52 的复位端是一个史密特触发输入,高电平有效。
RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。
在复位电路中,按一下复位开关就使在RST端出现一段时间的高电平,外接24M 晶振和两个30pF 电容组成系统的部时钟电路。
2、18B20温度传感器美国DALLAS公司的产品可编程单总线数字式温度传感器DS18B20可实现室温度信号的采集,有很多优点:如直接输出数字信号,故省去了后继的信号放大及模数转换部分,外围电路简单,成本低;单总线接口,只有一根信号线作为单总线与CPU连接,且每一只都有自己唯一的64位系列号存储在其部的ROM存储器中,故在一根信号线上可以挂接多个DS18820,便于多点测量且易于扩展。
由图可知,18B20只占用一个IO口,只要将传感器的第二脚接到单片机的P3.7口即可向单片机传输数据。
3、键盘显示部分电路独立按键设计比起中断键盘相对简单很多,因为本系统只有两个按键,及用程序扫描键盘即可,液晶的八个数据口接P0口,三个控制端口R/S、R/W、E分别接P1.2、P1.3、P1.4。
4、PWM驱动电路驱动部分主要采用IRF540N场效应管,它最大可以通过28A电流,驱动能力相当强悍,由R3的的一端接单片机I/O口,高压部分和低压部分使用用光电耦合器隔离,信号单向传输,输入端与输出端完全实现了电气隔离隔离,输出信号对输入端无影响,抗干扰能力强,工作稳定,无触点,使用寿命长,传输效率高。
5、光柱部分电路光柱由74HC373来驱动,由于锁存器可以灌输较大的电流,从而可以保证LED灯的亮度,通过LE锁存端得锁存作用,可以防止灯柱因IO口电平快速变化而造成灯柱闪烁。
当锁存端LE为高电平时,锁存器直通,灯柱跟随IO口的电平变化,结束后LE变回低电平锁存数据。
软件设计1、系统主程序本系统的系统主程序采用C语言编写,基本流程如下:主程序开始后进行各个模块初始化,启动定时器0和定时器1分别用作PWM 发生器和响铃时间控制器,而后18B20开始检测系统环境温度,液晶显示函数输出当前的系统温度,接着键盘扫描函数开始扫描键盘,判断是否有按键按下,并且判断提高设定温度还是降低设定温度,响铃控制函数判断温度是否已达到设定温度,当达到时开启蜂鸣器响铃2S,PID控制器通过18B20的返回值和设定值相比较,通过改变PWM的占空比来改变输出量的大小。
灯柱显示当前的PWM波的占空比。
(1)定时器0中断程序在定时器0中断程序中加入控制PWM占空比的计数变量,当这个变量值在1至71,在PID控制函数中只要改变这个变量的值就可以改变输出PWM的占空比。
变量取1时占空比最小,此时输出功率最小,当变量取70时占空比最大,此时的输出功率最大。
(2)蜂鸣器响铃程序如果响铃程序仅仅简单的判断是否达到设定温度响铃的话,铃声可能就会响很长时间,这是我们不愿看到的情况,因此响铃程序是这样实现的:通过响铃标志位flag的作用,只有温度从低温到达高温的时候系统才会响铃。
(3)灯柱控制函数灯柱所显示的就是当前PWM的占空比,当占空比越高的时候灯柱上的灯亮的越多,为实现这个功能我们采用了多分枝判断函数,具体流程如下:(4)PID控制程序PID及Pvar、Ivar、Dvar(比例、积分、微分),通过PID控制器来控制的灯泡的发热量,测温系统的返回值作为PID控制函数的输入值,经过函数的处理得到相应的控制量,具体函数处理过程为,由测温系统的返回值Temperature,和设定温度Set的差值计算出误差量Error,Error*Kp得出比例项输出量PID1,积分项变量Integral=∑Error,从而得出积分项输出量PID2=Integral*Ti,对本系统实验证明,单用PI控制已经满足要求,因此我们没有再加入微分项。
系统调试与校准(1)18B20校准因为18B20是存在误差,因此需要与标准温度计做矫正。
第一次测量数据:测量误差曲线:较正后测量数据:18B20(℃)T1 温度计温度(℃)T2 误差(℃)T2-T130.15 30 -0.15031.11 31 -0.11032.1 32 -0.10033.12 33 -0.12034.07 34 -0.07034.98 35 0.02036.01 36 -0.01037.15 37 -0.15038.13 38 -0.13039.02 39 -0.02040.08 40 -0.080(2)误差产生原因1、本系统中误差,一部分来自18B20的设计误差,18B20的理论设计上的误差曲线如下:我们的系统工作在30~40℃之间,理论典型误差基本应在±0.2℃。