天天看点

直流电机开发笔记3—PI调节器的数字实现(代码/仿真)

1.PID的基本理论

PID是自动控制中常采用的调节器,通过对目标值与实际值的差值(也可称为误差)进行比例( P )、积分( I )、微分( D )运算的结果作为执行对象的输入,从而改变执行对象的输出,最终使得输出(实际值)与目标值相同,最终完成控制,模拟PID可以抽象为下图。其中:

1.TargeValue:由用户设定的目标值

2.FdbkValue:系统实际值(通常使用传感器测量)

3.Err=TargetValue-FdbkValue:误差

4.SysOut:系统输出,通常将该值直接作为反馈值

直流电机开发笔记3—PI调节器的数字实现(代码/仿真)

由上图可以看出,PID的输出由比例,积分,微分求和可得,与其对应的方程为:

直流电机开发笔记3—PI调节器的数字实现(代码/仿真)

式中:Kp—比例系数,Ki—积分系数,Kd—微分系数,PID的参数整定,就是调整这三个参数。

2.PID的离散化

现代电子系统通常都由微控制器为核心,因而需要将模拟PID进行数字化以便于软件实现,积分的本质是求和(累加),微分的本质是求差,因而,可将PID公式离散化为:

直流电机开发笔记3—PI调节器的数字实现(代码/仿真)

式中,Err(n)表示当前误差,Err(n-1)表示上一次误差。注意:这里的Kp,Ki,Kd和模拟PID方程里的意义有所区别。

3. PID的软件实现

在数字化PID方程的基础上,本小节完成其软件编写,打开笔记2中建立的编码器测试工程,添加pid.c/.h文件,加入下图所示代码,说明:由于下一小节要采用软件仿真,所以,main.c中用宏定义方式模拟了一个实际系统,该系统输出是输入的10倍。

直流电机开发笔记3—PI调节器的数字实现(代码/仿真)
直流电机开发笔记3—PI调节器的数字实现(代码/仿真)
直流电机开发笔记3—PI调节器的数字实现(代码/仿真)

4.PID的仿真实现

本小节将对PID算法进行仿真,利用KEIL软件仿真的方式观察PID调节波形,首先在keil中进行如下配置并进入debug,如下图

直流电机开发笔记3—PI调节器的数字实现(代码/仿真)

全速运行,最终PID波形及结果如下图

直流电机开发笔记3—PI调节器的数字实现(代码/仿真)

继续阅读