日期:2023-02-11 14:07:35瀏覽量:94595
之前做電機(jī)相關(guān)的plc控制步進(jìn)電機(jī)加減速項(xiàng)目比較少,最近有個(gè)項(xiàng)目涉及到步進(jìn)電機(jī)的精確控制,參考了一些資料研究了一下S型曲線加減速,這里總結(jié)一下plc控制步進(jìn)電機(jī)加減速分享給大家。
硬件是:STM32+驅(qū)動(dòng)器+步進(jìn)電機(jī)。
STM32定時(shí)器輸出PWM,控制驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)。單片機(jī)只要控制電機(jī)方向,以及PWM的頻率即可,具體驅(qū)動(dòng)由驅(qū)動(dòng)器實(shí)現(xiàn)。
首先說(shuō)一下什么是S型曲線加速,為什么要S型曲線加速。
S型曲線加速是指步進(jìn)電機(jī)的啟動(dòng)速度按照S型曲線逐漸增加,以達(dá)到設(shè)定的最大速度。具體的S型曲線方程如下:
x取值-5~5的曲線圖如下:
可以看到,剛開始加速和達(dá)到最大速度時(shí)加速比較緩慢,中間加速比較快。
電機(jī)的轉(zhuǎn)矩和轉(zhuǎn)速的乘積的k倍等于功率,也就是說(shuō),功率一定的時(shí)候,轉(zhuǎn)速與轉(zhuǎn)矩成反比關(guān)系。所以,轉(zhuǎn)速越低,轉(zhuǎn)矩越大。當(dāng)電機(jī)直接高速啟動(dòng)時(shí),電機(jī)可能存在震動(dòng)、丟步甚至啟動(dòng)不起來(lái)的情況。因此需要S型曲線加速,使電機(jī)能夠緩慢啟動(dòng)。
plc控制步進(jìn)電機(jī)加減速程序?qū)崿F(xiàn)
控制電機(jī)的速度,其實(shí)就是控制PWM的輸出頻率。首先需要對(duì)S曲線方程進(jìn)行一些變化,如下:
Fcurrent = Fmin + (Fmax-Fmin)/(1+exp( -Flexible(i - num )/num) )
Fcurrent為計(jì)算出的當(dāng)前頻率。
Fmin為加速的起始頻率。
Fmax為加速的最大頻率。
-Flexible*(i - num)/num是對(duì)S型曲線進(jìn)行拉伸變化,其中Flexible代表S曲線區(qū)間(越大代表壓縮的最厲害,中間加速度越大;越小越接近勻加速。理想的S曲線的取值為4-6)。
i是在循環(huán)計(jì)算過(guò)程中的索引,從0開始。
num為 加速脈沖數(shù)/2 大小。
TIM2_CLOCK_FREQ為定時(shí)器的計(jì)數(shù)頻率。
之后要做的就是在加減速過(guò)程中,每輸出一個(gè)PWM脈沖,重新裝載一次定時(shí)器周期。具體怎樣輸出指定個(gè)數(shù)PWM來(lái)控制步進(jìn)電機(jī),可參考之前的文章《STM32定時(shí)器產(chǎn)生指定個(gè)數(shù)脈沖》。
在PWM中斷中,將計(jì)算好的S曲線數(shù)組,重新裝載到定時(shí)器的ARR和CCR寄存器中即可。