段 簡,張奕婷,鄭曉峰,陳 磊,周 穎,錢 敏,2
(1.蘇州城市學院電子信息工程系,江蘇 蘇州 215104;2.蘇州大學電子信息學院電子科學與技術系,江蘇 蘇州 215006)
步進電機是一種應用范圍廣泛的驅動控制裝置,其工作原理是將輸入的電脈沖信號進行轉換,使自身產生相對應的角位移或者線位移[1-2]。步進電機的角位移量或線位移量與步進電機接收到的脈沖數成正比,即輸入的脈沖信號越多,步進電機的角位移或線位移就越多。而步進電機的轉速則由輸入脈沖的頻率控制,輸入的電脈沖信號的頻率越高,步進電機的轉速就越快。
步進電機根據結構的不同,主要可以分為3 種類型,即反應式(VR)、永磁式(PM)和混合式(HS)[3]。本次設計所采用的步進電機是四相反應式步進電機,其示意圖如圖1 所示。

圖1 四相反應式步進電機
與傳統設計方法相比,采用基于硬件描述語言/現場可編程門陣列HDL/FPGA(Hardware Description Language,Field Programmable Gate Array)的EDA(Electronic Design Automation)設計方法設計數字系統有巨大的優越性,且已成為大規模集成電路設計中使用最廣泛的一種方法。在控制驅動步進電機時,由于步進電機能直接接收數字量的輸入來控制電脈沖,且電路設計比較簡單,適宜采用HDL/FPGA 實現;通過FPGA 開發工具Quartus Ⅱ可以高效地進行編譯綜合、波形仿真、下載測試,從而能夠簡化設計、提升效率、實現功能模塊化[3-4]。
如圖1 所示,步進電機主要由2 部分組成:一個是定子,上面有幾組纏繞著線圈的齒;另一部分是可自由轉動的轉子。定子有4 相繞組,轉子上一共有6個齒。以電機的四相單四拍的通電模式為例,反應式步進電機的工作原理是利用了物理上的“磁通總是力圖使自己通過的路徑的磁阻最小”所產生的磁阻轉矩,驅動電機發生轉動。開始時,只有B 相繞組通電,由于電流在步進電機中產生一個穿過轉子的磁場,而這個磁場將轉子磁化,此時距離B 相最近的齒會被吸引,直到與B 相繞組對齊。由于圖中0、3 號齒本就與B相繞組對齊,所以此時轉子不發生轉動。只有當C 相繞組通電時,因為距離C 相繞組最近的1、4 號齒未與C 相繞組對齊,所以此時在磁場的作用下,C 相繞組會產生一個吸引轉矩,吸引距離C 相繞組最近的1、4號齒向C 相繞組靠近,即在磁場作用下,轉子逆時針轉動。當轉子轉動至1、4 號齒與C 相繞組對齊時停止。當只有D 相繞組通電時,因為磁場作用,2、5 號齒被吸引,轉子發生轉動。以此類推,通過不斷切換通電的相,電機就能不停地轉動。
除了電機每次單相通電的供電方式,即四相單四拍的通電方式之外,電機的四相繞組的供電方式還有四相雙四拍和四相單、雙八拍的通電方式。
四相雙四拍的通電方式為:每次有兩相相鄰繞組接通電源,如A、B 相繞組通電而C、D 相繞組不通電。若初始狀態如圖1 所示,那么A、B 相繞組通電時,因為磁場作用產生的轉動力矩,會吸引0、3 號齒與A、B 相繞組磁極的中間線對齊。當只有B、C 相繞組通電時,同理0、3 號齒應該與B、C 相繞組磁極的中間線對齊。以此類推可得到供電方式為四相雙四拍時電機的轉動狀態。
本次設計采用的四相單、雙八拍的通電方式為單相通電和雙相通電交替進行的模式。這種模式將步進電機轉動1 圈的拍數從4 拍變為8 拍,使步進電機每次轉動的角度變為四拍狀況下的1/2,即四相單、雙八拍的步距角是單四拍或雙四拍步距角的1/2。
當控制電機反轉時,只需要將四相繞組的通電順序改為與電機正轉時的通電順序相反即可。步進電機的步距角就是步進電機每轉一次時轉子轉過的角度。步距角的計算公式為:
式(1)中:m為步進電機徑向相對的繞組數,也就是相數;C為步進電機工作的拍數和相數的比值,即步進電機以單四拍和雙四拍的通電模式工作時,C=1,而當步進電機以單八拍和雙八拍的通電模式工作時,C=2;Zk為轉子的小齒數,本次設計所使用的四相步進電機的轉子小齒數為64。
因為步進電機經過一個1/8 的減速器引出,所以本次設計所使用的四相步進電機實際的步距角是=0.0879°。
本次設計采用四相單、雙八拍的通電模式來控制四相步進電機的轉動,A、B、C、D 這4 個相的通電與否由4 路I/O 信號并行控制,即由FPGA 的四位I/O口輸出4 路脈沖信號,分別控制四相步進電機的4 個相。FPGA 輸出的脈沖信號經過功率放大之后,進入步進電機的各相繞組[5],由此便實現了由FPGA 輸出的脈沖信號直接控制步進電機的驅動,而不再需要脈沖分配器來對輸入的電脈沖信號進行分配。圖2 為四相步進電機與FPGA 板的連接示意圖。

圖2 四相步進電機在開發板中的接法
按照四相單、雙八拍的控制方法來驅動四相步進電機進行正轉時,電機四相繞組的通電順序依次為A→AB→B→BC→C→CD→D→DA。高電平為接通電源,低電平為不接通電源,容易得到在控制電機正轉時,FPGA 四位I/O 口的值,如表1 所示。當電機反轉時,4 個相的通電順序與電機正轉時的通電順序相反,即通電相序為A→DA→D→CD→C→BC→B→AB,此時FPGA 四位I/O 口的值應與電機正轉時四位I/O 口輸出值的順序相反。

表1 電機正轉時FPGA 四位I/O 口的值
因為步進電機需要完成正轉和反轉2 種工作,所以控制四相步進電機不僅需要能驅動電機轉動的電脈沖信號clk,還需要復位信號rst 和控制電機正反轉的方向信號dir。步進電機的原理圖如圖3 所示。

圖3 設計原理框圖
本設計采用Ve r i l o g H D L 的編程方法,在Quartus II 9.1 軟件中實現步進電機驅動控制電路的搭建、編譯和波形仿真等工作。其中,實現主要功能部分的代碼如下:
if((clk==1” b1))
begin
StepCounter<=StepCounter+31” b1;
if(StepEnable==1” b1)
begin InternalStepEnable<=1” b1; end
if(StepCounter>=StepLockOut)
begin
StepCounter<=32” b0;
if(InternalStepEnable==1” b1)
begin
InternalStepEnable<=StepEnable;
if(Dir==1” b1)
begin state<=state+3” b001; end
if(Dir==1” b0)
begin state<=state-3” b001; end
case(state)
3” b000: begin StepDrive<=4” b0001;end
3” b001: begin StepDrive<=4” b0011;end
3” b010: begin StepDrive<=4” b0010;end
3” b011: begin StepDrive<=4” b0110;end
3” b100: begin StepDrive<=4” b0100;end
3” b101: begin StepDrive<=4” b1100;end
3” b110: begin StepDrive<=4” b1000;end
3” b111: begin StepDrive<=4” b1001;end
endcase
end
end
end
代碼主要實現了驅動電機時四位I/O 口的8 種輸出狀態,以及通過方向控制變量dir 來控制電機的正轉和反轉。當通過使用條件語句時,state 的值為000~111,分別對輸出變量step_drive 進行賦值。state 的值一共有8 個,每個值對應著步進電機4 個相的不同通電狀態,當控制方向的變量dir 為1 時,電機正轉,state的值按照上面代碼所展示的從上到下的順序依次變化;而控制方向的變量dir 為0 時,電機反轉,state 的值按照從下到上的順序依次變化。
利用Quartus II 9.1 軟件對整個步進電機驅動控制器設計HDL 代碼并進行波形仿真。
圖4 為電機正轉時FPGA 四路I/O 口的輸出波形及接收到復位信號后的輸出波形。其中clk 為控制電機轉動的電脈沖信號;StepEnable 為控制電機是否工作的使能端,在進行波形仿真時,StepEnable 一直處于置1 狀態;rst 為復位信號,置1 時電機正常運轉,置0 時電機復位;dir 為方向信號,當dir 的值為1 時,電機正轉(逆時針旋轉),當dir 的值為0 時,電機反轉(逆時針旋轉)。

圖4 電機正轉時輸出波形及復位后波形
電機反轉時的FPGA 的四路I/O 口的輸出波形如圖5 所示,FPGA 四路I/O 口數值為0001,即步進電機反轉時第一個狀態為A 相通電,隨后四路I/O 口輸出波形和表1 所描述的相反。當接收到復位信號時,四路I/O 口的值變為0000,然后重新從0001 開始。即當步進電機接收到復位信號以后,步進電機的4 個相均不通電,然后重新從A 相通電的狀態開始,步進電機重新開始旋轉。

圖5 電機反轉時的輸出波形及復位后波形
當實現控制步進電機進行正反轉狀態切換的功能時,FPGA 的四路I/O 口的輸出波形如圖6 所示。當方向信號dir 的值由1 變為0 時,四路I/O 口的值為0011,在下一個使電機旋轉的電脈沖信號到達后,四位I/O輸出的值變為0010,即電機由正轉變為反轉的狀態。所以在控制電機在從正轉變為反轉(或反轉變為正轉)時,電機保持現有的狀態,等下一個控制電機旋轉的脈沖信號到來時,電機變為反轉狀態(正轉狀態)。

圖6 電機正反轉切換時的輸出波形
通過波形仿真結果,驗證了步進電機驅動控制器設計程序的功能,即能夠控制電機進行正轉、反轉、復位及正反轉狀態的切換。經過下載測試,與仿真結果相符,達到了設計要求。
本文介紹了使用Verilog HDL 對步進電機的驅動電路進行描述,利用Quartus II 軟件對Verilog HDL 設計程序進行邏輯功能的驗證,最終通過FPGA 開發板下載測試,完成了對步進電機驅動控制的實際功能的驗證。
本次設計主要圍繞控制步進電機進行正轉、反轉、在正反轉時進行復位和切換及控制轉速等功能進行研究,充分利用了硬件描述語言HDL 較傳統方法設計簡單、易于驗證、自上而下的優點,在實際應用中可根據要求靈活改變,以適用于不同場合。