pid控制入门笔记(1)

PID控制器

最近发现要老师让熟悉一下pid,比赛时候可能用到,然后我就去百科上找到了pid的概念

PID控制器(比例-积分-微分控制器),由比例单元(P)、积分单元(I)和微分单元(D)组成[1]。可以透过调整这三个单元的增益Kp,Ki和Kd来调定其特性。PID控制器主要适用于基本上线性,且动态特性不随时间变化的系统。

PID控制器的方块图
PID控制器是一个在工业控制应用中常见的反馈回路部件。这个控制器把收集到的数据和一个参考值进行比较,然后把这个差别用于计算新的输入值,这个新的输入值的目的是可以让系统的数据达到或者保持在参考值。PID控制器可以根据历史数据和差别的出现率来调整输入值,使系统更加准确而稳定。

PID控制器的比例单元§、积分单元(I)和微分单元(D)分别对应目前误差、过去累计误差及未来误差。若是不知道受控系统的特性,一般认为PID控制器是最适用的控制器[2]。借由调整PID控制器的三个参数,可以调整控制系统,设法满足设计需求。控制器的响应可以用控制器对误差的反应快慢、控制器过冲的程度及系统震荡的程度来表示。不过使用PID控制器不一定保证可达到系统的最佳控制,也不保证系统稳定性。

有些应用只需要PID控制器的部分单元,可以将不需要单元的参数设为零即可。因此PID控制器可以变成PI控制器、PD控制器、P控制器或I控制器。其中又以PI控制器比较常用,因为D控制器对回授噪声十分敏感,而若没有I控制器的话,系统不会回到参考值,会存在一个误差量。
图片: pid控制入门笔记(1)

下面是从github上找的一个实例:

不过时stm32开发板,是用C语言写的:
作为一个入门参考吧
以STM32单片机为控制器,舵机为执行器,摄像头为检测仪表(测量元件)的并基于积分分离算法的板球控制系统,实现对小球在平板上精确定位的控制功能

确定系统方案:
1.确定控制目标,选择被控变量
实现滚球在平板上的定位。被控变量选择滚球在平板上的坐标
2.选择测量参数与测量仪表
测量参数为滚球在平板上的坐标。
测量仪表:选择摄像头
原因:检测成本低,控制质量要求在可接受范围内, 对于平板的长宽,摄像头量程基本满足需要,可靠性较低
检测工作原理:像素获取,(未进行滤波操作)直接二值化,小球轮廓检测,获取小球中心
检测小球位置的算法:
通过遍历,寻找小球的上下左右四个顶点位置,求小球质心位置
检测参数的滤波处理操作:
比赛中,无,直接进行图像二值化处理,图像在获取和传输时容易产生噪声,影响目标特征的准确性,阈值人为选择,容易受到光线的干扰,比赛时使用台灯进行补光操作。应该进行图像处理
测量误差 60cm/320 = 1.8mm 60cm/240 = 2.5mm 题目给出小球圆边界与最大范围圆边界有15mm的允许误差,满足精度要求,对控制要求较高
3.操作变量的选择与主要扰动的分析
操作变量:平板的俯仰角和横滚角。
扰动变量:光源对于平板的漫反射
4.操作变量与被控变量的配对
在本比赛中无需考虑,比较明显能够找到,其他变量对于被控变量的增益都过小
5.控制方案与控制算法的选择
控制方案:最简单的单回路控制 or 串级控制 选择单回路控制
控制算法:积分分离的PID算法
测量值与设定值之间的偏差超出某一个阈值,使用PD算法,在阈值范围之内加入积分效果
control value = last controled value + P * error + flag * I * error integral value + d * (now error - last error)
6.执行器的选型
根据操作变量的工艺条件以及对执行器位移特性的要求的选择
选择控制变量与操作变量线性度较好的舵机
驱动舵机功率放大电路:

7.控制系统的现场安装、调试
检查和调整个控制仪表和设备的工作状况。
执行器是舵机的时候工作在合理电压下才会满足线性特性
控制器参数整定过程:临界振荡法

控制算法:
摄像头检测:小球运动检测及处理
舵机驱动电路:
测试方法:
测试结果分析:

遇到的情况及解决方法:

1.常规PID 控制系统长时间震荡?
大幅度提降设定值,解决方法是积分分离算法,

2.存在外部扰动,尤其是外部光源
使用可调节亮度的台灯进行补光,并且将平台通过
显示屏显示出来

3.摄像头无法完整覆盖整个平板
通过适当的太高摄像头,牺牲一部分小球位置精确度。

4.舵机无法准确驱动,控制变量与操作变量不成线性关系
测量电池电压,发现电压过低,更换电池

5.摄像头采样率(帧数) 测量滞后现象
实际效果还可以,30帧的采样率
滞后会影响系统稳定性,系统相位裕度会减小

6.物理元件的死区和饱和的现象怎么解决,运动范围
通过限幅

7.被控对象是一个非线性系统,你是如何控制的
通过反馈,可以将被控对象视作黑箱,非线性系统可以使用PID去控制被控对象

8.调试PID 参数问题,系统一直得不到临界震荡的效果或者震荡不明显?
使用的临界比例度法,他适用于系统时间常数较小的情况。 时间常数较大下,纯比例作用下会很稳定
改进:增长执行器舵机的舵臂,提升广义对象系统的响应性能,
临界比例度法:先去掉积分和微分部分,将P值逐渐增大到系统临界震荡,然后加入积分,对P适当缩小
转自:
https://github.com/xiaohongxiao/ball_rolling_control_system
1Z实验室

pid控制入门笔记(1)
这个网址上由一些关于pid和图形识别的教程:
今天就到这了,未完待续…