吳 凡 金建勛 戴志堅
摘 要:由于直流電機具有速度易控制,精度和效率高,能在寬范圍內實現(xiàn)平滑調速等特點而在冶金、機械加工制造等行業(yè)中得到廣泛應用。該設計采用FPGA作為直流電機的控制器件,負責信號處理,速度快、可靠性高。介紹直流電機進行位置控制的方法,給出位置控制模塊的設計和實現(xiàn),使用VHDL語言進行編程完成了FPGA對直流電機的各種控制。
關鍵詞:位置控制;直流電機;FPGA;VHDL
中圖分類號:TP274文獻標識碼:B
文章編號: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
在直流電機控制系統(tǒng)中,被控制量一般都是電機的轉速,控制的目的是保持電機的轉速在所需要的定值上。但在實際生產過程中,電機帶動生產機械或者其他負載運動的表現(xiàn)不一定都是轉速,也可能是使生產機械或其機構產生一定的位置變化,這時需要的控制量就不再是電機的轉速,而是控制對象的直線位移,因此需將電機的轉速輸出轉換為電機的位移輸出。
1 電機位置控制模塊的設計
1.1 直流電機位置控制的方法
在此,使用maxon直流電機,通過與其配套的行星齒輪箱和磁編碼器,能夠實現(xiàn)從轉速到位移的轉換。其工作原理如下:電機轉動時,編碼器開始輸出反饋脈沖,反饋脈沖的頻率與電機的轉速成正比,最高可達20 kHz。電機軸每旋轉一圈,編碼器就輸出16個反饋脈沖,通過計算得出每個脈沖代表電機所帶負載產生0.006 14 mm的位移。這樣就可以把要控制的位移量用反饋脈沖的個數(shù)來表示,作為FPGA中位置控制模塊給定值,當電機轉動時,FPGA中的計數(shù)器會把反饋脈沖計數(shù)并保存,位置控制模塊不斷讀取計數(shù)器里的計數(shù)值,并與位置控制模塊中的給定值比較。當它們相等的時候,位置控制模塊發(fā)出停止信號,從而控制電機剎車。電機停止運動后,再讀取計數(shù)器中的計數(shù)值,與給定值做比較,計算出差值。如果差值在控制精度范圍內,則此次控制結束;如果不在范圍內,將差值作為下一次控制的給定值,繼續(xù)控制電機運動,直至達到要求的精度范圍為止。
1.2 位置控制模塊的組成
位置控制模塊由3部分組成:比較模塊、驅動模塊和延時模塊。比較模塊的作用是將編碼器反饋的脈沖個數(shù)與給定的脈沖個數(shù)做比較,當它們相等時,給出電機停止信號。驅動模塊的作用是根據輸入的控制信號控制電機的運動。延時模塊的作用是防止丟失反饋脈沖,確保準確讀回編碼器反饋的脈沖個數(shù)。接下來將重點介紹各個模塊的具體實現(xiàn)。
1.2.1 比較模塊
圖1中,data_in[15..0]為給定的反饋脈沖個數(shù);EN為電機工作使能信號;inclk為工作時鐘;feedback[15..0]為電機運行時計數(shù)器的計數(shù)值;stopinter為電機停止時的模塊內部傳遞信號;“0”表示無效,“1”表示有效。比較模塊的工作原理如下:
比較模塊在接收到給定值后,也就是根據要控制的位移量所計算出的反饋脈沖的個數(shù),將其鎖存。在工作時鐘的作用下,模塊會不斷地檢測EN信號是否有效,如果EN信號有效,模塊將開始讀取反饋計數(shù)值,并與給定值做比較;如果相等,模塊認為電機所帶負載的運動到達指定位置,這時輸出的stopinter信號有效,控制電機剎車;否則stopinter信號無效,電機繼續(xù)運動。
如圖2所示,假設給定的計數(shù)值為7。當使能信號EN有效時,模塊開始讀端口feedback[15..0]中的值(電機運行時通過磁編碼器反饋回來的脈沖個數(shù)),與data_in[15..0]中給定的脈沖個數(shù)做比較。當它們相等的時候,表示電機所帶的負載運動到了指定位置,此時stopinter信號有效,開始控制電機剎車并停止。
1.2.2 驅動模塊
圖3中,derect[1..0]為電機的控制輸入信號;EN為電機工作使能信號,“0”表示無效,“1”表示有效;inclk為工作時鐘;stopinter為電機停止信號的模塊內部傳遞信號;control_outA,control_outB為控制電機的輸出信號,這兩個控制信號直接連接電機的驅動芯片。驅動模塊的工作原理如下:
在工作時鐘的作用下,驅動模塊會不斷地檢測EN信號和stopinter信號是否有效,如果EN有效,并且stopinter無效的時候,模塊的輸出control_outA,contorl_outB取決于電機控制輸入信號derect[1..0]的狀態(tài),當derect[1..0]為“01”時,control_outA輸出為“0”;control_outB輸出為“1”,表示控制電機反轉。當derect[1..0]為“10”時,control_outA輸出為“1”;control_outB輸出為“0”,表示控制電機正轉。驅動控制模塊一旦檢測到stop信號有效,control_outA和control_outB的輸出都為“0”,表示控制電機剎車并停止。在EN和stop信號都無效的時候,control_outA和control_outB的輸出都為“1”,表示對電機不做任何控制。
如圖4所示,當EN和stopinter 信號都為“0”時,模塊的輸出control_outA,contorl_outB都為“1”,對電機不做任何控制。當EN信號變?yōu)椤?”時,表示電機開始運動,模塊的輸出control_outA為“0”,Contorl_outB為“1”,與direction[1..0]中的值“01”相同,此時電機反轉。當stopinter信號變?yōu)椤?”時,模塊的輸出control_outA為“0”;contorl_outB也為“0”,此時電機剎車并停止。當EN信號為“1”,stopinter信號再次為“0”時,電機再次開始運動,模塊的輸出control_outA為“1”;contorl_outB為“0”,與direction[1..0]中的值“10”相同,此時電機反轉。
1.2.3 延時模塊
圖4中,EN為延時的使能信號,也就是計數(shù)比較模塊的輸出信號stopinter;inclk為工作時鐘;stop為電機停止信號對外部的輸出信號。延時模塊(如圖5所示)的工作原理如下:
當延時模塊檢測到stopinter信號為“1”時,模塊內的計數(shù)器開始工作,計數(shù)器時鐘即模塊的工作時鐘10 kHz,當記滿300后,模塊輸出信號為“1”。延時模塊檢測到stopinter信號為“0”時,模塊內計數(shù)器不工作,模塊輸出信號為“0”。
當電機剎車時,由于存在慣性,電機不會立即停止,會有一段滑行的過程,在這個過程中,電機仍然會通過磁編碼器返回反饋脈沖,只是因為電機的轉速下降,反饋脈沖的頻率大大降低。當stopinter信號變?yōu)椤?”時,電機開始剎車,如果此時立刻讀取feedback[15..0]端口上的反饋脈沖數(shù)值,計算出電機所帶負載的位置,那么必然會丟失掉滑行過程中的反饋脈沖。這樣就會導致讀回的反饋脈沖數(shù)與實際電機返回的反饋脈沖數(shù)不相等,從而嚴重地影響控制精度,所以必須在stopinter信號變?yōu)椤?”后,延長一段時間,確保電機停止不動后,再給出STOPTEST信號,作為讀取反饋脈沖數(shù)值的有效信號,這時用讀回的反饋脈沖數(shù)值計算出負載的實際位置是準確的。
通過實驗,在電機以最高轉速運行時,讓電機剎車,用邏輯分析儀抓出反饋脈沖的波形,找出反饋脈沖頻率開始突然下降直到反饋脈沖消失的那段時間,就是所需要的延時。通過反復進行實驗,測試出這段時間為30 ms,其間的反饋脈沖個數(shù)為20個。因此把要控制的位移量換算成反饋脈沖的個數(shù)后,用這個值減去20作為比較模塊給定值,就可以抵消滑行過程中增加的20個脈沖。這樣對電機的控制能夠達到一次到位,不需要進行再次調節(jié)。延時模塊仿真圖如圖6所示。
2 結 語
現(xiàn)場可編程門陣列(FPGA)器件體積小、速度快、集成度高,能夠用硬件電路來實現(xiàn)算法。使用FPGA控制電機,能夠保證控制的實時性和可靠性。它作為一種有效的數(shù)字化控制方法必將廣泛地為人們所接受和使用。
參考文獻
[1]李鐵才.電機控制技術[M].哈爾濱:哈爾濱工業(yè)大學出版社,2000.
[2]陳耀和.VHDL語言設計技術[M].北京:電子工業(yè)出版社,2004.
[3]潘松,黃繼光.EDA技術實用教程[M].北京:科學出版社,2002.
[4]爾桂花,竇曰軒.運動控制系統(tǒng)[M].北京:清華大學出版社,2002.
[5]黃任.VHDL入門?解惑?經典實例?經驗總結[M].北京:北京航空航天大學出版社,2004.
[6]胡壽松.自動控制原理[M].北京:科學出版社,2000.
[7]于海生.微型計算機控制技術[M].北京:清華大學出版社,1998.
[8]侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設計[M].西安:西安電子科技大學出版社,1998.
[9]劉和平.DSP原理及電機控制應用:基于TMS320LF240X系列[M].北京:北京航空航天大學出版社,2006.
[10]王鑒光.電機控制系統(tǒng)[M].北京:機械工業(yè)出版社,1994.