李 昱,劉景林,董亮輝
(西北工業(yè)大學(xué),陜西西安710072)
步進(jìn)電動(dòng)機(jī)以其定位性能良好、運(yùn)行誤差不積累等優(yōu)點(diǎn),在運(yùn)動(dòng)控制領(lǐng)域得到了廣泛應(yīng)用。但由于其自身結(jié)構(gòu)的特點(diǎn),步進(jìn)電動(dòng)機(jī)在低速運(yùn)行狀態(tài)下存在轉(zhuǎn)矩脈動(dòng)、振蕩、噪聲等問(wèn)題,所以從步進(jìn)電動(dòng)機(jī)開(kāi)始實(shí)際應(yīng)用就提出了抑制振蕩提高運(yùn)行平穩(wěn)性的課題[1]。細(xì)分驅(qū)動(dòng)技術(shù)可以有效提高步進(jìn)電動(dòng)機(jī)運(yùn)行性能,如抑制振蕩,提高定位精度。
隨著微電子技術(shù)與工藝的發(fā)展,SOPC技術(shù)已經(jīng)進(jìn)入到實(shí)用階段。與傳統(tǒng)的以DSP或MCU為主控單元的電機(jī)控制解決方案相比,以FPGA為載體的SOPC技術(shù)可以為設(shè)計(jì)提供更大的可靠性和靈活性,并且其并行處理機(jī)制在速度上也具有明顯的優(yōu)勢(shì)。本文重點(diǎn)介紹以FPGA為載體的片上系統(tǒng)的構(gòu)建,各功能模塊的劃分及實(shí)現(xiàn),NiosII軟核的軟件開(kāi)發(fā);此外,本文也簡(jiǎn)要介紹了整個(gè)系統(tǒng)的硬件構(gòu)成。實(shí)驗(yàn)證明本設(shè)計(jì)具有較好的可靠性,步進(jìn)電動(dòng)機(jī)運(yùn)行性能優(yōu)良。
步進(jìn)電動(dòng)機(jī)的細(xì)分控制,從本質(zhì)上是通過(guò)對(duì)步進(jìn)電動(dòng)機(jī)的勵(lì)磁繞組中電流的控制,使步進(jìn)電動(dòng)機(jī)內(nèi)部的合成磁場(chǎng)為均勻的圓形旋轉(zhuǎn)磁場(chǎng)[2],從而實(shí)現(xiàn)步進(jìn)電動(dòng)機(jī)步距角的細(xì)分。由電機(jī)學(xué)理論可以知道,當(dāng)兩相對(duì)稱(chēng)繞組中通入兩相對(duì)稱(chēng)電流時(shí),將產(chǎn)生圓形旋轉(zhuǎn)磁場(chǎng)。由于兩相混合式步進(jìn)電動(dòng)機(jī)兩相繞組在空間互差90°電角度,為兩相對(duì)稱(chēng)繞組,故取其兩相電流分別為:
式中:im為電機(jī)的額定電流峰值;α為A、B兩相合成磁場(chǎng)矢量與A相磁場(chǎng)矢量的夾角。因此細(xì)分驅(qū)動(dòng)的本質(zhì)就是使A、B兩相繞組產(chǎn)生相序互差90°的階梯狀正弦電流波形,角度均勻細(xì)分,細(xì)分度越高,繞組電流越接近正弦波。
本文根據(jù)細(xì)分驅(qū)動(dòng)的基本原理,設(shè)計(jì)了一套步進(jìn)電動(dòng)機(jī)細(xì)分驅(qū)動(dòng)器。系統(tǒng)構(gòu)成框圖如圖1所示。按鍵輸入完成系統(tǒng)工作狀態(tài)的設(shè)定,包括轉(zhuǎn)速、轉(zhuǎn)向、細(xì)分?jǐn)?shù)等。以FPGA為載體,嵌入Nios II處理器并定制系統(tǒng)需要的各個(gè)片上外設(shè)構(gòu)成系統(tǒng)主控單元,再通過(guò)硬件描述語(yǔ)言實(shí)現(xiàn)步進(jìn)電動(dòng)機(jī)細(xì)分功能模塊。涉及到步進(jìn)電動(dòng)機(jī)加減速的給定頻率計(jì)算等算法相對(duì)復(fù)雜但實(shí)時(shí)性要求不高功能由Nios II處理器完成;而算法相對(duì)簡(jiǎn)單,實(shí)時(shí)性要求較高的細(xì)分功能則由硬件邏輯來(lái)實(shí)現(xiàn)。Nios II處理器、片上外設(shè)和細(xì)分功能模塊均可通過(guò)Quartus II開(kāi)發(fā)工具在一片F(xiàn)PGA上實(shí)現(xiàn),即簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、降低了成本,也提高了系統(tǒng)的可靠性。由片上外設(shè)的通用I/O單元接收外部按鍵命令,Nios II處理器根據(jù)控制命令計(jì)算控制脈沖的頻率,同時(shí)將此時(shí)的電機(jī)運(yùn)行狀態(tài)送顯示電路,細(xì)分功能模塊給出細(xì)分電流給定值送至D/A轉(zhuǎn)換電路。D/A轉(zhuǎn)換電路采用PBM3960芯片,該芯片可分時(shí)完成兩路8位數(shù)字信號(hào)到模擬信號(hào)的轉(zhuǎn)換。驅(qū)動(dòng)電路接收D/A轉(zhuǎn)換電路的電流給定值,完成恒流斬波控制。驅(qū)動(dòng)電路采用兩片步進(jìn)電動(dòng)機(jī)專(zhuān)用驅(qū)動(dòng)芯片 LMD18245,LMD18245內(nèi)部具有自檢測(cè)電流的機(jī)制,根據(jù)給定值與檢測(cè)值的關(guān)系控制開(kāi)關(guān)管的關(guān)斷,從而實(shí)現(xiàn)恒流斬波控制。
圖1 系統(tǒng)構(gòu)成框圖
根據(jù)系統(tǒng)功能需求對(duì)各個(gè)功能單元進(jìn)行模塊劃分。本設(shè)計(jì)中Nios II處理器接收按鍵控制指令,計(jì)算出后級(jí)需要的控制脈沖的頻率,并將當(dāng)前電機(jī)的轉(zhuǎn)速送至LED顯示單元。細(xì)分功能要求的實(shí)時(shí)性較高,由FPGA的邏輯資源通過(guò)硬件電路實(shí)現(xiàn)。
圖2 系統(tǒng)頂層設(shè)計(jì)原理圖
系統(tǒng)的頂層設(shè)計(jì)原理圖如圖2所示。系統(tǒng)采用自頂向下的設(shè)計(jì)方法,在頂層文件中完成各模塊的聲明、端口的映射。圖中的Nios2模塊是對(duì)Nios II處理器及片上外設(shè)的聲明,subdivision模塊是對(duì)細(xì)分功能模塊的聲明。其中的subdivision模塊又包含有細(xì)分查表、D/A控制等功能子模塊。
Altera公司提供的SOPC Builder開(kāi)發(fā)工具可以快速地定制自己的Nios II處理器以及片上外設(shè)。本采用了標(biāo)準(zhǔn)處理器內(nèi)核,定制了片上RAM存儲(chǔ)器、JTAG、定時(shí)器、通用I/O等片上外設(shè),所有外設(shè)均掛接在Avalon總線(xiàn)上實(shí)現(xiàn)與CPU的總線(xiàn)通信。
HAL(Hardware Abstraction Layer,硬件描述層)是Nios II處理器的軟件開(kāi)發(fā)環(huán)境,它為Nios II的軟件開(kāi)發(fā)提供底層設(shè)備驅(qū)動(dòng)、HAL API以及C標(biāo)準(zhǔn)庫(kù)等豐富的資源[3]。本文根據(jù)系統(tǒng)功能編寫(xiě)軟件,主要完成的功能包括:按鍵檢測(cè)、狀態(tài)顯示、各參數(shù)計(jì)算、加速起動(dòng)等功能。由于步進(jìn)電動(dòng)機(jī)存在起動(dòng)頻率上限、失步等問(wèn)題,所以要有一個(gè)加速起動(dòng)的過(guò)程[4],速度曲線(xiàn)的選擇一定程度上影響步進(jìn)電動(dòng)機(jī)的性能。主程序主要完成系統(tǒng)初始化、參數(shù)計(jì)算、按鍵輪詢(xún)和狀態(tài)顯示;定時(shí)器中斷完成CP脈沖的發(fā)送,根據(jù)電機(jī)當(dāng)前的狀態(tài)對(duì)定時(shí)器的寄存器進(jìn)行刷新,實(shí)現(xiàn)加速起動(dòng)等功能。圖3為主程序和中斷子程序流程圖。
圖3 主程序和中斷子程序流程圖
細(xì)分功能模塊是本設(shè)計(jì)的重點(diǎn),采用VHDL硬件描述語(yǔ)言實(shí)現(xiàn)。圖4為細(xì)分功能模塊的RTL視圖。該模塊主要由脈沖接收、細(xì)分查表、D/A控制等功能模塊,下面詳細(xì)介紹。
圖4 細(xì)分功能模塊的RTL視圖
2.3.1 脈沖接收模塊
步進(jìn)電動(dòng)機(jī)又被稱(chēng)為脈沖電機(jī),接收一個(gè)控制脈沖運(yùn)行一步。脈沖接收模塊接收由Nios II處理器發(fā)送的CP脈沖,由方向信號(hào)dir決定A、B兩相電流的相序,若電機(jī)正轉(zhuǎn),A相電流領(lǐng)先B相電流90°電角度,反之,B相電流領(lǐng)先A相電流90°電角度;細(xì)分給定信號(hào)div決定查找表的增量值,細(xì)分?jǐn)?shù)越高,增量值越小,如128細(xì)分增量值為1,64細(xì)分增量值為2,以此類(lèi)推。在一個(gè)新脈沖到來(lái)時(shí),在原地址上加增量值得到新的查表地址。該地址為9位2進(jìn)制變量,其中最高位為正弦電流給定值的符號(hào)位,低8位將作為細(xì)分查表模塊地址信號(hào)。
2.3.2 細(xì)分查表模塊
細(xì)分查表模塊由兩部分組成,一是片上ROM子模塊;二是ROM讀控制子模塊。ROM子模塊由Quartus II軟件下的Megawizard工具定制的一塊片上位寬為8 bit的256字ROM,其中存放了0~π正弦波數(shù)據(jù)。ROM讀控制子模塊根據(jù)脈沖接收模塊送入的查表地址分時(shí)讀取A、B兩相正弦電流給定值。
2.3.3 D/A 控制模塊
D/A控制模塊主要實(shí)現(xiàn)將查表得出的A、B兩相電流值送給后級(jí)的D/A轉(zhuǎn)換芯片。理論上應(yīng)在同一時(shí)刻刷新A、B兩相電流值,但D/A轉(zhuǎn)化芯片只提供一條通路,需要分時(shí)將A、B兩相電流值送至D/A轉(zhuǎn)換芯片。本文采用有限狀態(tài)機(jī)的設(shè)計(jì)方法實(shí)現(xiàn)D/A轉(zhuǎn)換芯片寫(xiě)時(shí)序控制,圖5為狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖。系統(tǒng)復(fù)位后進(jìn)入空閑狀態(tài)idle;在等待CP脈沖的上升沿到來(lái)時(shí)進(jìn)入A相寫(xiě)時(shí)序的第一個(gè)狀態(tài)a_setup,保持該狀態(tài)的時(shí)間要滿(mǎn)足D/A轉(zhuǎn)換芯片的建立時(shí)間要求;之后進(jìn)入A相寫(xiě)時(shí)序的第二個(gè)狀態(tài)a_wr,保持該狀態(tài)的時(shí)間要滿(mǎn)足D/A轉(zhuǎn)換芯片寫(xiě)使能信號(hào)wr的寬度要求;然后進(jìn)入a_hold狀態(tài),在該狀態(tài)保持的時(shí)間應(yīng)滿(mǎn)足D/A轉(zhuǎn)換芯片的保持時(shí)間要求。至此A相寫(xiě)時(shí)序完成,B相的寫(xiě)時(shí)序則與A相相同,如此循環(huán),經(jīng)仿真驗(yàn)證該設(shè)計(jì)正確可靠。
圖5 A、B兩相數(shù)據(jù)輸出的狀態(tài)轉(zhuǎn)換圖
利用第三方的仿真工具M(jìn)odelsim對(duì)設(shè)計(jì)進(jìn)行仿真,驗(yàn)證設(shè)計(jì)的正確性。圖6是功能仿真波形,圖中cp為控制脈沖信號(hào),dir為轉(zhuǎn)向信號(hào),div為細(xì)分給定信號(hào)(000代表128細(xì)分),a0為D/A芯片的通路選擇信號(hào),d為8位電流值。由圖5中可見(jiàn),每有一個(gè)cp脈沖A、B兩相電流值就刷新一次。由圖6可見(jiàn)在脈沖的上升沿后一個(gè)時(shí)鐘周期a0變?yōu)榱?,選通A相通路,此時(shí)送A相電流值,滿(mǎn)足D/A轉(zhuǎn)換芯片的建立時(shí)間后,向?qū)懯鼓苄盘?hào)wr發(fā)送一個(gè)低脈沖,在滿(mǎn)足A相通路的保持時(shí)間后,a0變?yōu)?,選通B相通路,B相的寫(xiě)時(shí)序與A相相同。之后再轉(zhuǎn)為A相的情形,如此重復(fù)上述過(guò)程,就實(shí)現(xiàn)了電流的細(xì)分給定功能。
圖6 功能仿真波形
圖7 功能仿真局部放大波形
本設(shè)計(jì)采用Altera公司的EP2C8T114C8的FPGA為控制核心,選用LMD18245步進(jìn)電動(dòng)機(jī)專(zhuān)用驅(qū)動(dòng)芯片構(gòu)建了步進(jìn)電動(dòng)機(jī)細(xì)分控制器,對(duì)其進(jìn)行試驗(yàn)研究。圖7a、圖7b分別給出了4細(xì)分和128細(xì)分狀態(tài)下的A、B兩相繞組電流波形。從實(shí)驗(yàn)結(jié)果可見(jiàn)A、B兩相繞組電流為互差90°電角度,呈現(xiàn)正弦包絡(luò)的階梯波,并且細(xì)分?jǐn)?shù)越高,電流波形越接近正弦,電機(jī)轉(zhuǎn)矩波動(dòng)越小,運(yùn)行越平穩(wěn)。
圖8 不同細(xì)分下相電流波形
本文在分析了步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)技術(shù)及存在的問(wèn)題的基礎(chǔ)上,設(shè)計(jì)了一款基于SOPC技術(shù)的步進(jìn)電動(dòng)機(jī)細(xì)分驅(qū)動(dòng)器,該設(shè)計(jì)方法提高了系統(tǒng)的可靠性和靈活性。文中詳細(xì)介紹了SOPC系統(tǒng)的實(shí)現(xiàn),并對(duì)主要的功能模塊進(jìn)行了仿真驗(yàn)證。實(shí)驗(yàn)結(jié)果表明設(shè)計(jì)功能正確,穩(wěn)定可靠,步進(jìn)電動(dòng)機(jī)在低速下運(yùn)行性能良好。
[1]孫耀杰,左賀.抑制混合式步進(jìn)電機(jī)轉(zhuǎn)矩波動(dòng)的時(shí)變重復(fù)控制[J].中國(guó)電機(jī)工程學(xué)報(bào),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軟件構(gòu)架解析[M].西安:西安電子科技大學(xué)出版社,2007.
[4]Carrica D,F(xiàn)unes M A.Novel Stepper Motor Controller Based on FPGA Hardware Implementation[J].IEEE - ASME Transactions on Mechatronics,2003,8(1):120-124.