摘要:
真遗憾,第二篇章没能够发表到首页上去。趁热打铁。把最终篇——代码篇给发上来。代码的设计思想请移步前两篇文章//pid.h#ifndef __PID__#define __PID__/*PID = Uk + KP*[E(k)-E(k-1)]+KI*E(k)+KD*[E(k)-2E(k-1)+E(k-2)];(增量型PID算式)函数入口: RK(设定值),CK(实际值),KP,KI,KD函数出口: U(K)*/typedef struct PIDValue{ int8 KP; int8 KI; int8 KD; int8 F; int8 BITMOV; int EK[3]; int UK; in. 阅读全文
摘要:
上面一篇文章讲了一下PID算法中的三个常量大致的在PID算法中起的一个作用,但在实际的使用中,究竟应该如何调节(或者用更加专业的话说是整定)PID控制算法的三个。首先可以将KP,KI,KD三个常量全部设为一,观察一下系统的调节情况是不是过快。大致确定输出控制量的结果需要右移多少位来做最终的控制量。然后将KI,KD设为0,KP从0一直逐渐增加试探,直到被控制量有一定超调,且有一定的小震荡。此时kp算调节到差不多了。我们可以继续调节Ki,通过增大Ki使被控制量最终平稳下来的值尽可能是我们设定的值。积分量ki的调节与Kp的调节相似,从小到大调整。但要注意ki的增加会使得超调量变大,所以ki增大时kp 阅读全文
摘要:
电赛训练了大半个暑假,人渐渐开始进入到了疲倦期。既然这样那就好好休息下自己也好吧。休息也不能光休息,乘机把平常写过的一些东西好好整理也好。从第一次训练开始我们就接触到了一个新的名词——PID控制理论。接触这个理论时间还是挺早的。大二某天晚上与学长“促膝交谈”时他就有跟我提起过这个算法。当初他给我说的一个应用的场合就是在智能小车两个轮子速度的控制上,通过pid使得两个轮子的速度尽可能接近相等。那个时候就感觉很纠结,速度控制直接左边慢一点就给左边加速,反之给右边加速。但真正当第一个题目(恒温水壶)做出来的时候就发现,如果用传统的方法去做控制(即温度高则不加温,温度低则加温),控制的提升速度与控制值 阅读全文