我们先来看一个最典型的反馈系统
是不是非常熟悉,好像控制器天生就有能力链接我们的物理世界,轻而易举的改变物理对象。
但是仔细看,说破天,这个算法也就是一堆数学公式,输入的是数字,输出的也是数字,它怎么就能改变物理量呢?
控制器输出如何连接物理世界?
正如我们所想,几个数字不应该,也不能够直接改变物理量,真正能改变物理量的是执行器。
所以更真实的控制图应该是这样的。
我们应该感谢现在的执行器做的足够好,他们通常都有自己的驱动器,我们只需要通过输出一些简单的电平信号,驱动器就会帮助我们控制执行器。
典型的执行器就是电机,电机的驱动器,例如电调,通常都是用PWM信号就可以控制。
我们现在用的算法,最终都是写在一个单片机里的,所以严格来说我们使用的是数字PID算法,算法本身的确只能输出一些数字,但是单边机对于产生电平信号,却是非常擅长,简单的设置一下寄存器,真的只需要一个数字就可以产生你想要的PWM信号了。
举个例子:有一个电机,他的手册上写着,400HZ频率的PWM信号下,100%占空比为1000转每分钟,0%占空比为0转每分钟。
这时候你根据你设计好的控制器框图,用你的期望转速,例如500,与实际转速,例如0,做差,误差500通过PID后可以得到一个控制器输出,例如90,然后把90给单片机的寄存器,它自动的就产生了一个占空比为90%的PWM信号。这个信号传递给驱动器的时候,电机飕~的一声转了起来,物理世界真的因为你发生了一些改变。
控制器输如何利用误差
那在这个过程中PID的作用是什么呢?为甚么不能直接用误差作为输出,产生PWM呢?
最简单的思路其实就是只用误差来产生PWM,也就是利用当前的误差(比例),这个很容易理解,如果当前我们误差很大,我们自然就希望执行器能输出最大值尽快缩小这个误差。
但是误差还有其他信息我们可以用,例如过去的误差(积分),如果如果过去我们的误差一直很大,是不是代表我们一直都处于离目标很远的地方