您的当前位置:首页正文

温度控制实习

来源:九壹网


温度控制实习报告

姓 名: 葛峰铭 组 员: 李浩铭 学 院: 自动化 班 级: 231131 专业: 自动化 指导老师: 金星

2016年8月

1

一、温度控制实习概述

1.1 温度控制实习的目的

在现代化的工业生产中,电流,电压,温度,压力等都是常用的主要被控参数。温度作为一个基本物理量,与人们的生产生活密切相关。在现代化的工业生产过程中,温度作为一种常用的主要被控参数,在很多生产过程中我们需要对温度参数进行检测,温度控制调节也被广泛的应用在冶金行业,化工行业,机械制造和食品加工等多种领域。

温度控自动控制系统实验也是综合应用控制理论、单片机原理及接口技术、电机拖动、微机接口技术、自动控制系统等课程知识的重要实践环节。其目的在于通过试验来验证和研究控制理论(温度检测控制),增强感性认识, 以促进认识的深化,培养学生科学的分析能力,使学生掌握一般运动控制和温度控制的操作方法和基本技能。 1.2 温度控制实习主要内容

此次采用的 WK-2 温度控制仪是一个闭环反馈控制系统, 由主控芯片直接读取温度传感器测得的温度值后直接与当前温度的设定值进行比较。根据 PID 计算的结果得到控制信号控制双向可控硅光耦进而控制电热杯的通电和断电操作。 1.3 PID算法介绍

根据偏差的比例(P)、积分(I)、微分(D)进行控制简单PID控制。PID控制是控

制系统中应用最为广泛的一种控制规律,由比例单元P、积分单元I和微分单元D

组成。PID控制的基础是比例控制,积分控制可消除稳态误差,但可能增加超调,微分控制可加快大惯性系统响应速度以及减弱超调趋势。

它由于用途广泛、使用灵活,已有系列化产品,使用中只需设定三个参数(Kp,Ti和Td)即可。在很多情况下,并不一定需要全部三个单元,可以取其中的一到两个单元,但比例控制单元是必不可少的。

首先,PID应用范围广。虽然很多工业过程是非线性或时变的,但通过对其简化可以变成基本线性和动态特性不随时间变化的系统,这样PID就可控制了。 其次,PID参数较易整定。也就是,PID参数Kp,Ti和Td可以根据过程的动态特性及时整定。如果过程的动态特性变化,例如可能由负载的变化引起系统动态特性变化,PID参数就可以重新整定。

第三,PID控制器在实践中也不断的得到改进PID在控制非线性、时变、耦合及参数和结构不确定的复杂过程时,工作得不是太好。最重要的是,如果PID控制器不能控制复杂过程,无论怎么调参数都没用。虽然有这些缺点,但简单的PID控制器有时却是最好的控制器。

2

1.4 温度控制实习预期结果

完成最高温度(60-70度)的稳定性实验,计算超调量和稳态误差;自己设定升温曲线,升温速率可以为0.5-3度/分钟,可以分阶段升温,如把30-70度的升温过程分成3个阶段,30-40,40-50, 50-70,且在每个阶段有温度保持时间,如3分钟或更长;编制信号采样程序,转换显示以及在数码管上时钟显示(秒表)。达到设定温度稳定后加入扰动,控制加热算法,使其快速达到温度设定值。

二、温度控制实习硬件介绍

2.1 温度检测单元

由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

图温度采集电路

2.2 温度控制单元

利用合理的算法,对于不同的采集数据进行分析,处理。通过单片机的P1.4和P1.3口发脉冲经过一个或非门来控制可控硅BCR12AM的导通角(脉冲宽度的调节),进而对水加热,以达到预期的温度。考虑到强点的干扰,这里,可控硅BCR12AM控制的前级采用具有光电隔离且具有自同步功能的可控硅控制器件MOC3401来对可控硅进行控制。

光耦的接口电路:为了供电方便,本装置采用的是可控硅型光耦。其输出端有220V,380V的交流电压。由于有些光耦的导通电流较小,因此要适当的加上限流电阻以及起分流作用的电阻。有时为了防止高频干扰对于光耦输入端的影响,可以在输入两端加一个滤波电容(C1)。

3

图 电热杯温度控制电路接口电路

可控硅是一种大功半导体器件,可以分为单相可控硅和双向可控硅。在微机控制中可以作为大功率驱动器件,具有用较小的功率控制大功率,开关无触点等的特点,在交流,直流电机调速,随动系统中都有广泛的作用,本装置中使用的是双向可控硅。 2.3 显示电路单元

由8位LED数码显示管,74LS138译码器和74LS373数据锁存器组成。可用于显示被测量的温度值和升温时间等值,显示的内容可由软件设定。显示电路如下图所示,该电路属于动态显示,利用74LS138译码器实现位选,P0口的输出通过锁存器实现段选。可以根据这硬件接口电路实现要求的数据的动态显示。

4

2.4 串口通信单元

MAX232是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2个驱动器、2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。

三、实验程序及实验结果分析 3.1温度采集模块

温度采集:由温度采集程序将采集的温度数字量通过数组返回到主函数,得到的数字量乘以0.0625才是实际的温度,所以有以下数据转换函数:

void covert1(void) //将温度转换为数码管显示的数据 {

;

t[1]<<=4; //将高字节左移4位

t[1]=t[1]&0x70; //取出高字节的3个有效数字位

x=t[0]; //将t[0]暂存到X,因为取小数部分还要用到它 x>>=4; //右移4位

x=x&0x0f; //和前面两句就是取出t[0]的高四位

t[1]=t[1]|x; //将高低字节的有效值的整数部分拼成一个字节

t[0]=t[0]&0x0f; //取有效的两位小数 t[0]>>=3; //右移两位,以便查表

x=t[0]; t[0]=dotcode[x]; //查表换算成实际的小数 }

转换之后温度实际的值以整数部分存在t[1],小数部分存在t[0]的方式保存并

5

返回主程序。 3.2计时模块

秒表:利用单片机自身的定时器中断功能进行计时,中断周期为10ms,具体函数如下:

void timer0() interrupt 1 using 1 //加热的PWM周期为100*定时器0 {

TH0 =(65536-10000)/256; TL0 =(65536-10000)%256; kk++;

if(kk==100) {kk=0;ge++; }

if(ge==10) {ge=0;shi++ ; }

if(shi==10) {shi=0;bai++ ; if(bai==10) {bai=0;qian++; }

if(qian==10) {qian=9; }

3.3数码管显示

显示部分,硬件部分由38译码器与锁存器实现,通过编程对八段管进行选择显示,部分程序如下: void display(void) {

LE=1;

// P1=7<<5;

P15=1;P16=1;P17=1; //对八段管进行选择 P0=led[TempBuffer1[2]]; //显示 delay(100); P0=0x00;

// P1=6<<5;

P15=0;P16=1;P17=1;

P0=led[TempBuffer1[3]]; delay(100); P0=0x00;

温度显示:温度显示之前要对数据进行每一位分离,分离程序如下: TempBuffer1[1]=t[1]/100; //分离出百位

6

if( TempBuffer1[1]==0) TempBuffer1[1]=0x00; //百位数消隐 TempBuffer1[2]=(t[1]%100)/10; //分离出十位 TempBuffer1[3]=(t[1]%100)%10; //分离出个位 TempBuffer1[4]=t[0]/10; //分离出十分位 TempBuffer1[5]=t[0]%10; //分离出百分位 3.4 PID控制算法

要实现高精度的温度自动控制就必须采用计算机控制系统,它可以实现温度信号的采集、显示及控制等,并可用计算机软件实现升、降温和闭环自动控制。 采样处理程序是该系统的主要部分,主要的任务是:数据的采集;显示温度;控制计算;控制输出。加入扰动后观测系统稳定性。

此次实验的核心内容就是温度控制,我们选择的是比较熟悉的PID控制,算法如下:

if((aa%3)==0) //每三秒扫描一次 { m=0;

dd_error=d_error;

d_error=error;

error = (target-value);//求e(k)/e(k-1//求e(k-2)

det_t=k*(error-d_error)+(k*3/ti)*error+(k*td/3)*(error-2*d_error+dd_error); //增量公式 pwm=det_t;

if((error>10)||(pwm>60))pwm=60; }

PID算法得到的控制量怎么与温度控制联系起来从而达到控制效果是关键一步,将得到的控制量与加热杯的导通时间联系起来,即我们接触到的脉冲占空比,得到的控制量与定时器中断里面的水杯加热程序共同对加热时间进行控制:if(a==100){a=0;aa++; }

if(mif((m>=pwm)||(value>=target)){TA=0;TB=0;} if(m==60)m=0; m++;

接下来就是所有函数的整合了:void main(void) {

int_timer0(); int_timer1(); EA=1;

int_uart();

// uartset();

7

P22=0; P23=0;

P2_7 =0; while(1) {

P2_7 = !P2_7;

EA=0; pt=ReadTemperature(TH,TL,0x7f); //测温函数返回这个数组的头地址

EA=1;

t[0] = *pt;pt++;

t[1] = *pt; //上限温度-22,下限-24,分辨率10位,也就是0.25C

covert1(); display(); cc++; if(cc>100) {

Uart_SendChar(0x5a);

Uart_SendChar(TempBuffer1[2]); Uart_SendChar(TempBuffer1[3]); Uart_SendChar(TempBuffer1[4]); Uart_SendChar(TempBuffer1[5]); cc=0; }

//读取温度,温度值存放在一个两个字节的数组中

if((aa%3)==0) //每三秒扫描一次 { m=0;

dd_error=d_error;

d_error=error;

error = (target-value);//求e(k) //求e(k-1) //求e(k-2)

det_t=k*(error-d_error)+(k*3/ti)*error+(k*td/3)*(error-2*d_error+dd_error); //增量公式 pwm=det_t;

if((error>10)||(pwm>60))pwm=60;

8

3.5实验结果

以上是实验温度曲线图,能非常稳定的维持在70摄氏度,超调温度是2度,应该是比例系数K过大所导致的,事实证明想要达到更好的控制效果仍要经过更加精细的微调。

9

10

因篇幅问题不能全部显示,请点此查看更多更全内容

Top