PID控制应该算是一种非常古老且应用广泛的控制算法,大到热水壶的温度控制,小到无人机的飞行姿态、飞行速度的控制等,在电机控制中,PID算法特别常用。
1. 位置PID
1、计算公式
在电机控制中,我们输出给电机的是一个PWM占空比值。
废话不多说,我们直接上位置式PID的基本公式:
控制流程图如下:
一般情况下,可以对上图中的目标位置进行编程,通过按钮或开关改变目标值。 测量位置是通过stm32采集编码器数据。
目标位置与测量位置之间的差值就是当前系统的偏差。 送至PID控制器进行计算并输出,然后电机驱动器的功率放大控制电机的旋转以减少偏差,最终到达目标位置。
2.C语言实现
如何用C语言写出我们上面的理论分析和控制原理图呢? 这是一个有趣且实用的过程。 位置PID用C语言实现的具体代码如下:
int Position_PID (int Encoder,int Target)
{
static float Bias,Pwm,Integral_bias,Last_Bias;
Bias=Target- Encoder; //计算偏差
Integral_bias+=Bias; //求出偏差的积分
//PID基本公式
Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);
Last_Bias=Bias; //保存上一次偏差
return Pwm; //输出
}
入口参数是编码器的位置测量值和位置控制的目标值,返回值是电机控制PWM(现在看上面的控制框图是不是更容易理解了)。
第一行是相关内部变量的定义。
第二行是找到位置偏差,从测量值中减去目标值。
第三行通过累加求出偏差的积分。
第四行使用位置 PID 控制器来查找电机 PWM。
第五行保存最后的偏差,方便下次调用。
最后一行是返回。
2. 增量式PID
1、计算公式
速度闭环控制是根据单位时间内获得的脉冲数来测量电机的速度信息(这里采用M法测速),与目标值进行比较,得到控制偏差,而然后控制偏差的比例、积分、微分,使偏差趋近于零的过程。
在我们的速度控制闭环系统中,仅采用PI控制,因此可以简化PID控制器
是下面的公式:
控制框图与位置控制框图相同。
上图中的目标速度一般可以通过按钮或开关编程来改变目标值。 测量速度在编码器章节已经提到过,利用单片机定期采集编码器数据并清除。
目标速度与测量速度之间的差值就是当前系统的偏差。 送至PID控制器进行计算并输出,然后电机驱动器的功率放大控制电机的旋转,以减少偏差,最终达到目标速度。
2.C语言实现
如何用C语言写出我们上面的理论分析和控制原理图呢? 这是一个有趣且实用的过程。 位置PID用C语言实现的具体代码如下:
int Incremental_PI (int Encoder,int Target)
{
static float Bias,Pwm,Last_bias;
Bias=Encoder-Target; //计算偏差
//增量式 PI 控制器
Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias;
Last_bias=Bias; //保存上一次偏差
return Pwm; //增量输出
}
入口参数为编码器速度测量值和速度控制目标值,返回值为电机控制PWM。
第一行是相关内部变量的定义。
第二行是找到速度偏差,从测量值中减去目标值。
第三行使用增量 PI 控制器来查找电机 PWM。
第四行保存最后的偏差,方便下次调用。
最后一行是返回。
3. 各参数P、I、D的作用
自动控制系统的性能指标主要包括稳定性、速度、精度三个方面。
稳定性:系统受到外界影响后,如果控制系统使被控变量随时间增长并最终与给定的期望值一致,则称该系统是稳定的,我们一般称之为系统收敛。
如果随着时间的推移,受控变量偏离给定值越来越大,则称系统不稳定,我们通常称之为系统发散。 只有稳定的系统才能完成自动控制的任务。 因此,系统稳定性是保证控制系统正常运行的必要条件。
对于一个稳定的控制系统,被控变量与给定值的初始偏差应随着时间的推移逐渐减小并趋近于零。
快速性:快速性是指系统动态过程所花费的时间长度。 处理时间越短,系统的快速性越好。 处理时间越长,系统响应越慢,难以实现快速变化的指令信号。
稳定性和快速性反映了系统在控制过程中的性能。 系统跟踪过程中,被控变量偏离给定值越小,偏差时间越短,表明系统的动态精度较高。
精度:是指系统动态过程结束后,被控量(或反馈量)与给定值的偏差。 该偏差就是稳态误差。 它是系统稳态精度的指标,反映了动态过程后期性能的提高。
在实际生产工程中,不同的控制系统对控制器效果的要求不同。 例如平衡车、倒立摆等对系统的快速性要求很高。 如果响应太慢,系统就会失去控制。
智能家居中的自动门窗开关系统对速度要求不高,但对稳定性和精度要求较高,因此需要严格控制系统的超调量和静态误差。
原来的: