温度控制系统设计报告——完整
- 格式:docx
- 大小:211.41 KB
- 文档页数:15
温度控制系统设计方案
梅欢杰 AP0904227
谭兆聪 AP0904228
王耿禄 AP0904229
设计要求:
1、大体要求
①容器内环境温度设定范围:,最小区分度为1℃;
②当容器内环境温度降低时(例如用电扇降温),温度控制的静态误差≤1℃;
③显示容器内环境的实际温度。
2、发挥部份
①采用适当的控制方式,当设定容器内环境温度突变(由30℃提高到50℃)时,减小系统的调节时刻和超调量,同时自动打印其温度随时刻转变的曲线;
②温度控制的静态误差≤0.2℃;
③采用发光二极管光柱形式和数码形式显示白炽灯灯壁上的温度;
④其它。
大体设计思路:
由题目要求可知,本系统对温度控制的精度要求比较高,因此考虑利用PID控制来控制系统温度,而热源的控制采用PWM波来进行精准控制。由温度传感器来传回温度数据,由单片机处置数据并发出相应的动作,从而保证温度的恒定。
方案论证:
(1)温度传感器
DS18B20是达拉斯公司生产的数字温度传感器,测温范围在-55℃~+125℃,采用单总线通信微处置器连接时仅需要一条口线即可实现微处置器与DS18B20的双向通信。精度能够达到0.0625℃。
(2)主控芯片
51系列的8位单片机
(3)显示及键盘
LCD1602液晶显示。
89S52单片机 温
度
信
号
采
集
电
路 温度控制驱动电路 电热元件 单片机控制部分供电 加热部分供电
系统设计概要:
(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-一、en-2别离为第n次、n-1次和n-2次的误差值,Kp、Ti、Td别离为比例系数、积分系数和微分系数,T为采样周期。
运算机每隔固按时刻 T将现场温度与用户设定目标温度的差值带入增量式PID算法公式,由公式输出量决定PWM方波的占空比,后续加热电路按照此PWM恒温箱
控制器 热源 18B20 方波的占空比决定加热功率。现场温度与目标温度的误差大则占空比大,加热电路的加热功率大,使温度的实测值与设定值的误差迅速减少;反之,二者的误差小则占空比减小,加热电路加热功率减少,直至目标值与实测值相等,达到自动控制的目的。
硬件设计
一、单片机最小系统单元
主控机系统采用了Atmel 公司生产的 AT89S52单片机,它含有256 字节数据存储器,内置8K 的电可擦除FLASH ROM,可重复编程,大小知足主控机软件系统设计,所以没必要再扩展程序存储器。复位电路和晶振电路是AT89S52 工作所需的最简外围电路。单片机最小系统电路图如下图所示。
单片机最小系统图
AT89S52 的复位端是一个史密特触发输入,高电平有效。RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作。在复位电路中,按一下复位开关就使在RST端出现一段时刻的高电平,外接24M 晶振和两个30pF
电容组成系统的内部时钟电路。
二、18B20温度传感器
美国DALLAS公司的产品可编程单总线数字式温度传感器DS18B20可实现室内温度信号的收集,有很多长处:如直接输出数字信号,故省去了后继的信号放大及模数转换部份,外围电路简单,本钱低;单总线接口,只有一根信号线作为单总线与CPU连接,且每一只都有自己唯一的64位系列号存储在其内部的ROM存储器中,故在一根信号线上能够挂接多个DS18820,便于多点测量且易于扩展。
由图可知,18B20只占用一个IO口,只要将传感器的第二脚接到单片机的口即可向单片机传输数据。
3、键盘显示部份电路
独立按键设计比起中断键盘相对简单很多,因为本系统只有两个按键,及用程序扫描键盘即可,液晶的八个数据口接P0口,三个控制端口R/S、R/W、E别离接、、。
4、PWM驱动电路
驱动部份主要采用IRF540N场效应管,它最大能够通过28A电流,驱动能力相当强悍,由R3的的一端接单片机I/O口,高压部份和低压部份利用用光电耦合器隔离,信号单向传输,输入端与输出端完全实现了电气隔离隔离,输出信号对输入端无影响,抗干扰能力强,工作稳固,无触点,利用寿命长,传输效率高。
五、光柱部份电路
光柱由74HC373来驱动,由于锁存器能够灌输较大的电流,从而能够保证LED灯的亮度,通过LE锁存端得锁存作用,能够避免灯柱因IO口电平快速转变而造成灯柱闪烁。当锁存端LE为高电平时,锁存器直通,灯柱跟从IO口的电平转变,结束后LE变回低电平锁存数据。 软件设计
一、系统主程序
本系统的系统主程序采用C语言编写,大体流程如下:
主程序开始后进行各个模块初始化,启动按时器0和按时器1别离用作PWM发生器和响铃时刻控制器,而后18B20开始检测系统环境温度,液晶显示函数输出当前的系统温度,接着键盘扫描函数开始扫描键盘,判断是不是有按键按下,而且判断提高设定温度仍是降低设定温度,响铃控制函数判断温度是不是已达到检测系统温度
向液晶输出当前温度
键盘扫描
响铃2S 定时器0、1初始化 液晶初始化
是否达到设定温度
PID控制输出量
灯柱控制 Start
END 是否有按键按下 温度设定值步进1 是
否
是
否 设定温度,当达到时开启蜂鸣器响铃2S,PID控制器通过18B20的返回值和设定值相较较,通过改变PWM的占空比来改变输出量的大小。灯柱显示当前的PWM波的占空比。
(1) 按时器0中断程序
(2) 在按时器0中断程序中加入控制PWM占空比的计数变量,当那个变量值在1至71,在PID控制函数中只要改变那个变量的值就可以够改变输出PWM的占空比。变量取1时占空比最小,现在输出功率最小,当变量取70时占空比最大,现在的输出功率最大。
(3) 蜂鸣器响铃程序
(4) 若是响铃程序仅仅简单的判断是不是达到设定温度响铃的话,铃声可能就会响很长时刻,这是咱们不肯看到的情形,因此响铃程序是如此实现的:
(5) 通过响铃标志位flag的作用,只有温度从低温抵达高温的时候系统才会响铃。
(6) 灯柱控制函数
(7) 灯柱所显示的就是当前PWM的占空比,当占空比越高的时候灯柱上的灯亮的越多,为实现那个功能咱们采用了多分枝判断函数,具体流程如下: 响亮标志flag=1
响铃2S 系统温度高于设定温度&&flag==0为真 温度低于设定温度 响铃标志flag=0 是
否
是
否 响铃标志flag=1 (8)
(9) PID控制程序
(10) PID及Pvar、Ivar、Dvar(比例、积分、微分),通过PID控制器来控制的灯泡的发烧量,测温系统的返回值作为PID控制函数的输入值,通过函数的处置取得相应的控制量,具体函数处置进程为,由测温系统的返回值Temperature,和设定温度Set的差值计算出误差量Error,Error*Kp得出比例项输出量PID1,积分项变量Integral=∑Error,从而得出积分项输出量PID2=Integral*Ti,对本系统实验证明,单用PI控制已经知足要求,因此咱们没有再加入微分项。
(11)
系统调试与校准
测试环境温度(℃) 测试仪器 测试仪器量程(℃) 测试仪器分度(℃) 温度计误差(℃)
32 液体酒精温度计 0~100 1 ~
(1)18B20校准
因为18B20是存在误差,因此需要与标准温度计做矫正。
第一次测量数据:
PWM占空比小于25%
是 否
PWM占空比25%~50%
PWM占空比50%~75%
PWM占空比75%~100% 否
否
点亮四个LED点亮两个LED 灯不亮
点亮六个LED 是
是
是 18B20(℃)T1 温度计温度(℃)T2 误差(℃)T2-T1
30
31
32
33
34
35
36
37
38
39
40
第二次测量数据:
18B20(℃)T1 温度计温度(℃)T2 误差(℃)T2-T1
31
32
33
34
35
测量误差曲线: