为什么PID的输出值能作为PWM的输入值?

对于为什么为什么PID的输出值能作为PWM的输入值,这个问题困惑了我很久,终于找到了答案,保证解决初学者的疑惑。

我要讲解的是速度环PID,控制电机速度。

首先大部分人的疑惑应该是PID的输出值和PWM的输入之间应该有一定的线性关系,认为应该将   PID的输出值 *  这个线性关系    之后的值赋给PWM。在这里我要说的是我们不需要在乎这个线性关系。

举个错误例子,假设PWM周期给的是7200(为计数器的值),我们暂且先不用编码器测速,我们模拟一个速度值让它中断里加加,当>我们设定的速度值时,让它等于我们设定的理想速度。例如设定速度1000(单位先不要在乎),我们模拟的速度由0开始++,当达到稳定时,速度PID的输出值为1000,如果这个时候把它设置成PWM,很多朋友就疑惑了,那么这个时候占空比应该是1000/7200这么小的占空比肯定达不到1000这样的速度啊,关键就在这里。大家要知道我们设置的这个速度模拟值是在中断里加加的,是不受PWM控制的。但是我们编码器所测的速度是受到PWM控制的。那么接下来,我们将我们模拟的速度值替换为编码器测速。在这个时候输出1000/7200的占空比很明显不满足1000的速度,在这个时候重新产生误差,继续PID计算,PWM继续增大,知道编码器输出速度等于我们设定的速度为止,如果给的这个速度过大,那么电机就以100%的占空比,全速转动。对于刚开始说的那个线性问题在PID运算中,算法自动解决。

ok ,如果大家把我这篇文章读完,你绝对搞定这个难题。

你可能感兴趣的:(c语言,算法,嵌入式实时数据库)