李 昱,劉景林,董亮輝
(西北工業大學,陜西西安710072)
步進電動機以其定位性能良好、運行誤差不積累等優點,在運動控制領域得到了廣泛應用。但由于其自身結構的特點,步進電動機在低速運行狀態下存在轉矩脈動、振蕩、噪聲等問題,所以從步進電動機開始實際應用就提出了抑制振蕩提高運行平穩性的課題[1]。細分驅動技術可以有效提高步進電動機運行性能,如抑制振蕩,提高定位精度。
隨著微電子技術與工藝的發展,SOPC技術已經進入到實用階段。與傳統的以DSP或MCU為主控單元的電機控制解決方案相比,以FPGA為載體的SOPC技術可以為設計提供更大的可靠性和靈活性,并且其并行處理機制在速度上也具有明顯的優勢。本文重點介紹以FPGA為載體的片上系統的構建,各功能模塊的劃分及實現,NiosII軟核的軟件開發;此外,本文也簡要介紹了整個系統的硬件構成。實驗證明本設計具有較好的可靠性,步進電動機運行性能優良。
步進電動機的細分控制,從本質上是通過對步進電動機的勵磁繞組中電流的控制,使步進電動機內部的合成磁場為均勻的圓形旋轉磁場[2],從而實現步進電動機步距角的細分。由電機學理論可以知道,當兩相對稱繞組中通入兩相對稱電流時,將產生圓形旋轉磁場。由于兩相混合式步進電動機兩相繞組在空間互差90°電角度,為兩相對稱繞組,故取其兩相電流分別為:

式中:im為電機的額定電流峰值;α為A、B兩相合成磁場矢量與A相磁場矢量的夾角。因此細分驅動的本質就是使A、B兩相繞組產生相序互差90°的階梯狀正弦電流波形,角度均勻細分,細分度越高,繞組電流越接近正弦波。
本文根據細分驅動的基本原理,設計了一套步進電動機細分驅動器。系統構成框圖如圖1所示。按鍵輸入完成系統工作狀態的設定,包括轉速、轉向、細分數等。以FPGA為載體,嵌入Nios II處理器并定制系統需要的各個片上外設構成系統主控單元,再通過硬件描述語言實現步進電動機細分功能模塊。涉及到步進電動機加減速的給定頻率計算等算法相對復雜但實時性要求不高功能由Nios II處理器完成;而算法相對簡單,實時性要求較高的細分功能則由硬件邏輯來實現。Nios II處理器、片上外設和細分功能模塊均可通過Quartus II開發工具在一片FPGA上實現,即簡化了設計的復雜性、降低了成本,也提高了系統的可靠性。由片上外設的通用I/O單元接收外部按鍵命令,Nios II處理器根據控制命令計算控制脈沖的頻率,同時將此時的電機運行狀態送顯示電路,細分功能模塊給出細分電流給定值送至D/A轉換電路。D/A轉換電路采用PBM3960芯片,該芯片可分時完成兩路8位數字信號到模擬信號的轉換。驅動電路接收D/A轉換電路的電流給定值,完成恒流斬波控制。驅動電路采用兩片步進電動機專用驅動芯片 LMD18245,LMD18245內部具有自檢測電流的機制,根據給定值與檢測值的關系控制開關管的關斷,從而實現恒流斬波控制。

圖1 系統構成框圖
根據系統功能需求對各個功能單元進行模塊劃分。本設計中Nios II處理器接收按鍵控制指令,計算出后級需要的控制脈沖的頻率,并將當前電機的轉速送至LED顯示單元。細分功能要求的實時性較高,由FPGA的邏輯資源通過硬件電路實現。

圖2 系統頂層設計原理圖
系統的頂層設計原理圖如圖2所示。系統采用自頂向下的設計方法,在頂層文件中完成各模塊的聲明、端口的映射。圖中的Nios2模塊是對Nios II處理器及片上外設的聲明,subdivision模塊是對細分功能模塊的聲明。其中的subdivision模塊又包含有細分查表、D/A控制等功能子模塊。
Altera公司提供的SOPC Builder開發工具可以快速地定制自己的Nios II處理器以及片上外設。本采用了標準處理器內核,定制了片上RAM存儲器、JTAG、定時器、通用I/O等片上外設,所有外設均掛接在Avalon總線上實現與CPU的總線通信。
HAL(Hardware Abstraction Layer,硬件描述層)是Nios II處理器的軟件開發環境,它為Nios II的軟件開發提供底層設備驅動、HAL API以及C標準庫等豐富的資源[3]。本文根據系統功能編寫軟件,主要完成的功能包括:按鍵檢測、狀態顯示、各參數計算、加速起動等功能。由于步進電動機存在起動頻率上限、失步等問題,所以要有一個加速起動的過程[4],速度曲線的選擇一定程度上影響步進電動機的性能。主程序主要完成系統初始化、參數計算、按鍵輪詢和狀態顯示;定時器中斷完成CP脈沖的發送,根據電機當前的狀態對定時器的寄存器進行刷新,實現加速起動等功能。圖3為主程序和中斷子程序流程圖。

圖3 主程序和中斷子程序流程圖
細分功能模塊是本設計的重點,采用VHDL硬件描述語言實現。圖4為細分功能模塊的RTL視圖。該模塊主要由脈沖接收、細分查表、D/A控制等功能模塊,下面詳細介紹。

圖4 細分功能模塊的RTL視圖
2.3.1 脈沖接收模塊
步進電動機又被稱為脈沖電機,接收一個控制脈沖運行一步。脈沖接收模塊接收由Nios II處理器發送的CP脈沖,由方向信號dir決定A、B兩相電流的相序,若電機正轉,A相電流領先B相電流90°電角度,反之,B相電流領先A相電流90°電角度;細分給定信號div決定查找表的增量值,細分數越高,增量值越小,如128細分增量值為1,64細分增量值為2,以此類推。在一個新脈沖到來時,在原地址上加增量值得到新的查表地址。該地址為9位2進制變量,其中最高位為正弦電流給定值的符號位,低8位將作為細分查表模塊地址信號。
2.3.2 細分查表模塊
細分查表模塊由兩部分組成,一是片上ROM子模塊;二是ROM讀控制子模塊。ROM子模塊由Quartus II軟件下的Megawizard工具定制的一塊片上位寬為8 bit的256字ROM,其中存放了0~π正弦波數據。ROM讀控制子模塊根據脈沖接收模塊送入的查表地址分時讀取A、B兩相正弦電流給定值。
2.3.3 D/A 控制模塊
D/A控制模塊主要實現將查表得出的A、B兩相電流值送給后級的D/A轉換芯片。理論上應在同一時刻刷新A、B兩相電流值,但D/A轉化芯片只提供一條通路,需要分時將A、B兩相電流值送至D/A轉換芯片。本文采用有限狀態機的設計方法實現D/A轉換芯片寫時序控制,圖5為狀態機的狀態轉換圖。系統復位后進入空閑狀態idle;在等待CP脈沖的上升沿到來時進入A相寫時序的第一個狀態a_setup,保持該狀態的時間要滿足D/A轉換芯片的建立時間要求;之后進入A相寫時序的第二個狀態a_wr,保持該狀態的時間要滿足D/A轉換芯片寫使能信號wr的寬度要求;然后進入a_hold狀態,在該狀態保持的時間應滿足D/A轉換芯片的保持時間要求。至此A相寫時序完成,B相的寫時序則與A相相同,如此循環,經仿真驗證該設計正確可靠。

圖5 A、B兩相數據輸出的狀態轉換圖
利用第三方的仿真工具Modelsim對設計進行仿真,驗證設計的正確性。圖6是功能仿真波形,圖中cp為控制脈沖信號,dir為轉向信號,div為細分給定信號(000代表128細分),a0為D/A芯片的通路選擇信號,d為8位電流值。由圖5中可見,每有一個cp脈沖A、B兩相電流值就刷新一次。由圖6可見在脈沖的上升沿后一個時鐘周期a0變為零,選通A相通路,此時送A相電流值,滿足D/A轉換芯片的建立時間后,向寫使能信號wr發送一個低脈沖,在滿足A相通路的保持時間后,a0變為1,選通B相通路,B相的寫時序與A相相同。之后再轉為A相的情形,如此重復上述過程,就實現了電流的細分給定功能。

圖6 功能仿真波形

圖7 功能仿真局部放大波形
本設計采用Altera公司的EP2C8T114C8的FPGA為控制核心,選用LMD18245步進電動機專用驅動芯片構建了步進電動機細分控制器,對其進行試驗研究。圖7a、圖7b分別給出了4細分和128細分狀態下的A、B兩相繞組電流波形。從實驗結果可見A、B兩相繞組電流為互差90°電角度,呈現正弦包絡的階梯波,并且細分數越高,電流波形越接近正弦,電機轉矩波動越小,運行越平穩。

圖8 不同細分下相電流波形
本文在分析了步進電動機驅動技術及存在的問題的基礎上,設計了一款基于SOPC技術的步進電動機細分驅動器,該設計方法提高了系統的可靠性和靈活性。文中詳細介紹了SOPC系統的實現,并對主要的功能模塊進行了仿真驗證。實驗結果表明設計功能正確,穩定可靠,步進電動機在低速下運行性能良好。
[1]孫耀杰,左賀.抑制混合式步進電機轉矩波動的時變重復控制[J].中國電機工程學報,2004,24(11):183 -187.
[2]Yang M,Zhu M.A research of a new technique on hardware implementation of control algorithm of high-subdivision for Stepper Motor[C]//2010 5th IEEE Conference on Industrial Electronics and Applicationsi.Taiwan,2010:115 -120.
[3]蔡偉綱.Nios II軟件構架解析[M].西安:西安電子科技大學出版社,2007.
[4]Carrica D,Funes M A.Novel Stepper Motor Controller Based on FPGA Hardware Implementation[J].IEEE - ASME Transactions on Mechatronics,2003,8(1):120-124.