所谓PID指的是Proportion-Integral-Differential。翻译成中文是比例-积分-微分。


记住两句话:

1、PID是经典控制(使用年代久远) 2、PID是误差控制()

对直流电机速度进行定速控制:

1、L293作为电机驱动;2、光电传感器-作为输出反馈;3、PWM做为输入控制。 PID怎么对误差控制,听我细细道来:

所谓“误差”就是命令与输出的差值。比如你希望控制转速为4转/s(PWM波占空比=80%),而事实上控制转速只有3.5转/s,则误差: e=0.5转,如果实际转速为4.5转,则误差e=-0.5转(注意正负号)。

该误差值送到PID控制器,作为PID控制器的输入。PID控制器的输出为:误差乘比例系数Kp+Ki*误差积分+Kd*误差微分。

Kp*e + Ki*∫edt + Kd*(de/dt) (式中的t为时间,即对时间积分、微分) 上式为三项求和(希望你能看懂),PID结果后送入电机驱动器。 从上式看出,如果没有误差,即e=0,则Kp*e=0;Kd*(de/dt)=0;而Ki*∫edt 不一定为0。三项之和不一定为0。

总之,如果“误差”存在,PID就会对电机驱动作调整,直到误差=0。 评价一个控制系统是否优越,有三个指标:快、稳、准。

所谓快,就是要使压力能快速地达到“命令值”(不知道你的系统要求多少时间) 所谓稳,就是要压力稳定不波动或波动量小(不知道你的系统允许多大波动) 所谓准,就是要求“命令值”与“输出值”之间的误差e小(不知道你的系统允许多大误差)

对于你的系统来说,要求“快”的话,可以增大Kp、Ki值 要求“准”的话,可以增大Ki值

要求“稳”的话,可以增大Kd值,可以减少压力波动 仔细分析可以得知:这三个指标是相互矛盾的。 如果太“快”,可能导致不“稳”; 如果太“稳”,可能导致不“快”;

只要系统稳定且存在积分Ki,该系统在静态是没有误差的(会存在动态误差); 所谓动态误差,指当“命令值”不为恒值时,“输出值”跟不上“命令值”而存在的误差。不管是谁设计的、再好的系统都存在动态误差,动态误差体现的是系统的跟踪特性,比如说,有的音响功放对高频声音不敏感,就说明功放跟踪性能不好。 调整PID参数有两种方法:1、仿真法;2、“试凑法” 仿真法我想你是不会的,介绍一下“试凑法” “试凑法”设置PID参数的建议步骤:

1、把Ki与Kd设为0,不要积分与微分;

2、把Kp值从0开始慢慢增大,观察压力的反应速度是否在你的要求内; 3、当压力的反应速度达到你的要求,停止增大Kp值; 4、在该Kp值的基础上减少10%; 5、把Ki值从0开始慢慢增大;

6、当压力开始波动,停止增大Ki值;

7、在该Ki值的基础上减少10%;

8、把Kd值从0开始慢慢增大,观察压力的反应速度是否在你的要求内

最新文章

  1. NSArray
  2. EntityFrameWork使用过程问题总结
  3. MATLAB cell & struct
  4. Arduino101学习笔记(七)—— 时间API
  5. zlib快速编译脚本
  6. 教你看懂网上流传的60行JavaScript代码俄罗斯方块游戏
  7. DIV设置了固定宽高出现文字(文本)的不能自动换行
  8. 关于安卓应用(APK文件)的二次打包
  9. appium windows 命令行中运行以及targetSdkVersionFromManifest failed的解决
  10. CODEVS 1066/洛谷 P1514引水入城
  11. JSP:JAVA Bean在JSP中的运用
  12. jsScript中的一些操作方法
  13. KMP算法学习(详解)
  14. 22 python 初学(类,面向对象)
  15. .NET使用gRPC
  16. 【转】python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)
  17. EF code first Mysql 更换主键类型
  18. 交换机的默认网关(跨网段telnet)
  19. python学习之老男孩python全栈第九期_day011知识点总结
  20. IntelliJ IDEA快捷键:Shift+Esc

热门文章

  1. 伸缩布局 Flex
  2. [bzoj3420]Poi2013 Triumphal arch_树形dp_二分
  3. LocalDate LocalTime LocalDateTime Instant的操作与使用
  4. 树莓派上跑.NET的segment fault错误
  5. Ctex ERROR Reading
  6. 剑指offer33:求按从小到大的顺序的第N个丑数。
  7. PAT(B) 1033 旧键盘打字(C) 字符
  8. git出现Invalid path
  9. ASP.NET Core依赖注入多个服务实现类
  10. springMVC关于异常优先级的处理