劉錦杭
(惠州城市職業(yè)學院 機電學院,廣東 惠州 516025)
步進電機的加減速控制一直是影響電機運行的重要因素,突變的加減速會導致電機失步,造成位置與精度誤差,因此必須有合理的加減速控制來保證電機能夠平穩(wěn)順暢地運行。電機的運行是一個“加速-恒速-減速-停止”的過程,在此過程中,當控制系統(tǒng)極限啟動頻率大于電機所需運行速度時,電機可以直接啟動;當控制系統(tǒng)通過停止發(fā)送驅(qū)動脈沖或讓使能離線時電機停機。若在電機啟動時,直接以正常運行速度啟動,容易導致電機失步或無法啟動。為了避免此情況,電機啟動后需要有一個均勻加速的過程來慢慢達到要求的運行速度。另一方面,由于慣性的存在,電機停止容易沖過設(shè)定的目標位置,造成位置偏離,正常的電機停止應(yīng)該使啟動速度等于或略高于減速過程結(jié)束時的速度,經(jīng)低速運行若干步后停止。為保證步進電機運行的穩(wěn)定、平滑,本文從電機的加減速控制算法入手,通過改善S型加減速算法來實現(xiàn)電機的穩(wěn)定運行,并通過MCU控制器對運行過程進行仿真,以驗證改善后的S型加減速算法的可行性。
目前對電機加減速的控制主要有T型加減速算法和S型加減速算法,如圖1、圖2所示。圖2中,c為加加速度,是一常數(shù);0~t1時間段為加加速階段,速度由起始速度增加到中間速度v1,加速度a逐步增加;t1~t2時間段為減加速階段,速度由v1上升到運行速度vt,此時間段內(nèi)加速度a減小到零,加加速度為負值;t2~t3時間段為均速運行階段;t3~t4、t4~t5分別為加減速階段和減減速階段,與加速曲線對稱,兩時間段內(nèi)加速度a為負值。對比兩種控制方式在啟動瞬間、加速結(jié)束、開始減速、減速完成四個節(jié)點的情況,T型加減速算法在加減速過程中角加速度突變不連續(xù),導致角速度ω不能平滑過渡,而S型加減速算法在加減速階段與勻速階段都是連續(xù)的,且加速度的變化率是可控的,這有利于電機控制性能的提高。但是相對來說,T型加減速算法容易實現(xiàn),而S型加減速法算法比較復雜。
圖1 T型加減速算法曲線
圖2 S型加減速算法曲線
基于對兩種算法的分析,S型加減速算法有利于提高步進電機的運動穩(wěn)定性,避免機器運動時造成的柔性沖擊,本文對S型加減速算法進行研究。S型曲線來源于Sigmoid函數(shù),是一個在生物學中常見的S型函數(shù),其定義為:
(1)
曲線方程(1)將橫坐標的任一實數(shù)映射在(0,1],如圖3所示,曲線平滑,能夠引入作為電機的加減速曲線。
圖3 Sigmoid函數(shù)曲線
由圖3曲線可見,式(1)的曲線方程在x軸上有負值,因此不能直接用于步進電機的加減速控制,對方程(1)進行拉伸和平移,以適應(yīng)電機加減速曲線的實際需要,變換后方程如下:
(2)
其中:A、B分別為y方向平移和拉伸分量;a、b分別為x方向平移和拉伸分量。
對比式(2)與式(1),y方向進行A分量的平移和B分量的拉伸,A、B分量可用于控制電機速度或頻率的取值范圍;x軸方向進行a分量平移與b分量拉伸,a分量與b分量用于控制電機速度或頻率變化率。變換后的曲線依然是理論上的曲線,需要對曲線進行離散化使其能夠適用于電機的加減速控制。離散即把曲線離散成各個頻率段,在程序中保存時間點和與其對應(yīng)的頻率,并形成表格,在系統(tǒng)運行時根據(jù)已有表格中的頻率值依次進行加載生成實際的脈沖曲線,使脈沖曲線與理論曲線相擬合,加速階段的曲線離散后如圖4所示。圖4中,t1為中間速度(拐點速度)時刻,即電機在此時間前為加加速階段,在此之后為減加速階段;t2為電機加速完成進入均速運行時刻;t′為離散實現(xiàn)過程中將加速時間平均分成若干個固定長度的時間段。由于頻率與速度之間只相差一個脈沖當量并且成正比關(guān)系,因此曲線算法也適用于速度。
圖4 加速階段的曲線離散
離散化后,加速過程曲線方程為:
F=Fmin+(Fmax-Fmin)/(1+e-f(i-m)/m).
(3)
其中:F為加速曲線當前頻率;Fmin為加速曲線起始頻率;Fmax為加速曲線目標頻率;i為循環(huán)計算索引,從0開始到選取的加減速點總數(shù);f為曲線的斜率,f越大曲線越陡峭;m為1/2加減速點總數(shù)。
對應(yīng)式(2),離散后相當于A分量=Fmin,B分量=Fmax-Fmin,a分量=f/m,b分量=f。
變量f取值的大小決定著S曲線壓縮的程度,理想的S曲線f取值為4~6。設(shè)電機起始速度=20 r/min,電機最大速度=200 r/min,設(shè)f=4、f=5、f=6,求得三個f對應(yīng)的速度曲線,如圖5所示。
圖5 三個f對應(yīng)的速度曲線
從圖5可以看出,在三個曲線中,遵循f越大曲線相對越陡峭,f越小曲線相對平穩(wěn),越接近勻加速的軌跡。由此可知,控制f的取值可以使得步進電機加減速時速度平滑地過渡。S型加減速算法原理設(shè)計曲線核心代碼如下:
void CalculateSModelAccelLine(u16 usArrPerd[], float usLinePoint,float fMaxFreq,float fMinFreq,float fAccelRatio)
{
int i;
float freqTmp;
float deno;
float melo;
float delt=fMaxFreq-fMinFreq;
for(i=0;i { melo=fAccelRatio*(i-usLinePoint/2)/(usLinePoint/2);deno=1.0/(1+expf(-melo)); freqTmp=delt*deno+fMinFreq; usArrPerd[i]=(u16)(1000000.0/freqTmp); } } 應(yīng)用STM32F103VCT6單片機來控制步進電機,以STM32F103VCT6的高級定時器產(chǎn)生PWM信號驅(qū)動電機,步進電機所需的驅(qū)動芯片選用東芝公司的TB6560,并將驅(qū)動電路設(shè)計到控制器內(nèi)部??刂葡到y(tǒng)以定時中斷加PWM的方式發(fā)送指定脈沖數(shù),控制PWM輸出引腳的電平即可控制脈沖數(shù)。PWM的輸出由定時中斷捕捉,一個脈沖需經(jīng)兩次定時器中斷才能產(chǎn)生,由此可得到ARR(定時器裝載值),計算方法如下: (4) 其中:fclk為定時器的時鐘頻率;fTarget為脈沖目標頻率。 設(shè)定步進電機起始頻率Fmin為1 000 Hz,最大頻率Fmax為10 000 Hz,加加速度c為100 000脈沖/S3,采用Keil軟件通過調(diào)試微控制器讀取內(nèi)存值,由內(nèi)存值繪制頻率與時間關(guān)系曲線,如圖6所示。由圖6可見,頻率與時間關(guān)系曲線符合S型加減速特性,在加減速過程中能夠平滑過渡。 圖6 頻率與時間關(guān)系曲線 在實際應(yīng)用中對步進電機的控制一般有停機、加速、運行和減速4種狀態(tài),這4種狀態(tài)對應(yīng)了S型加減速曲線的整個過程,步進電機控制狀態(tài)機如圖7所示。 圖7 步進電機控制狀態(tài)機 根據(jù)電機控制的4個狀態(tài)設(shè)計出控制代碼,步進電機狀態(tài)機核心代碼如下: void MotorControl(void) { switch (g_stStepMotor.m_ucMotorState) { case MOTOR_STOP://停機狀態(tài)處理 break; case MOTOR_ACCEL://加速狀態(tài)處理 if (usAccelPulseNum { //加速點數(shù)未到,繼續(xù)設(shè)定PWM頻率 TIM3->ARR=(ucSpeedAccel[usAccelPulseNum]>>1); usAccelPulseNum++;// } if(usAccelPulseNum>=ACCEL_POINT_NUM) { //達到設(shè)定的加速點數(shù),將電機狀態(tài)切換至運行狀態(tài) TIM3->ARR=(ucSpeedAccel[ACCEL_POINT_NUM-1]>>1); g_stStepMotor.m_ucMotorState=MOTOR_RUN; } break; case MOTOR_RUN://運行狀態(tài)處理 break; case MOTOR_DECEL://減速狀態(tài)處理 if (usDecelPulseNum>0) { //減速點數(shù)未到,繼續(xù)設(shè)定PWM頻率 TIM3->ARR=(ucSpeedDecel[usDecelPulseNum]>>1); usDecelPulseNum--; } if (usDecelPulseNum<=0) { //達到設(shè)定的減速點數(shù),停機處理 usDecelPulseNum=0; usAccelPulseNum=0;//清零相關(guān)數(shù)據(jù) MOTOR_SET_TQ2; MOTOR_SET_TQ1;//釋放電機力矩 MOTOR_DISABLE;//步進電機脫機控制 TIM_Cmd(TIM3,DISABLE);//失能PWM定時器 g_stStepMotor.m_ucMotorState=MOTOR_STOP;//切換至停機 } break; } } 研究了將S曲線引入步進電機的加減速控制中,通過對S曲線進行轉(zhuǎn)換與離散,得出了可運用于實際電機加減速控制的方程,針對離散后的方程給出了S型加減速核心代碼,并進行了仿真實驗。仿真實驗結(jié)果表明:步進電機按照改善后的S型曲線法進行加減速,整個運行過程較為平穩(wěn),沒有產(chǎn)生沖擊和跳變。3 單片機控制步進電機速度實驗
3.1 脈沖頻率輸出
3.2 實驗仿真
3.3 步進電機控制狀態(tài)機
4 結(jié)語