Protues PID调节学习记录

本文详细探讨了在51单片机控制电机中,通过调整PID调节中的比例(P)、积分(I)和微分(D)系数,对电机速度稳定性及响应曲线的影响。Kp影响较大,Ki在0.5~0.7范围内有助于稳定,而Kd影响相对较小。实验证明了PID参数选择的重要性及其对系统性能的实际影响。
摘要由CSDN通过智能技术生成

a.确定比例增益P
确定比例增益P 时,首先去掉PID的积分项和微分项,一般是令Ti=0、Td=0,PID为纯比例调节。输入设定为系统允许的最大值的60%-70%,由0逐渐加大比例增益P,直至系统出现振荡;再反过来,从此时的比例增益P逐渐减小,直至系统振荡消失,记录此时的比例增益P,设定PID的比例增益P为当前值的60%~70%。比例增益P调试完成。
b.确定积分时间常数Ti
比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。
c.确定积分时间常数Td
积分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。

前言

  采用51单片机控制电机运转,本文主要是记录下PID调节过程中Kp、Ki、Kd参数对于波形的影响。本文仅仅是个人在学习过程中的记录,结果可能与实际不符,欢迎指正。
在这里插入图片描述

一、只有Kp调节,Ki=0,Kd=0.

确定比例系数Kp确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。

unsigned int speed=244; 
unsigned int set=100; //设定速度,  166*60%=99.6 
void pid(unsigned int count) 
{ 
	ek=set-count; //偏差值	
	 Uk=Kp*(ek-ek1);	
	speed=speed+Uk;   //244是中间值  1是-166rpm/min   499是+166rpm/min
}

Kp=0.1; 系统一直无法进入稳态
在这里插入图片描述
Kp=0.5;系统一直无法进入稳态
在这里插入图片描述
Kp=1; 稳态count为40
在这里插入图片描述
Kp=2; 稳态count为57
在这里插入图片描述
Kp=2.5; 稳态count约为57
在这里插入图片描述

Kp=3; 稳态count约为66
在这里插入图片描述
Kp=4; 稳态count约为72
在这里插入图片描述
小结:Kp=2时,系统能进入稳态,且震荡较小。可初步定为2.

二、Kp=2,Kd=0,进行Ki调节

比例增益P确定后,设定一个较大的积分时间常数Ti的初值,然后逐渐减小Ti,直至系统出现振荡,之后在反过来,逐渐加大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。积分时间常数Ti调试完成。

void pid(unsigned int count) 
{ 
	ek=set-count; //偏差值	
	Uk=Kp*(ek-ek1)+Ki*ek;
	speed=speed+Uk;   //244是中间值  1是-166rpm/min   499是+166rpm/min
}

Ki=Kp*T/Ti = 2/Ti ;

Ki = 0.01 ,Ti=200 ,count值为57
在这里插入图片描述
Ki = 0.05 ,Ti=40 ,count值为81
在这里插入图片描述

Ki = 0.1 ,Ti=20 ,count值为91
在这里插入图片描述

Ki = 0.2 ,Ti=10 ,count值为95
在这里插入图片描述
Ki = 0.4 ,Ti=5 ,count值为97
在这里插入图片描述
Ki = 0.5 ,Ti=4 ,count值为98
在这里插入图片描述
Ki = 0.6 ,Ti=3.33 ,count值为98~99
在这里插入图片描述
Ki = 0.7 ,Ti=2.85 ,count值为98~99
在这里插入图片描述

Ki = 0.8 ,Ti=2.5 ,count值为84,积分饱和
在这里插入图片描述
Ki = 0.9,积分饱和

代码加入抗饱和积分

void pid(unsigned int count) 
{ 
	ek=set-count; //偏差值	
	Uk=Kp*(ek-ek1)+Ki*ek;
	speed=speed+Uk;   //244是中间值  1是-166rpm/min   499是+166rpm/min
	
	if(speed>495)speed=495; //最大163r/s 抗积分饱和
	if(speed<244) speed=244; 
}

Ki = 0.8 ,Ti=2.5 ,count值为98~99
在这里插入图片描述
Ki = 1,Ti=0.5 ,count值为98~100
在这里插入图片描述
小结:Ki的数值大概在0.5~0.7,基本设定值set与count差不多

三、Kp=2,Ki=0.7,进行Kd调节

积分时间常数Td一般不用设定,为0即可。若要设定,与确定 P和Ti的方法相同,取不振荡时的30%。

Ki = 0.7 ,count值为98~99
在这里插入图片描述

在这里插入图片描述
函数加入Kd项。增量式PID

void pid(unsigned int count) 
{ 
	ek=set-count; //偏差值	
	Uk=Kp*(ek-ek1)+Ki*ek+Kd*(ek-2*ek1+ek2);
	speed=speed+Uk;   //244是中间值  1是-166rpm/min   499是+166rpm/min
	
	if(speed>495)speed=495; //最大163r/s 抗积分饱和
	if(speed<244) speed=244; 
}

下图是加了Kd项的波形。按理说Kd=0,波形应该一直。可以发现波形与未加Kd项的不一样,这可能是51单片机处理速度问题,导致加了Kd项处理变慢,导致采集的点变少,所以波形看起来更好一些。

Ki = 0.7,Kd = 0。
在这里插入图片描述

Ki = 0.7,Kd = 0.5
在这里插入图片描述

Ki = 0.7,Kd = 1
在这里插入图片描述

Ki = 0.7,Kd = 1.5

在这里插入图片描述

Ki = 0.7,Kd = 2
在这里插入图片描述
小结:从波形看,Kd项的影响并不大,仿真的波形也只能得到一个参考的数值,具体还是要以实际调试出来的为准。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值