温控PID

最近刚玩了下pid

PID大家都知道,无非是比例,积分和微分
比例:是对当前误差的处理
积分:是对过去误差的处理
微分:是对未来预期的误差处理

PID的算法一般是位置式PID和增量型PID。
位置式PID的话一般用于绝对位置式的,例如水位的高低,。
增量型PID一般用于瞬态的,例如速度方面的。

温控PID的一般采用位置型PID,
其公式为

Sum_I+=err*I
out=err*P + Sum_I + (err-errLast)*D

芯片选择为STM32F103,主频为72M,使用PWM调节占空比,最大输出值3600为最大输出。

/**
  * @brief  PID算法实现
  * @param  actual_val:实际值
  *	@note 	无
  * @retval 通过PID计算后的输出
  */
uint32_t PID_realize(int16_t actual_val,PID_T* pid)
{


	/*计算实际值与目标值的误差*/
	pid->err =actual_val- pid->target_val;
	
	DATA=pid->err - pid->err_last;                 // 计算两次控温时温度偏差
    
    pid->err_last = pid->err;
	
	TdControlPar(pid);
	
	/*  误差传递  */
	pid->err_last = pid->err;

//	if (abs(pid->err)<=500)//控温区域
	if (abs(pid->err)<=200)//控温区域
	{
	  pid->integral += pid->err*pid->Ki;  //积分累加
		
	  if(pid->integral>(MAX_PWMOUT*DIVISION))    //积分最大限制
      {
        pid->integral = MAX_PWMOUT*DIVISION;
      }
      else if(pid->integral<(-MAX_PWMOUT*DIVISION)) //积分最小限制
      {
        pid->integral = -MAX_PWMOUT*DIVISION;
      }

     // pid->output_val=(pid->err*MAX_PWMOUT/pid->Kp)+(pid->integral/120)+pid->BIOS; 
	  KP_SUM = (pid->err*MAX_PWMOUT/pid->Kp);
	  KI_SUM = (pid->integral/DIVISION);
//	  KD_SUM = DATA*pid->Kd;
//      pid->output_val= KP_SUM+KI_SUM+ KD_SUM+pid->BIOS;  
	   pid->output_val= KP_SUM+KI_SUM+pid->BIOS;  
	}
	else  //不在控温区域
	{
		pid->integral = 0; //积分清0
		
		if(pid->err>0)  //实际值比目标值温度高
		{
//			pid->output_val=MAX_PWMOUT/2;
			pid->output_val=MAX_PWMOUT;
		}
		else            //实际值比目标值温度低
		{
			pid->output_val =-MAX_PWMOUT;
		}
	}
	
	/*返回当前输出值*/
	return pid->output_val;
}

/**
  * @brief  加热制冷控温处理
  * @param  targetTemp : 设置的目标值温度*100
  * @retval li_actualTemp : 读取到的实际温感值*100
  *	@note 	none
  */
int16_t SetTempPID(int16_t targetTemp,PID_T* pid,int16_t actualTemp)
{
	int16_t    li_actualTemp;
	int16_t    li_PWMOut;
	
	pid->target_val=targetTemp;  //目标值
	
	/* 读取实际温度值 */
	li_actualTemp=actualTemp;

	
	/* 进行 pid 运算 */
	li_PWMOut=PID_realize(li_actualTemp,pid);
	
	if(li_PWMOut>=MAX_PWMOUT)   //PWM输出最大值限制
	{
		li_PWMOut=MAX_PWMOUT;
	}
	else if(li_PWMOut<=-MAX_PWMOUT) //PWM输出最小值限制
	{
		li_PWMOut=0-MAX_PWMOUT;
	}
	
	if(li_PWMOut>0) //需要降温
	{
		li_PWMOut=abs(li_PWMOut);
		li_PWMOut =MAX_PWMOUT- li_PWMOut;
		 gi_PWMOutPut= li_PWMOut;
        TEC_Control(TEC_DirCool,li_PWMOut);
	}
	else //需要升温  
	{
		li_PWMOut=abs(li_PWMOut);
		li_PWMOut = MAX_PWMOUT- li_PWMOut;
		gi_PWMOutPut= li_PWMOut;
		TEC_Control(TEC_DirHeat,li_PWMOut);
	}
	return   li_actualTemp;
}

在pid温控中,设置温控范围大小,此范围外则全功率输出,达到温控区间,按照pid计算输出
积分用来消除静差,做了限制积分饱和的处理。
通过pid的输出值,来判断TEC的方向。若output>0,则温控方向是降温。output<0,则温控方向是升温。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MATLAB是一种广泛使用的科学计算和数值分析软件,它可以用于各种工程和科学应用。在控制系统中,PID控制器是一个通常被用于控制系统稳定性的工具。我们可以使用MATLAB软件来实现一个简单的温度控制系统,并使用PID控制器来控制系统的稳定性,确保温度保持在设定值范围内。PID控制器通常由三个部分组成:比例控制器、积分控制器和微分控制器。 首先,我们需要使用MATLAB来获取传感器数据并显示当前温度值。我们可以使用一些基本的MATLAB命令来连接传感器,并使用plot函数将数据呈现为图表形式。然后我们需要编写PID算法来生成适当的控制信号。我们将使用比例控制器来确定系统响应的大小,积分控制器来补偿系统的静态误差,并微分器来平滑系统响应。我们需要测试PID控制器的参数,并对参数进行调整,以使其达到所需的稳定性水平。使用MATLAB的PIDetector工具箱可以帮助我们更容易地完成这项任务。 最后,我们需要使用PID控制器生成适当的控制信号,并将其传输到系统操作变量中。例如,我们可以使用PID控制器来控制系统的加热元件以调节温度。通过连续测试和调整PID控制器的参数,我们可以确保系统的响应恰当并在设定值范围内。总之,使用MATLAB实现温度控制PID可以帮助我们更有效地实现控制系统的稳定性,并确保系统在所需温度范围内工作。 ### 回答2: MATLAB 是一款非常优秀的软件,用于科学计算和数据分析,也是温度控制 PID 的常用工具之一。PID 是控制系统中的重要控制环节,也是目前最为广泛应用的一种控制方式。 PID 的三个参数 Kp、Ki 和 Kd 是温度控制成功的关键,它们分别代表比例增益、积分时间常数和微分时间常数。在 MATLAB 中,可以通过多种方式进行设置和调整,例如使用 PID 工具箱或编写代码进行设置和优化。 MATLAB 提供了很多实用的函数和工具,如稳态误差计算、频率响应分析等,对于温度控制 PID 的设计和实现非常方便。在温度控制时,可以使用 MATLAB 进行温度信号的采集和处理,通过 PID 控制算法进行实时的温度控制,从而实现高精度的温度控制。 总之,MATLAB 是温度控制 PID 的重要工具,能够帮助设计和实现高效、精确的控制系统。在工业化生产中,温度控制非常重要,MATLAB 的应用将能大大提升生产效率和产品质量。 ### 回答3: MATLAB 温度控制 PID 是一种利用 MATLAB 软件实现温度控制的方法,其中 PID 是一种常见的控制算法。它通过比较实际温度与目标温度之间的差异来生成控制信号,以调整控制系统的输出以达到稳定的温度控制。PID 控制器通常由 P、I 和 D 三个部分组成。其中 P 代表比例控制器,通过比较目标温度和实际温度之间的差异来输出调整控制系统的信号。I 代表积分控制器,它通过将温度误差进行积分来输出调整信号,以增强控制的稳定性。D 代表微分控制器,它通过对温度误差的变化率进行微分来输出调整信号,以进一步提高控制的响应速度。 在 MATLAB 中实现温度控制 PID,首先需要建立数学模型,确定需要控制的物理量、控制目标和相关参数。接着,根据已知的控制参数,创建一个 PID 控制器对象。然后,通过传入温度数据,该控制器对象会自动计算出需要调整的控制信号,并将其输出到控制系统中。最后,通过不断地对模型进行调整和测试,可以优化控制器的性能以实现更加准确和稳定的温度控制。 总之,MATLAB 温度控制 PID 是一种通过 MATLAB 软件实现的温度控制方法,它可以通过比例、积分、微分等算法生成控制信号来调整控制系统的输出,以达到稳定和准确的温度控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值