步进电机S型曲线plc控制步进电机加减速的实现

日期:2023-02-11 14:07:35浏览量:94411

plc控制步进电机加减速

之前做电机相关的plc控制步进电机加减速项目比较少,最近有个项目涉及到步进电机的精确控制,参考了一些资料研究了一下S型曲线加减速,这里总结一下plc控制步进电机加减速分享给大家。

硬件是:STM32+驱动器+步进电机。

STM32定时器输出PWM,控制驱动器来驱动步进电机。单片机只要控制电机方向,以及PWM的频率即可,具体驱动由驱动器实现。

首先说一下什么是S型曲线加速,为什么要S型曲线加速。

S型曲线加速是指步进电机的启动速度按照S型曲线逐渐增加,以达到设定的最大速度。具体的S型曲线方程如下:

x取值-5~5的曲线图如下:

可以看到,刚开始加速和达到最大速度时加速比较缓慢,中间加速比较快。

电机的转矩和转速的乘积的k倍等于功率,也就是说,功率一定的时候,转速与转矩成反比关系。所以,转速越低,转矩越大。当电机直接高速启动时,电机可能存在震动、丢步甚至启动不起来的情况。因此需要S型曲线加速,使电机能够缓慢启动。

plc控制步进电机加减速程序实现

plc控制步进电机加减速

控制电机的速度,其实就是控制PWM的输出频率。首先需要对S曲线方程进行一些变化,如下:

Fcurrent = Fmin + (Fmax-Fmin)/(1+exp( -Flexible(i - num )/num) )

Fcurrent为计算出的当前频率。

Fmin为加速的起始频率。

Fmax为加速的最大频率。

-Flexible*(i - num)/num是对S型曲线进行拉伸变化,其中Flexible代表S曲线区间(越大代表压缩的最厉害,中间加速度越大;越小越接近匀加速。理想的S曲线的取值为4-6)。

i是在循环计算过程中的索引,从0开始。

num为 加速脉冲数/2 大小。

TIM2_CLOCK_FREQ为定时器的计数频率。

之后要做的就是在加减速过程中,每输出一个PWM脉冲,重新装载一次定时器周期。具体怎样输出指定个数PWM来控制步进电机,可参考之前的文章《STM32定时器产生指定个数脉冲》。

在PWM中断中,将计算好的S曲线数组,重新装载到定时器的ARR和CCR寄存器中即可。

plc控制步进电机加减速