日期:2023-02-11 14:07:35瀏覽量:94591
之前做電機相關的plc控制步進電機加減速項目比較少,最近有個項目涉及到步進電機的精確控制,參考了一些資料研究了一下S型曲線加減速,這里總結一下plc控制步進電機加減速分享給大家。
硬件是:STM32+驅動器+步進電機。
STM32定時器輸出PWM,控制驅動器來驅動步進電機。單片機只要控制電機方向,以及PWM的頻率即可,具體驅動由驅動器實現。
首先說一下什么是S型曲線加速,為什么要S型曲線加速。
S型曲線加速是指步進電機的啟動速度按照S型曲線逐漸增加,以達到設定的最大速度。具體的S型曲線方程如下:
x取值-5~5的曲線圖如下:
可以看到,剛開始加速和達到最大速度時加速比較緩慢,中間加速比較快。
電機的轉矩和轉速的乘積的k倍等于功率,也就是說,功率一定的時候,轉速與轉矩成反比關系。所以,轉速越低,轉矩越大。當電機直接高速啟動時,電機可能存在震動、丟步甚至啟動不起來的情況。因此需要S型曲線加速,使電機能夠緩慢啟動。
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寄存器中即可。