温度控制实习(大林算法C语言)

1、实习概述

       温度控制实习是一个用单片机控制温度的系统。首先通过温度传感器DS18B20检测到电热杯内水的温度,然后把温度数据送入单片机进行数据处理,与设定值进行比较,把采集到的温度送到数码显示管上显示,同时,通过调节可控硅导通角来控制电热杯的温度和升温速率,从而达到对电热杯的温度进行控制的目的。

2、实习原理

    (1)通过温度传感器DS18B20检测到电热杯的温度;

    (2)把采集到的温度送到数码显示管上显示;

    (3)通过调节可控硅占空比来控制电热杯的温度和升温速率,从而达到对电热杯的温度进行控制的目的。

3、大林算法

       大林算法是运用于自动控制领域中的一种算法,是一种先设计好闭环系统的响应再反过来综合调节器的方法。设计的数字控制器(算法)使闭环系统的特性为具有时间滞后的一阶惯性环节,且滞后时间与被控对象的滞后时间相同。此算法具有消除余差、对纯滞后有补偿作用等特点。

       本次的温度控制系统可以等价为一阶有迟滞系统,而这种系统的大林算法表达式形式一般一样,只是参数不一样,所以我们可以先假定出系统的表达式,然后进行设计,得到大林算法的一般表达式,然后带入我们的实验系统进行参数整定。

假定温度控制系统传递函数为:

 

首先定义中间变量,然后根据前面计算得到的大林算法公式,用C语言实现,同时还有进行限幅,以免超过PWM的周期。
long DaLin(float mubiao,float shiji)
{
	int b0=0.4,b1=0.2,a0=12,a1=8;
	static float error,last_error;
	static long DaLin_u,last_DaLin_u,last_DaLin_u1,DaLin_result;
	error = mubiao - shiji;
	DaLin_u = b0*last_DaLin_u + b1*last_DaLin_u1 + a0*error+a1*last_error;大林算法表达式
	last_error = error;
	last_DaLin_u1 = last_DaLin_u;
	last_DaLin_u = DaLin_u;
	DaLin_result = DaLin_u;
	if(error>=-0.6&&error<=0.6)				 //开始保温计时
	{
	    if(wendu<=49.5)		flag=1;
	    if(wendu>49.5&&wendu<=59.5)		flag=3;
			if(wendu>59.5)		flag=5;
	}
	if(DaLin_result > 60)	 		//离目标温度太大(实际温度过小)
		DaLin_result = 60;       //限幅
	if(DaLin_result < 0)			//超过目标温度
		DaLin_result = 0;
		DaLin_result=(int)DaLin_result;      //强制转换成整数
	return DaLin_result;
	
}

 

你可能感兴趣的:(c语言,大林算法,温度控制)