一个简单利用PID调节的控温程序

一个简单利用PID调节的控温程序

pid的参考文档:

PID算法原理 一图看懂PID的三个参数

这是我们学校的的课程设计,为了让我们学到跟多的东西,所以做的系统硬件都不是最简的。
这是整个的系统框图
控温部分的电路,看懂这个图就知道为什么DAC输出128的时候不升温也不降温看了。128对应的八位二进制送给D0~D7对应的Vout输出电压为0V,所以不升温也不降温。

这里我使用了PI调节,实验证明PI也就够了,通过测试,只通过PI调节温度的过冲会有点大,但是也能基本满足要求,要求较高的可以再把微分量加上。

初始化PID参数:

void Init_PID(void)
{
	P_t=98;
	I_t=0.022;
	DAC=128;       //初始化DAC的值,128表示不升温也不降温
	DAC_f=128;   //初始化通过PID调节后的DAC输出
	set_t = 25;           //把初始温度设置成25度
}

控制函数:

void control_t(void)                     //控制温度-10V降温 0000 0000   +10V升温1111 1111  0~255  不升不降 128
{
	if(num[0]==10||num[1]==10)
	{
		DAC=128;
	}
	else
	{
		for(i=0;i<time;i++)
		{	
	        (float)cha = set_t - t_measure;
	        time_f = time_f + cha*0.005;            //对时间积分
			DAC_f= 128 + P_t*cha*0.05 + I_t*time_f;
			
			if( DAC_f >255)
			{
				DAC_f=255;
			}
		    if( DAC_f <=0 )
			{
				DAC_f=0;
			}	
			DAC = DAC_f;			
		}	 

	}
}

初学者可能写的比较粗糙后期闲下来了会慢慢修改此文章。
欢迎大家指正,有更好的算法欢迎大家交流学习,嘿嘿。

完整代码和硬件接线图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值