本文以带霍尔效应传感器120°电度角的直流无刷电机为例,介绍了直流无刷电机驱动器速度闭环PID运算方法的设计。
提到闭环运算,就一定会想到输入和输出,也可以理解成反馈和给定,那么速度闭环PID运算,其反馈也就是输入是电机当前的转速,给定也就是输出则是当前转速与目标转速经过一系列的比较后得出来的参考值。所以要设计速度闭环PID运算,就必须要先得到电机的转速。
电机的转速可以通过霍尔效应传感器测得,由于电机的特性和霍尔效应,当电机转子在旋转的过程中,会引起霍尔效应传感器换向,转子在不同的位置,其影响霍尔传感器的状态也不一样,因此根据不同的霍尔序列则可以判断出当前转子的位置,如果MCU连续采样的时间间隔固定,且足够快,那么在连续采样的过程中则可以推算出电机转子的转速。比如,MC-FBLD-6600直流无刷电机驱动器采样频率为n次/秒,直流无刷电机为k对极,在连续采样m次时,霍尔效应传感器序列发生变换,则此时测得电机的转速为(rpm):
V = (n / m) * 10 / k 公式(1)
得出电机的实时转速后,即完成了速度闭环PID设计的重要一步。接下来需要对此速度进行去噪,滤波处理,滤波的过程方法很多,本文不做介绍。
接下来就是利用得到的实时转速与目标转速做进行比较。设目标转速为GoalV,实时转速为CurrentV,一次比较值为ditE0,上一次比较值为ditE1,上两次比较值为ditE2,当前此输出为outU,上一次输出为uK,则先假设ditE1为零,ditE2为零,uK为零。ditE0 等于GoalV与CurrentV的差值,输入适当的P,I,D参数以后,代入到公式2中:
outU = uK + KP * (ditE0 - ditE1) + KI * ditE0 + KD * (ditE0 - 2ditE1 + ditE2) 公式(2)
经过计算得到outU,然后将ditE2等于ditE1,ditE1等于ditE0;uk等于outU,再次代入到公式2中,进行迭代运算,重复上述过程,反复运算,最终得出实时输出值,即给定。
最后将得到的给定值,转换成控制电机的PWM占空比,经过设定适当的KP,KI,KD参数,反复计算,最终得到与目标速度相适应的速度输出。
关键词:直流无刷电机驱动器,PID闭环运算,MC-FBLD-6600
本文以带霍尔效应传感器120°电度角的直流无刷电机为例,介绍了直流无刷电机驱动器速度闭环PID运算方法的设计。
提到闭环运算,就一定会想到输入和输出,也可以理解成反馈和给定,那么速度闭环PID运算,其反馈也就是输入是电机当前的转速,给定也就是输出则是当前转速与目标转速经过一系列的比较后得出来的参考值。所以要设计速度闭环PID运算,就必须要先得到电机的转速。
电机的转速可以通过霍尔效应传感器测得,由于电机的特性和霍尔效应,当电机转子在旋转的过程中,会引起霍尔效应传感器换向,转子在不同的位置,其影响霍尔传感器的状态也不一样,因此根据不同的霍尔序列则可以判断出当前转子的位置,如果MCU连续采样的时间间隔固定,且足够快,那么在连续采样的过程中则可以推算出电机转子的转速。比如,MC-FBLD-6600直流无刷电机驱动器采样频率为n次/秒,直流无刷电机为k对极,在连续采样m次时,霍尔效应传感器序列发生变换,则此时测得电机的转速为(rpm):
V = (n / m) * 10 / k 公式(1)
得出电机的实时转速后,即完成了速度闭环PID设计的重要一步。接下来需要对此速度进行去噪,滤波处理,滤波的过程方法很多,本文不做介绍。
接下来就是利用得到的实时转速与目标转速做进行比较。设目标转速为GoalV,实时转速为CurrentV,一次比较值为ditE0,上一次比较值为ditE1,上两次比较值为ditE2,当前此输出为outU,上一次输出为uK,则先假设ditE1为零,ditE2为零,uK为零。ditE0 等于GoalV与CurrentV的差值,输入适当的P,I,D参数以后,代入到公式2中:
outU = uK + KP * (ditE0 - ditE1) + KI * ditE0 + KD * (ditE0 - 2ditE1 + ditE2) 公式(2)
经过计算得到outU,然后将ditE2等于ditE1,ditE1等于ditE0;uk等于outU,再次代入到公式2中,进行迭代运算,重复上述过程,反复运算,最终得出实时输出值,即给定。
最后将得到的给定值,转换成控制电机的PWM占空比,经过设定适当的KP,KI,KD参数,反复计算,最终得到与目标速度相适应的速度输出。
关键词:直流无刷电机驱动器,PID闭环运算,MC-FBLD-6600