使用單片機做步進電機控制的時候,經(jīng)常碰到一些非常傷腦筋的問題,一是寫步進電機控制時許確實很麻煩,正轉(zhuǎn)反轉(zhuǎn),加速減速,得研究很長時間數(shù)學(xué)公式,特別是S加減速運動;二是單片機的計算速度不行,要求脈沖速度快的話,加減速需要計算變化的脈沖頻率,計算不過來,特別是兩個或多個電機要聯(lián)動控制或者插補基本上就不行了,兩個電機運動會出現(xiàn)明顯的偏差。
所以能不能有其他簡單快速的方案了?
經(jīng)過很長時間研究后,我發(fā)現(xiàn)常規(guī)的運動控制完全可以使用單片機+一個專用運動控制芯片HMC80xx來實現(xiàn),這樣的話,復(fù)雜的加減速控制程序,多個步進高精度聯(lián)動都由專用運動芯片來完成,單片機只需要通過通信接口寫入控制命令就可以了。
話不多說,我們來看看具體的實現(xiàn)方案:
由上述的系統(tǒng)框圖和單片機與運動控制專用芯片接線圖可以看出,使用一個stm32或者C51等單片機+運動芯片控制步進或伺服電機,只要使用單片機的IO口連接運動芯片的總線,然后通過IO寫入指令就可以。芯片本身提供了單片機可以直接調(diào)用的API函數(shù),實現(xiàn)基本的定長加減速運動,多軸直線插補,圓弧插補運動的函數(shù),單片機程序只要按說明直接調(diào)用函數(shù),指定參數(shù)值就可以了。
比如定長加減速運動控制函數(shù):
q 定長運動 功能:指定一個運動軸及曲線類型、運動方向、脈沖輸出模式、初始速度、運行速度、定長運動距離、開始減速位置、加速時間、減速時間,以初始速度開始加速,在指定的加速時間到時加速到運行速度恒速運行,直到脈沖輸出個數(shù)大于等于減速位置設(shè)定的個數(shù)時,開始減速,在指定的減速時間到達時減速到初始速度,并在完成運動距離時停止,如果SD減速開關(guān)從OFF->ON 轉(zhuǎn)換并且沒有到達設(shè)定的減速位置,并且SD_EN使能,將立即開始減速,然后以低速運行完成運動距離后停止。 函數(shù):int DeltMov(int dev,unsigned int Axs,unsigned intcurve,unsigned int Dir,unsigned char Outmod,unsigned int Vo,unsigned intVt,unsigned int Length,unsigned int StartDec,unsigned long Acctime,unsignedlong Dectime,unsigned int SD_EN,unsigned int WaitSYNC);
|