吳 凡 金建勛 戴志堅(jiān)
摘 要:由于直流電機(jī)具有速度易控制,精度和效率高,能在寬范圍內(nèi)實(shí)現(xiàn)平滑調(diào)速等特點(diǎn)而在冶金、機(jī)械加工制造等行業(yè)中得到廣泛應(yīng)用。該設(shè)計(jì)采用FPGA作為直流電機(jī)的控制器件,負(fù)責(zé)信號(hào)處理,速度快、可靠性高。介紹直流電機(jī)進(jìn)行位置控制的方法,給出位置控制模塊的設(shè)計(jì)和實(shí)現(xiàn),使用VHDL語言進(jìn)行編程完成了FPGA對(duì)直流電機(jī)的各種控制。
關(guān)鍵詞:位置控制;直流電機(jī);FPGA;VHDL
中圖分類號(hào):TP274文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)10-013-03
Application of FPGA in Position Control of Direct Current Motor
WU Fan,JIN Jianxun,DAI Zhijian
(School of Automation Engineering,University of Electronic Science & Technology of China,Chengdu,610054,China)
Abstract: Direct current motor has characters of excellent controlling performance,high precise and great efficiency,smooth timing in wide range,so it′s widely used in metallurgy,enginery and other industry.In this design,FPGA is used as control device of direct current smotor,that charge signal processing.The method of realizing position control of direct current motor by using FPGA is introduced.It describes the design and realization of block of position control of motor and uses VHDL language to program FPGA to complete all kinds of control of direct current motor.
Keywords:position control;direct current motor;FPGA;VHDL
在直流電機(jī)控制系統(tǒng)中,被控制量一般都是電機(jī)的轉(zhuǎn)速,控制的目的是保持電機(jī)的轉(zhuǎn)速在所需要的定值上。但在實(shí)際生產(chǎn)過程中,電機(jī)帶動(dòng)生產(chǎn)機(jī)械或者其他負(fù)載運(yùn)動(dòng)的表現(xiàn)不一定都是轉(zhuǎn)速,也可能是使生產(chǎn)機(jī)械或其機(jī)構(gòu)產(chǎn)生一定的位置變化,這時(shí)需要的控制量就不再是電機(jī)的轉(zhuǎn)速,而是控制對(duì)象的直線位移,因此需將電機(jī)的轉(zhuǎn)速輸出轉(zhuǎn)換為電機(jī)的位移輸出。
1 電機(jī)位置控制模塊的設(shè)計(jì)
1.1 直流電機(jī)位置控制的方法
在此,使用maxon直流電機(jī),通過與其配套的行星齒輪箱和磁編碼器,能夠?qū)崿F(xiàn)從轉(zhuǎn)速到位移的轉(zhuǎn)換。其工作原理如下:電機(jī)轉(zhuǎn)動(dòng)時(shí),編碼器開始輸出反饋脈沖,反饋脈沖的頻率與電機(jī)的轉(zhuǎn)速成正比,最高可達(dá)20 kHz。電機(jī)軸每旋轉(zhuǎn)一圈,編碼器就輸出16個(gè)反饋脈沖,通過計(jì)算得出每個(gè)脈沖代表電機(jī)所帶負(fù)載產(chǎn)生0.006 14 mm的位移。這樣就可以把要控制的位移量用反饋脈沖的個(gè)數(shù)來表示,作為FPGA中位置控制模塊給定值,當(dāng)電機(jī)轉(zhuǎn)動(dòng)時(shí),FPGA中的計(jì)數(shù)器會(huì)把反饋脈沖計(jì)數(shù)并保存,位置控制模塊不斷讀取計(jì)數(shù)器里的計(jì)數(shù)值,并與位置控制模塊中的給定值比較。當(dāng)它們相等的時(shí)候,位置控制模塊發(fā)出停止信號(hào),從而控制電機(jī)剎車。電機(jī)停止運(yùn)動(dòng)后,再讀取計(jì)數(shù)器中的計(jì)數(shù)值,與給定值做比較,計(jì)算出差值。如果差值在控制精度范圍內(nèi),則此次控制結(jié)束;如果不在范圍內(nèi),將差值作為下一次控制的給定值,繼續(xù)控制電機(jī)運(yùn)動(dòng),直至達(dá)到要求的精度范圍為止。
1.2 位置控制模塊的組成
位置控制模塊由3部分組成:比較模塊、驅(qū)動(dòng)模塊和延時(shí)模塊。比較模塊的作用是將編碼器反饋的脈沖個(gè)數(shù)與給定的脈沖個(gè)數(shù)做比較,當(dāng)它們相等時(shí),給出電機(jī)停止信號(hào)。驅(qū)動(dòng)模塊的作用是根據(jù)輸入的控制信號(hào)控制電機(jī)的運(yùn)動(dòng)。延時(shí)模塊的作用是防止丟失反饋脈沖,確保準(zhǔn)確讀回編碼器反饋的脈沖個(gè)數(shù)。接下來將重點(diǎn)介紹各個(gè)模塊的具體實(shí)現(xiàn)。
1.2.1 比較模塊
圖1中,data_in[15..0]為給定的反饋脈沖個(gè)數(shù);EN為電機(jī)工作使能信號(hào);inclk為工作時(shí)鐘;feedback[15..0]為電機(jī)運(yùn)行時(shí)計(jì)數(shù)器的計(jì)數(shù)值;stopinter為電機(jī)停止時(shí)的模塊內(nèi)部傳遞信號(hào);“0”表示無效,“1”表示有效。比較模塊的工作原理如下:
比較模塊在接收到給定值后,也就是根據(jù)要控制的位移量所計(jì)算出的反饋脈沖的個(gè)數(shù),將其鎖存。在工作時(shí)鐘的作用下,模塊會(huì)不斷地檢測(cè)EN信號(hào)是否有效,如果EN信號(hào)有效,模塊將開始讀取反饋計(jì)數(shù)值,并與給定值做比較;如果相等,模塊認(rèn)為電機(jī)所帶負(fù)載的運(yùn)動(dòng)到達(dá)指定位置,這時(shí)輸出的stopinter信號(hào)有效,控制電機(jī)剎車;否則stopinter信號(hào)無效,電機(jī)繼續(xù)運(yùn)動(dòng)。
如圖2所示,假設(shè)給定的計(jì)數(shù)值為7。當(dāng)使能信號(hào)EN有效時(shí),模塊開始讀端口feedback[15..0]中的值(電機(jī)運(yùn)行時(shí)通過磁編碼器反饋回來的脈沖個(gè)數(shù)),與data_in[15..0]中給定的脈沖個(gè)數(shù)做比較。當(dāng)它們相等的時(shí)候,表示電機(jī)所帶的負(fù)載運(yùn)動(dòng)到了指定位置,此時(shí)stopinter信號(hào)有效,開始控制電機(jī)剎車并停止。
1.2.2 驅(qū)動(dòng)模塊
圖3中,derect[1..0]為電機(jī)的控制輸入信號(hào);EN為電機(jī)工作使能信號(hào),“0”表示無效,“1”表示有效;inclk為工作時(shí)鐘;stopinter為電機(jī)停止信號(hào)的模塊內(nèi)部傳遞信號(hào);control_outA,control_outB為控制電機(jī)的輸出信號(hào),這兩個(gè)控制信號(hào)直接連接電機(jī)的驅(qū)動(dòng)芯片。驅(qū)動(dòng)模塊的工作原理如下:
在工作時(shí)鐘的作用下,驅(qū)動(dòng)模塊會(huì)不斷地檢測(cè)EN信號(hào)和stopinter信號(hào)是否有效,如果EN有效,并且stopinter無效的時(shí)候,模塊的輸出control_outA,contorl_outB取決于電機(jī)控制輸入信號(hào)derect[1..0]的狀態(tài),當(dāng)derect[1..0]為“01”時(shí),control_outA輸出為“0”;control_outB輸出為“1”,表示控制電機(jī)反轉(zhuǎn)。當(dāng)derect[1..0]為“10”時(shí),control_outA輸出為“1”;control_outB輸出為“0”,表示控制電機(jī)正轉(zhuǎn)。驅(qū)動(dòng)控制模塊一旦檢測(cè)到stop信號(hào)有效,control_outA和control_outB的輸出都為“0”,表示控制電機(jī)剎車并停止。在EN和stop信號(hào)都無效的時(shí)候,control_outA和control_outB的輸出都為“1”,表示對(duì)電機(jī)不做任何控制。
如圖4所示,當(dāng)EN和stopinter 信號(hào)都為“0”時(shí),模塊的輸出control_outA,contorl_outB都為“1”,對(duì)電機(jī)不做任何控制。當(dāng)EN信號(hào)變?yōu)椤?”時(shí),表示電機(jī)開始運(yùn)動(dòng),模塊的輸出control_outA為“0”,Contorl_outB為“1”,與direction[1..0]中的值“01”相同,此時(shí)電機(jī)反轉(zhuǎn)。當(dāng)stopinter信號(hào)變?yōu)椤?”時(shí),模塊的輸出control_outA為“0”;contorl_outB也為“0”,此時(shí)電機(jī)剎車并停止。當(dāng)EN信號(hào)為“1”,stopinter信號(hào)再次為“0”時(shí),電機(jī)再次開始運(yùn)動(dòng),模塊的輸出control_outA為“1”;contorl_outB為“0”,與direction[1..0]中的值“10”相同,此時(shí)電機(jī)反轉(zhuǎn)。
1.2.3 延時(shí)模塊
圖4中,EN為延時(shí)的使能信號(hào),也就是計(jì)數(shù)比較模塊的輸出信號(hào)stopinter;inclk為工作時(shí)鐘;stop為電機(jī)停止信號(hào)對(duì)外部的輸出信號(hào)。延時(shí)模塊(如圖5所示)的工作原理如下:
當(dāng)延時(shí)模塊檢測(cè)到stopinter信號(hào)為“1”時(shí),模塊內(nèi)的計(jì)數(shù)器開始工作,計(jì)數(shù)器時(shí)鐘即模塊的工作時(shí)鐘10 kHz,當(dāng)記滿300后,模塊輸出信號(hào)為“1”。延時(shí)模塊檢測(cè)到stopinter信號(hào)為“0”時(shí),模塊內(nèi)計(jì)數(shù)器不工作,模塊輸出信號(hào)為“0”。
當(dāng)電機(jī)剎車時(shí),由于存在慣性,電機(jī)不會(huì)立即停止,會(huì)有一段滑行的過程,在這個(gè)過程中,電機(jī)仍然會(huì)通過磁編碼器返回反饋脈沖,只是因?yàn)殡姍C(jī)的轉(zhuǎn)速下降,反饋脈沖的頻率大大降低。當(dāng)stopinter信號(hào)變?yōu)椤?”時(shí),電機(jī)開始剎車,如果此時(shí)立刻讀取feedback[15..0]端口上的反饋脈沖數(shù)值,計(jì)算出電機(jī)所帶負(fù)載的位置,那么必然會(huì)丟失掉滑行過程中的反饋脈沖。這樣就會(huì)導(dǎo)致讀回的反饋脈沖數(shù)與實(shí)際電機(jī)返回的反饋脈沖數(shù)不相等,從而嚴(yán)重地影響控制精度,所以必須在stopinter信號(hào)變?yōu)椤?”后,延長(zhǎng)一段時(shí)間,確保電機(jī)停止不動(dòng)后,再給出STOPTEST信號(hào),作為讀取反饋脈沖數(shù)值的有效信號(hào),這時(shí)用讀回的反饋脈沖數(shù)值計(jì)算出負(fù)載的實(shí)際位置是準(zhǔn)確的。
通過實(shí)驗(yàn),在電機(jī)以最高轉(zhuǎn)速運(yùn)行時(shí),讓電機(jī)剎車,用邏輯分析儀抓出反饋脈沖的波形,找出反饋脈沖頻率開始突然下降直到反饋脈沖消失的那段時(shí)間,就是所需要的延時(shí)。通過反復(fù)進(jìn)行實(shí)驗(yàn),測(cè)試出這段時(shí)間為30 ms,其間的反饋脈沖個(gè)數(shù)為20個(gè)。因此把要控制的位移量換算成反饋脈沖的個(gè)數(shù)后,用這個(gè)值減去20作為比較模塊給定值,就可以抵消滑行過程中增加的20個(gè)脈沖。這樣對(duì)電機(jī)的控制能夠達(dá)到一次到位,不需要進(jìn)行再次調(diào)節(jié)。延時(shí)模塊仿真圖如圖6所示。
2 結(jié) 語
現(xiàn)場(chǎng)可編程門陣列(FPGA)器件體積小、速度快、集成度高,能夠用硬件電路來實(shí)現(xiàn)算法。使用FPGA控制電機(jī),能夠保證控制的實(shí)時(shí)性和可靠性。它作為一種有效的數(shù)字化控制方法必將廣泛地為人們所接受和使用。
參考文獻(xiàn)
[1]李鐵才.電機(jī)控制技術(shù)[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2000.
[2]陳耀和.VHDL語言設(shè)計(jì)技術(shù)[M].北京:電子工業(yè)出版社,2004.
[3]潘松,黃繼光.EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2002.
[4]爾桂花,竇曰軒.運(yùn)動(dòng)控制系統(tǒng)[M].北京:清華大學(xué)出版社,2002.
[5]黃任.VHDL入門?解惑?經(jīng)典實(shí)例?經(jīng)驗(yàn)總結(jié)[M].北京:北京航空航天大學(xué)出版社,2004.
[6]胡壽松.自動(dòng)控制原理[M].北京:科學(xué)出版社,2000.
[7]于海生.微型計(jì)算機(jī)控制技術(shù)[M].北京:清華大學(xué)出版社,1998.
[8]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,1998.
[9]劉和平.DSP原理及電機(jī)控制應(yīng)用:基于TMS320LF240X系列[M].北京:北京航空航天大學(xué)出版社,2006.
[10]王鑒光.電機(jī)控制系統(tǒng)[M].北京:機(jī)械工業(yè)出版社,1994.