本發(fā)明涉及步進(jìn)電機(jī)速度控制
技術(shù)領(lǐng)域:
,尤其涉及一種基于FPGA的步進(jìn)電機(jī)速度控制方法。
背景技術(shù):
:為避免步進(jìn)電機(jī)在轉(zhuǎn)動(dòng)過程中由于慣性作用發(fā)生失步現(xiàn)象,步進(jìn)電機(jī)在開始轉(zhuǎn)動(dòng)時(shí)應(yīng)當(dāng)由低速逐漸加速至高速,在停止轉(zhuǎn)動(dòng)時(shí)應(yīng)當(dāng)逐漸減速停止。采用分支控制結(jié)構(gòu)在FPGA中實(shí)現(xiàn)會(huì)占用較多的硬件資源,使用單一控制結(jié)構(gòu)更加節(jié)省硬件資源,但是,目前現(xiàn)有技術(shù)沒有實(shí)現(xiàn)在FPGA中使用單一控制結(jié)構(gòu)對(duì)步進(jìn)電機(jī)的速度進(jìn)行控制。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于克服現(xiàn)有技術(shù)不足,提供了一種基于FPGA的步進(jìn)電機(jī)速度控制方法,能夠?qū)崿F(xiàn)在FPGA中使用單一控制結(jié)構(gòu)對(duì)步進(jìn)電機(jī)的速度進(jìn)行控制。本發(fā)明的技術(shù)解決方案:一方面,一種基于FPGA的步進(jìn)電機(jī)速度控制方法,包括以下步驟:步驟1、設(shè)定加減速閾值為M,最大步間隔為T1,最小步間隔為T2,實(shí)時(shí)步間隔T=T1,加速減速階段的步間隔之差ΔT=(T1-T2)/M;步驟2、接收目標(biāo)角度值A(chǔ)1;步驟3、計(jì)算目標(biāo)角度值A(chǔ)1與當(dāng)前角度值A(chǔ)0的步差絕對(duì)值X=|A1-A0|;步驟4、當(dāng)步差絕對(duì)值0<X≤M時(shí),進(jìn)入步驟5,當(dāng)步差絕對(duì)值X>M時(shí),進(jìn)入步驟6,當(dāng)X=0時(shí),控制結(jié)束,轉(zhuǎn)動(dòng)停止;步驟5、等待時(shí)間T后發(fā)出一次轉(zhuǎn)動(dòng)控制信號(hào),然后X=X-1,若T<T1, 則T=T+ΔT,若T≥T1,則T=T,進(jìn)入步驟4;步驟6、等待時(shí)間T后發(fā)出一次轉(zhuǎn)動(dòng)控制信號(hào),然后X=X-1,若T>T2,則T=T-ΔT,若T≤T2,則T=T,進(jìn)入步驟4。進(jìn)一步的,當(dāng)轉(zhuǎn)動(dòng)總步數(shù)X大于2M時(shí),步進(jìn)電機(jī)會(huì)由最低速加速轉(zhuǎn)動(dòng)M步后達(dá)到最高速,然后以最高速勻速轉(zhuǎn)動(dòng)X-2M步后開始減速,減速轉(zhuǎn)動(dòng)M步后達(dá)到最低速,然后停止轉(zhuǎn)動(dòng)。進(jìn)一步的,當(dāng)轉(zhuǎn)動(dòng)總步數(shù)X大于M,小于等于2M時(shí),步進(jìn)電機(jī)會(huì)由最低速加速轉(zhuǎn)動(dòng)X-M步后開始減速,減速轉(zhuǎn)動(dòng)X-M步后達(dá)到最低速,然后以最低速勻速轉(zhuǎn)動(dòng)2M-X步后停止轉(zhuǎn)動(dòng)。進(jìn)一步的,當(dāng)轉(zhuǎn)動(dòng)總步數(shù)X小于等于M時(shí),步進(jìn)電機(jī)以最低速勻速轉(zhuǎn)動(dòng)X步后停止轉(zhuǎn)動(dòng)。另一方面,一種用于步進(jìn)電機(jī)速度控制的FPGA控制電路,該電路包含如下功能模塊:差值絕對(duì)值計(jì)算模塊:用于計(jì)算目標(biāo)角度與當(dāng)前角度的步數(shù)差值絕對(duì)值;閾值比較模塊:用于比較當(dāng)前步差與閾值,從而決定加速、減速、保持當(dāng)前速度或停止;步間計(jì)時(shí)模塊:用于根據(jù)步間距計(jì)時(shí)控制電機(jī)轉(zhuǎn)動(dòng)信號(hào)輸出。本發(fā)明實(shí)施例提供的一種基于FPGA的步進(jìn)電機(jī)速度控制方法,采用FPGA對(duì)步進(jìn)電機(jī)進(jìn)行速度控制,使用單一控制結(jié)構(gòu),資源占用量少,而且能夠根據(jù)轉(zhuǎn)動(dòng)步數(shù)的不同改變速度控制策略。附圖說明所包括的附圖用來提供對(duì)本發(fā)明實(shí)施例的進(jìn)一步的理解,其構(gòu)成了說明書的一部分,用于例示本發(fā)明的實(shí)施例,并與文字描述一起來闡釋本發(fā)明的原理。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。圖1為本發(fā)明實(shí)施例提供的一種基于FPGA的步進(jìn)電機(jī)速度控制方法的流程圖;圖2、圖3、圖4為本發(fā)明實(shí)施例中步進(jìn)電機(jī)轉(zhuǎn)動(dòng)步數(shù)不同時(shí)的速度規(guī)劃曲線;圖5為本發(fā)明實(shí)施例中FPGA硬件實(shí)現(xiàn)框圖。具體實(shí)施方式下面將結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)說明。在下面的描述中,出于解釋而非限制性的目的,闡述了具體細(xì)節(jié),以幫助全面地理解本發(fā)明。然而,對(duì)本領(lǐng)域技術(shù)人員來說顯而易見的是,也可以在脫離了這些具體細(xì)節(jié)的其它實(shí)施例中實(shí)踐本發(fā)明。在此需要說明的是,為了避免因不必要的細(xì)節(jié)而模糊了本發(fā)明,在附圖中僅僅示出了與根據(jù)本發(fā)明的方案密切相關(guān)的設(shè)備結(jié)構(gòu)和/或處理步驟,而省略了與本發(fā)明關(guān)系不大的其他細(xì)節(jié)。本發(fā)明實(shí)施例提供一種基于FPGA的步進(jìn)電機(jī)速度控制方法,如圖1所示,包括以下步驟:101、設(shè)定加減速閾值為M,最大步間隔為T1,最小步間隔為T2,實(shí)時(shí)步間隔T=T1,加速減速階段的步間隔之差ΔT=(T1-T2)/M;102、接收目標(biāo)角度值A(chǔ)1;103、計(jì)算目標(biāo)角度值A(chǔ)1與當(dāng)前角度值A(chǔ)0的步差絕對(duì)值X=|A1-A0|;104、判斷當(dāng)步差絕對(duì)值與M關(guān)系,當(dāng)步差絕對(duì)值0<X≤M時(shí),進(jìn)入步驟105,當(dāng)步差絕對(duì)值X>M時(shí),進(jìn)入步驟106,當(dāng)X=0時(shí),控制結(jié)束,轉(zhuǎn)動(dòng)停止;105、等待時(shí)間T后發(fā)出一次轉(zhuǎn)動(dòng)控制信號(hào),然后X=X-1,若T<T1,則 T=T+ΔT,若T≥T1,則T=T,進(jìn)入步驟104;106、等待時(shí)間T后發(fā)出一次轉(zhuǎn)動(dòng)控制信號(hào),然后X=X-1,若T>T2,則T=T-ΔT,若T≤T2,則T=T,進(jìn)入步驟104。進(jìn)一步的,如圖2、所示,當(dāng)轉(zhuǎn)動(dòng)總步數(shù)X大于2M時(shí),步進(jìn)電機(jī)會(huì)由最低速加速轉(zhuǎn)動(dòng)M步后達(dá)到最高速,然后以最高速勻速轉(zhuǎn)動(dòng)X-2M步后開始減速,減速轉(zhuǎn)動(dòng)M步后達(dá)到最低速,然后停止轉(zhuǎn)動(dòng)。進(jìn)一步的,如圖3所示,當(dāng)轉(zhuǎn)動(dòng)總步數(shù)X大于M,小于等于2M時(shí),步進(jìn)電機(jī)會(huì)由最低速加速轉(zhuǎn)動(dòng)X-M步后開始減速,減速轉(zhuǎn)動(dòng)X-M步后達(dá)到最低速,然后以最低速勻速轉(zhuǎn)動(dòng)2M-X步后停止轉(zhuǎn)動(dòng)。進(jìn)一步的,如圖4所示、當(dāng)轉(zhuǎn)動(dòng)總步數(shù)X小于等于M時(shí),步進(jìn)電機(jī)以最低速勻速轉(zhuǎn)動(dòng)X步后停止轉(zhuǎn)動(dòng)。本發(fā)明實(shí)施例提供的一種基于FPGA的步進(jìn)電機(jī)速度控制方法,采用FPGA對(duì)步進(jìn)電機(jī)進(jìn)行速度控制,使用單一控制結(jié)構(gòu),資源占用量少,而且能夠根據(jù)轉(zhuǎn)動(dòng)步數(shù)的不同改變速度控制策略。為了實(shí)現(xiàn)上述方法,本發(fā)明實(shí)施例提供一種用于步進(jìn)電機(jī)速度控制的FPGA控制電路,如圖5所示,該電路包含如下功能模塊:差值絕對(duì)值計(jì)算模塊:用于計(jì)算目標(biāo)角度與當(dāng)前角度的步數(shù)差值絕對(duì)值;閾值比較模塊:用于比較當(dāng)前步差與閾值,從而決定加速、減速、保持當(dāng)前速度或停止;步間計(jì)時(shí)模塊:用于根據(jù)步間距計(jì)時(shí)控制電機(jī)轉(zhuǎn)動(dòng)信號(hào)輸出。例如,設(shè)置加減速閾值M=4步,最大步差為T1=32us,最小步差T2=16us,當(dāng)轉(zhuǎn)動(dòng)10步時(shí),電機(jī)加減速情況如下:當(dāng)轉(zhuǎn)動(dòng)8步時(shí),電機(jī)加減速情況如下:步計(jì)數(shù)876543步間隔32us28us24us20us16us20us24us步計(jì)數(shù)210步間隔28us32us當(dāng)轉(zhuǎn)動(dòng)7步時(shí),電機(jī)加減速情況如下:步計(jì)數(shù)765432步間隔32us28us24us20us24us28us32us步計(jì)數(shù)10步間隔32us當(dāng)轉(zhuǎn)動(dòng)4步時(shí),電機(jī)加減速情況如下:步計(jì)數(shù)43210步間隔32us32us32us32us32us如上針對(duì)一種實(shí)施例描述和/或示出的特征可以以相同或類似的方式在一個(gè)或更多個(gè)其它實(shí)施例中使用,和/或與其它實(shí)施例中的特征相結(jié)合或替代其它實(shí) 施例中的特征使用。應(yīng)該強(qiáng)調(diào),術(shù)語“包括/包含”在本文使用時(shí)指特征、整件、步驟或組件的存在,但并不排除一個(gè)或更多個(gè)其它特征、整件、步驟、組件或其組合的存在或附加。這些實(shí)施例的許多特征和優(yōu)點(diǎn)根據(jù)該詳細(xì)描述是清楚的,因此所附權(quán)利要求旨在覆蓋這些實(shí)施例的落入其真實(shí)精神和范圍內(nèi)的所有這些特征和優(yōu)點(diǎn)。此外,由于本領(lǐng)域的技術(shù)人員容易想到很多修改和改變,因此不是要將本發(fā)明的實(shí)施例限于所例示和描述的精確結(jié)構(gòu)和操作,而是可以涵蓋落入其范圍內(nèi)的所有合適修改和等同物。本發(fā)明未詳細(xì)說明部分為本領(lǐng)域技術(shù)人員公知技術(shù)。當(dāng)前第1頁1 2 3