理论分析
位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。
理论分析
根据位置式离散 PID 公式:
其中,
- :本次偏差;
- :上一次的偏差;
- :以及之前的偏差的累积和,k 为 1、2、3...;
- :输出
控制流程图
位置环控制原理图如下图所示。其中需要说明的是,我们这边是通过微机实现 PID 控制的,所以下面的 位置式 PID 控制器是一个软件实现的过程,比如在我们的代码里就是一个我们定义的函数。
C 语言实现
位置环 PID 控制 C 语言实现的代码如下:
int Position_PID(int Encoder,int Target)
{
static float Bias,Pwm,Integral_bias,Last_Bias;
Bias=Encoder-Target; //计算偏差
Integral-bisa+=Bias; //求出偏差的积分
Pwm=Position|_Kp*Bias+Position_Ki*Integral_bias+Position_Kd*(Bias-Last_Bias);
Last_Bias=Bias; //保存上一次偏差
return Pwm; //输出
}
第一行是相关内部变量的定义。 第二行是求出速度偏差,由测量值减去目标值。 第三行通过累加求出偏差的积分。 第四行使用位置式 PID 控制器求出电机 PWM。 第五行保存上一次偏差,便于下次调用。 最后一行是返回。 然后,在定时中断服务函数里面调用该函数实现我们的控制目标: Moto=Position_PID(Encoder,Target_Position); Set_Pwm(Moto); *//===赋值给 PWM 寄存器
参数整定
首先我们需要明确我们的控制目标,也就是满足控制系统的 3 个要求:
- 稳定性
- 快速性
- 准确性
具体的评估指标有最大超调量、上升时间、静差等。
最大超调量是响应曲线的最大峰值与稳态值的差,是评估系统稳定性的一个重要指标;上升时间是指响应曲线从原始工作状态出发,第一次到达输出稳态值所需的时间,是评估系统快速性的一个重要指标;静差是被控量的稳定值与给定值之差,一般用于衡量系统的准确性,具体可以参考图 2 的解析。