使用單片機(jī)做步進(jìn)電機(jī)控制的時(shí)候,經(jīng)常碰到一些非常傷腦筋的問題,一是寫步進(jìn)電機(jī)控制時(shí)許確實(shí)很麻煩,正轉(zhuǎn)反轉(zhuǎn),加速減速,得研究很長(zhǎng)時(shí)間數(shù)學(xué)公式,特別是S加減速運(yùn)動(dòng);二是單片機(jī)的計(jì)算速度不行,要求脈沖速度快的話,加減速需要計(jì)算變化的脈沖頻率,計(jì)算不過來,特別是兩個(gè)或多個(gè)電機(jī)要聯(lián)動(dòng)控制或者插補(bǔ)基本上就不行了,兩個(gè)電機(jī)運(yùn)動(dòng)會(huì)出現(xiàn)明顯的偏差。
所以能不能有其他簡(jiǎn)單快速的方案了?
經(jīng)過很長(zhǎng)時(shí)間研究后,我發(fā)現(xiàn)常規(guī)的運(yùn)動(dòng)控制完全可以使用單片機(jī)+一個(gè)專用運(yùn)動(dòng)控制芯片HMC80xx來實(shí)現(xiàn),這樣的話,復(fù)雜的加減速控制程序,多個(gè)步進(jìn)高精度聯(lián)動(dòng)都由專用運(yùn)動(dòng)芯片來完成,單片機(jī)只需要通過通信接口寫入控制命令就可以了。
話不多說,我們來看看具體的實(shí)現(xiàn)方案:
O1CN01kxEHhH1TEnoNcsNd1_!!1087172351.png (51.44 KB, 下載次數(shù): 87)
下載附件
2021-3-7 12:13 上傳
O1CN01hneeQ01TEnimt97Co_!!1087172351.jpg (174.16 KB, 下載次數(shù): 62)
下載附件
2021-3-7 12:13 上傳
由上述的系統(tǒng)框圖和單片機(jī)與運(yùn)動(dòng)控制專用芯片接線圖可以看出,使用一個(gè)stm32或者C51等單片機(jī)+運(yùn)動(dòng)芯片控制步進(jìn)或伺服電機(jī),只要使用單片機(jī)的IO口連接運(yùn)動(dòng)芯片的總線,然后通過IO寫入指令就可以。芯片本身提供了單片機(jī)可以直接調(diào)用的API函數(shù),實(shí)現(xiàn)基本的定長(zhǎng)加減速運(yùn)動(dòng),多軸直線插補(bǔ),圓弧插補(bǔ)運(yùn)動(dòng)的函數(shù),單片機(jī)程序只要按說明直接調(diào)用函數(shù),指定參數(shù)值就可以了。
下載.png (30.86 KB, 下載次數(shù): 78)
下載附件
2021-3-7 12:13 上傳
比如定長(zhǎng)加減速運(yùn)動(dòng)控制函數(shù):
q 定長(zhǎng)運(yùn)動(dòng) 功能:指定一個(gè)運(yùn)動(dòng)軸及曲線類型、運(yùn)動(dòng)方向、脈沖輸出模式、初始速度、運(yùn)行速度、定長(zhǎng)運(yùn)動(dòng)距離、開始減速位置、加速時(shí)間、減速時(shí)間,以初始速度開始加速,在指定的加速時(shí)間到時(shí)加速到運(yùn)行速度恒速運(yùn)行,直到脈沖輸出個(gè)數(shù)大于等于減速位置設(shè)定的個(gè)數(shù)時(shí),開始減速,在指定的減速時(shí)間到達(dá)時(shí)減速到初始速度,并在完成運(yùn)動(dòng)距離時(shí)停止,如果SD減速開關(guān)從OFF->ON 轉(zhuǎn)換并且沒有到達(dá)設(shè)定的減速位置,并且SD_EN使能,將立即開始減速,然后以低速運(yùn)行完成運(yùn)動(dòng)距離后停止。 函數(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);
下載 (1).png (87.93 KB, 下載次數(shù): 93)
下載附件
2021-3-7 12:13 上傳
|