摘要:本設計在對步進電機細分驅動原理進行分析研究的基礎上,提出一種基于FPGA控制的步進電機細分驅動器。在該設計中利用硬件描述語言(VHDL)對步進電機控制器的各功能模塊進行行為描述。在MAX+plusII下進行編譯仿真,完成對步進電機控制器的設計。
關鍵詞:步進電機;FPGA;控制
中圖分類號:V233.7+3文獻標識碼:A文章編號:1009-3044(2009)25-7300-03
Based on VHDL the Development of Stepper Motor Controller
HAN Tuan-jun
(Shaanxi University of Technology, Hanzhong 723000, China)
Abstract: In this paper, a divided driving circuit for stepping motor controlled by FPGA is put forward, based on the analysis of the principle of stepping motor divided driving. In the design,hardware description language(VHDL) is used to describe the functional module of the stepper motor controller. Through compiling and simulation under the MAX+plusII, we can complete the design of the stepper motor controller.
Key words: stepper motor controller;FPGA; control
步進電機是一種將電脈沖轉化為角位移的執行機構,它結構簡單、工作可靠,能將數字的電脈沖輸入直接轉換為模擬的輸出軸運動。步進電機作為執行元件,是機電一體化的關鍵產品之一,廣泛應用于各種自動化控制系統中。
1 步進電機控制器的總體設計
采用FPGA器件對步進電機進行控制,利用FPGA中的嵌入式EAB,可以構成存放電機各相電流所需的控制波形數據。利用FPGA設計的數字比較器可以同步產生多路PWM電流波形,對多相步進電機進行靈活控制。通過改變控制波形的數據、增加計數器的位數,可以提高計數器的精度,從而可以對步進電機轉角進行任意角度細分,實現步進電機轉角的精確控制。此次設計采用的是四相步進電機,利用FPGA器件,通過VHDL編程仿真,對電機進行步距角細分,轉速及其正反轉控制。其細分控制框圖如圖1所示。
2 設計原理
2.1 步進電機的工作原理
該步進電機為一四相步進電機,采用單極性直流電源供電。只要對步進電機的各相繞組按合適的時序通電,就能使步進電機步進轉動。圖2是該四相反應式步進電機工作原理示意圖。
開始時,開關SB接通電源,SA、SC、SD斷開,B相磁極和轉子0、3號齒對齊,同時,轉子的1、4號齒就和C、D相繞組磁極產生錯齒,2、5號齒就和D、A相繞組磁極產生錯齒。當開關SC接通電源,SB、SA、SD斷開時,由于C相繞組的磁力線和1、4號齒之間磁力線的作用,使轉子轉動,1、4號齒和C相繞組的磁極對齊。而0、3號齒和A、B相繞組產生錯齒,2、5號齒就和A、D相繞組磁極產生錯齒。依次類推,A、B、C、D四相繞組輪流供電,則轉子會沿著A、B、C、D方向轉動。
2.2 步進電機控制器的設計原理
2.2.1 步進電機細分驅動原理
步進電機的驅動是靠給步進電機的各相勵磁繞組輪流通以電流,實現步進電機內部磁場合成方向的變化來使步進電機轉動的。設TA、TB、TC、TD為步進電機A、B、C、D四相勵磁繞組分別通電時產生的磁場矢量,TAB、TBC、TCD、TDA為步進電機中AB、BC、CD、DA兩相同時通電產生的合成磁場矢量。當給步進電機的A、B、C、D四相輪流通電時,步進電機的內部磁場從TA-TB-TC-TD,即磁場產生了旋轉。一般情況下,當步進電機內部磁場變化一周(360°)時,電機的轉子轉過以個齒距,因此,步進電機的步距角θB可表示為:
θB=θM/Nr
式中Nr為步進電機的轉子齒數;θM為步進電機運動時兩相鄰穩定磁場間的夾角。θM與電機的相數(M)和電機的運行拍數有關。當電機以單四拍方式運動時,θM=90°;當電機以四相八拍的方式運行時,θM=45°。和單四拍方式相比,θM和θB都減小了一半,實現了步距角的二細分,但是在通常的步進電機驅動線路中,由于通過各相繞組的電流是個開關量,即繞組中的電流只有零和某一額定值兩種狀態,相應的各相繞組產生的磁場也是個開關量,只能通過各相的通電組合來減小θM和θB。
但是,這樣可達到的細分數很有限。以四相反應式步進電機為例,最多只能實現二細分,對于相數較多的步進電機可達到的細分數稍大一些,但是也很有限。因此要使可達到的細分數較大,就必須能控制步進電機各相勵磁繞組中的電流,使其按階梯上升或下降,即在零到最大值相電流之間能喲多個穩定的中間電流狀態,相應的磁場矢量幅值也就存在多個中間狀態,這樣,相鄰兩相或多相的合成磁場的方向也將由多個中間狀態。四相步進電機八細分時的各相電流以1/4的步距上升或下降的,在兩相TA、TB中間插入七個穩定的中間狀態,原來一步所轉過的角度θM將由八步完成,實現步距角的八細分。
2.2.2 步距細分的系統構成
該系統是由PWM計數器、ROM地址計數器、PWM波形ROM存儲器、比較器、功放電路等組成。其中,PWM計數器在脈寬時鐘作用下遞增計數,產生階梯型上升的周期性的鋸齒波,同時加載到個數字比較器的一端;PWM波形ROM輸出的數據A[3..0]、B[3..0]、C[3..0]、D[3..0]分別加載到各數字比較器的另一端,當PWM計數器的值小于波形ROM輸出數值時,比較其輸出低電平;當PWM計數器的計數值大于波形ROM輸出數值時,比較其輸出高電平,由此可輸出周期性的PWM波形。根據步進電機八細分電流波形的要求,將各個時刻細分電流波形所對應的數值存放于波形ROM中,波形ROM的地址由地址計數器產生。通過對地址計數器進行控制,可以改變步進電機的旋轉方向、轉動速度、工作/停滯狀態。FPGA產生的PWM信號控制各功率驅動電路的導通和關斷,其中PWM信號隨ROM數據而變化,改變輸出信號的占空比,達到限流及細分控制,最終使電機繞組呈現階梯型變化,從而實現步距細分的目的。
輸出細分電流信號采用FPGA中ROM查表法,他是通過在不同地址單元內寫入不同的PWM數據,用地址選擇來實現不同通電方式下的可變步距細分。
3 步進電機的仿真波形及分析
u_d為步進電機正/反轉控制,clr為步進電機的工作/停止控制,clk2為步進電機轉動速度控制,Y0,Y1,Y2,Y3分別對應步進電機的A,B,C,D四相電流,s端為選擇細分控制。
1)當clr端為1時步進電機控制器停止工作,其工作時序仿真波形如圖3所示。
通過仿真波形可以看出:當clr=1時,控制器的控制器的各個端口都停留在初始狀態,這表示控制器處于停止狀態。
2)當clr端口為0時步進電機開始工作。
A:當u_d=1時步進電機正轉,設定clk周期為50ns,clk2周期為400ns。由s端控制步進電機是否進行細分操作的控制,s=1時表示進行細分操作,s=0時表示步進電機不進行細分操作。其仿真波形圖分別如圖4,圖5。
B:當u_d=0時步進電機反轉,s=1時表示步進電機進行細分操作,s=0時表示步進電機不進行細分操作。設定clk周期為50ns,clk2周期為400ns。其仿真波形圖分別如圖6,圖7。
通過對圖4、圖5的分析不難理解圖6、圖7的工作過程。
圖6由于u_d=0,s=1,步進電機進行反向細分運動,即由A-AD-D-DC的運動。
圖7進行的是無細分反向運動,即A-D-C-B-A的運動過程。其輸出數據X[3..0]由0011B-1001B-1100B-0110B進行變化。
C:當改變clk2時可以控制步進電機轉動的速度,設定clk為50ns,u_d=1,clr=0,s=0,
① 令clk2為400ns其仿真波形如圖8。
② 令clk2為200ns時其仿真波形如圖9。
由以上兩個圖對比可知通過減小clk2的周期,步進電機控制器的運行速度明顯加快了,同樣可以改變clk2的周期使步進電機控制器的運行速度減慢。通過以上對步進電機的仿真的分析,該設計實現了對步進電機的各種基本控制。
參考文獻:
[1] 潘松,黃繼民. EDA技術實用教程[M]. 北京:科學出版社,2005.
[2] 高鐘毓. 機電控制工程[M]. 北京:清華大學出版社,2002.
[3] 劉寶延,程樹康. 步進電機及驅動控制系統[M]. 哈爾濱:哈爾濱工業大學出版社,1997.
[4] 王季秩,陳景華.電機實用技術[M]. 上海:上海科技技術出版社,1997.
[5] 侯伯亨,周端. 數字系統設計基礎[M]. 西安:西安電子科技大學出版社,2000.
[6] 黃智偉. FPGA系統設計與實踐[M]. 北京:電子工業出版社,2005.