成 果,冉 全*,2,葉惠嬌,潘 洋
1.武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北 武漢 430205;2.智能機(jī)器人湖北省重點(diǎn)實(shí)驗(yàn)室(武漢工程大學(xué)),湖北 武漢 430205
步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的數(shù)字式傳動(dòng)裝置,在電子、機(jī)械等領(lǐng)域有很多的應(yīng)用[1]。電機(jī)的轉(zhuǎn)動(dòng)是由輸入的脈沖信號(hào)控制,在控制的過程中能具體的知道電機(jī)旋轉(zhuǎn)的角度[2]。但是由于步進(jìn)電機(jī)的步距角固定,在低頻運(yùn)轉(zhuǎn)時(shí)容易產(chǎn)生振蕩,不能保證平穩(wěn)的運(yùn)行,無法滿足精確控制的要求,一般需要外接阻尼器或者加減速器才可以緩解振蕩問題[3]。本文使用步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)的方式來減少電機(jī)振蕩,細(xì)分驅(qū)動(dòng)的脈沖信號(hào)在控制器中產(chǎn)生,不用外接設(shè)備,簡(jiǎn)化了控制過程。
傳統(tǒng)的步進(jìn)電機(jī)控制方式是以單片機(jī)等微處理器為控制核心,對(duì)于簡(jiǎn)單的步進(jìn)電機(jī)控制場(chǎng)景是沒有問題的,但是在控制多個(gè)步進(jìn)電機(jī)進(jìn)行頻繁細(xì)分操作時(shí),會(huì)占用微處理器大量的運(yùn)算時(shí)間和大量的IO口,這會(huì)對(duì)系統(tǒng)中其它模塊的資源分配產(chǎn)生影響,從而影響其他功能的執(zhí)行與實(shí)現(xiàn)。可編程門陣列(field programmable gate array,F(xiàn)PGA)因?yàn)閮?nèi)部程序是并行運(yùn)行,對(duì)處理復(fù)雜功能有很強(qiáng)的能力且FPGA擁有大量的IO口,對(duì)于步進(jìn)電機(jī)這樣需要多個(gè)IO口同時(shí)控制的器件是非常適合的??梢院芎玫慕鉀Q微處理器在上述方面的不足,而且與程序控制相比,硬件電路控制具備更好的穩(wěn)定性和快速性。所以系統(tǒng)采用FPGA為控制核心實(shí)現(xiàn)步進(jìn)電機(jī)細(xì)分控制。
當(dāng)步進(jìn)電機(jī)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),步進(jìn)電機(jī)就會(huì)按固定的角度(稱為“步距角”)轉(zhuǎn)一步,電機(jī)的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)轉(zhuǎn)下去[4]。其中,步距角的定義為:
式(1)中:zr為齒數(shù),m為步進(jìn)電機(jī)的工作節(jié)拍系數(shù)[5]。
由于受自身特性影響,在一些精密控制的領(lǐng)域,步進(jìn)電機(jī)的性能達(dá)不到實(shí)際要求,因此可以通過步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)提高電機(jī)驅(qū)動(dòng)的分辨率來改善步進(jìn)電機(jī)的運(yùn)行狀況。細(xì)分驅(qū)動(dòng)可以控制步進(jìn)電機(jī)中各相的電流以階梯狀逐漸增加或者減小,如圖1所示,因?yàn)殡姶帕嘏c電流相關(guān),通過減小繞組電流突變,就能減小電磁力矩突變[6],使步進(jìn)電機(jī)可以沿著這些中間狀態(tài)以微步距轉(zhuǎn)動(dòng)。在每相電流的最大值與最小值之間插入多個(gè)電流值后,電機(jī)內(nèi)部會(huì)產(chǎn)生連續(xù)變化的合成磁場(chǎng)矢量,而合成磁場(chǎng)矢量之間的夾角決定了步進(jìn)電機(jī)細(xì)分后的微步距角的大?。?]。其中微步距角的公式為:
圖1 四相步進(jìn)電機(jī)細(xì)分電流波形Fig.1 Subdivision current waveforms of four-phase stepping motor
式(2)中:θ微步距為細(xì)分后的步距角,e為細(xì)分?jǐn)?shù)。
為了使細(xì)分后的微步距角保持一致,必須要保證電流合成矢量的幅值和旋轉(zhuǎn)角度能保持不變,其關(guān)鍵在于合理的控制電機(jī)相電流的變化。使用電流矢量恒幅均勻旋轉(zhuǎn)法,即給電機(jī)的n相繞組分別通入幅值相等且相位差為2π/n的正弦電流,可以使步進(jìn)電機(jī)內(nèi)部形成一個(gè)圓形磁場(chǎng),各相繞組的電流合成矢量在細(xì)分的過程中做幅值相等的旋轉(zhuǎn)運(yùn)動(dòng)[8],達(dá)到微步距角一致的目的。如圖2所示,其中 Ia,Ib,Ic分別為步進(jìn)電機(jī)A相,B相勵(lì)磁電流矢量和合成電流矢量。以四相步進(jìn)電機(jī)為例,各相繞組的相位差為π/2,則步進(jìn)電機(jī)均勻細(xì)分驅(qū)動(dòng)時(shí)相電流的函數(shù)變換為:
式(3)和(4)中:Is為繞組中額定電流,θ為轉(zhuǎn)動(dòng)電度角。
圖2 步進(jìn)電機(jī)電流矢量圖Fig.2 Current vector diagram of stepping motor
通過以上分析可知,給四相步進(jìn)電機(jī)的4個(gè)繞組接入電流值按正弦變化,幅值相等且相位差為π/2的電流,則能實(shí)現(xiàn)步進(jìn)電機(jī)的細(xì)分驅(qū)動(dòng)。所以本系統(tǒng)使用正弦脈沖寬度調(diào)制(sinusoidal pulse width modulation,SPWM)技術(shù),SPWM是在脈沖寬度調(diào)制(pulse width modulation,PWM)的基礎(chǔ)上改變調(diào)制脈沖方式,使脈沖寬度占空比按正弦規(guī)律排列[9]。調(diào)制方式是把所期望得到的波形作為調(diào)制信號(hào),把接收調(diào)制的信號(hào)作為載波[10]。通常采用等腰三角波作為載波,使用正弦波作為調(diào)制信號(hào)調(diào)制載波,所得到的就是SPWM脈沖信號(hào)。利用SPWM波幅值相等且脈沖寬度按正弦規(guī)律變化的特點(diǎn)[11],來控制電機(jī)繞組中電流值的按正弦規(guī)律變化,實(shí)現(xiàn)步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)。
系統(tǒng)由FPGA、步進(jìn)電機(jī)驅(qū)動(dòng)模塊和步進(jìn)電機(jī)本體3個(gè)部分組成。在FPGA內(nèi)部由鎖相環(huán)、三角波計(jì)數(shù)器、只讀存儲(chǔ)器(read only memory,ROM)地址計(jì)數(shù)器、存儲(chǔ)著正弦波形電流值的ROM存儲(chǔ)器、比較器和信號(hào)分配器等模塊構(gòu)成步進(jìn)電機(jī)細(xì)分控制的控制模塊。系統(tǒng)整體框圖如圖3所示。
圖3 系統(tǒng)整體框圖Fig.3 Overall block diagram of system
根據(jù)采樣定理,載波比即正弦調(diào)制波與調(diào)制輸出的脈沖總數(shù)之比越大,輸出脈沖信號(hào)的精度也越高[12]。FPGA開發(fā)板的基礎(chǔ)時(shí)鐘為50 MHz,使用鎖相環(huán)的分頻與倍頻功能,可以改變ROM地址計(jì)數(shù)器和三角波計(jì)數(shù)器的工作時(shí)鐘,使它們頻率的比值產(chǎn)生變化,得到不同載波比的SPWM脈沖信號(hào)。例如FPGA的時(shí)鐘經(jīng)過2.5分頻得到20 MHz的時(shí)鐘作為ROM地址計(jì)數(shù)器的工作時(shí)鐘,經(jīng)過4倍頻得到200 MHz的時(shí)鐘作為三角波計(jì)數(shù)器的工作時(shí)鐘。這樣使三角波的時(shí)鐘頻率達(dá)到正弦波的10倍,這樣在兩組信號(hào)經(jīng)過比較器后會(huì)得到載波比較高的SPWM脈沖信號(hào)。在實(shí)驗(yàn)過程中,利用鎖相環(huán)改變這兩個(gè)模塊的工作時(shí)鐘,使一個(gè)周期SPWM脈沖信號(hào)的脈沖個(gè)數(shù)改變,實(shí)現(xiàn)細(xì)分驅(qū)動(dòng)的細(xì)分?jǐn)?shù)改變。
ROM地址計(jì)數(shù)器和三角波計(jì)數(shù)器都是在時(shí)鐘脈沖的作用下實(shí)現(xiàn)計(jì)數(shù)。ROM地址計(jì)數(shù)器得到的是存儲(chǔ)在ROM中正弦波電流值的地址,根據(jù)ROM地址計(jì)數(shù)器的值就可以讀出相應(yīng)地址下的電流值數(shù)據(jù),ROM中存放的是代表一個(gè)正弦周期的512個(gè)電流值,每個(gè)數(shù)據(jù)的數(shù)據(jù)寬度為9。這些數(shù)據(jù)使用C語言編程得到,并把這些數(shù)據(jù)保存在MIF文件中。通常正弦波和三角波的最大幅值比在1~1.5之間,可以得到良好的SPWM脈沖信號(hào),所以在實(shí)驗(yàn)中,控制三角波與正弦波的幅值比為1~1.5內(nèi)的,即三角波計(jì)數(shù)器的周期在512~767內(nèi),且每個(gè)數(shù)據(jù)的數(shù)據(jù)寬度為10,這些數(shù)據(jù)使用Verilog編程得到。其中三角波和正弦波數(shù)據(jù)的起點(diǎn)和終點(diǎn)必須對(duì)齊,保證得到的SPWM波在每個(gè)周期內(nèi)的脈沖信號(hào)是一致的,使輸入到步進(jìn)電機(jī)的脈沖信號(hào)能穩(wěn)定。本文中使用的是單極性四相步進(jìn)電機(jī),即電機(jī)每相繞組只能單向通電,所以在數(shù)據(jù)比較中只取正弦波0~π的數(shù)據(jù)與三角波進(jìn)行比較。
比較器用于實(shí)時(shí)計(jì)算比較值。兩個(gè)端口分別接收正弦波和三角波的值,當(dāng)正弦波的值大于三角波的值時(shí),輸出高電平,否則輸出低電平[13]。輸出端脈沖信號(hào)的占空比由輸入端的數(shù)據(jù)決定。在ROM中,如果電流數(shù)據(jù)很大,則輸出信號(hào)的占空比很大。相反,如果電流數(shù)據(jù)很小,則輸出信號(hào)的占空比很小。4個(gè)比較器得到4組SPWM脈沖信號(hào),用來控制電機(jī)各相繞組中電流值的按正弦變化。
信號(hào)分配器接收來自比較器的脈沖信號(hào),通過時(shí)序設(shè)計(jì),控制信號(hào)輸出的通斷,循環(huán)輸出4組相位差為π/2的脈沖信號(hào)給步進(jìn)電機(jī)驅(qū)動(dòng)模塊。其中信號(hào)分配器還可以控制輸出脈沖信號(hào)的頻率、數(shù)量、順序,通過控制脈沖信號(hào)可以控制步進(jìn)電機(jī)的各種狀態(tài)[14]。
步進(jìn)電機(jī)驅(qū)動(dòng)模塊使用的驅(qū)動(dòng)芯片是L298N,該芯片輸出電流大且工作電壓高,內(nèi)含兩個(gè)H橋的大電流高電壓全橋式驅(qū)動(dòng)器,可以驅(qū)動(dòng)四相步進(jìn)電機(jī)[15]。
整個(gè)系統(tǒng)開始運(yùn)轉(zhuǎn)時(shí),ROM地址計(jì)數(shù)器得到的地址信號(hào)給ROM存儲(chǔ)器,ROM存儲(chǔ)器按照地址信號(hào)讀出存在ROM中電流值的數(shù)據(jù),輸出給比較器的輸入端,三角波計(jì)數(shù)器生成的三角波數(shù)據(jù)輸入給比較器的另一個(gè)輸入端,兩組數(shù)據(jù)經(jīng)過比較器比較,得到SPWM脈沖信號(hào)??偣?個(gè)比較器得到4組SPWM脈沖,將這4組脈沖信號(hào)送到信號(hào)分配器的輸入端,經(jīng)過信號(hào)分配器進(jìn)行步進(jìn)電機(jī)4個(gè)繞組的電流分配,經(jīng)過分配的信號(hào)通過FPGA的通用輸入輸出端口(GPIO)輸出給步進(jìn)電機(jī)驅(qū)動(dòng)模塊進(jìn)行功率的放大,最后把脈沖信號(hào)送到步進(jìn)電機(jī)4個(gè)繞組,控制電機(jī)平穩(wěn)轉(zhuǎn)動(dòng),完成對(duì)電機(jī)的細(xì)分控制。
使用Verilog硬件描述語言完成上述每一個(gè)功能模塊,形成完整的系統(tǒng)。生成的RTL電路如圖4所示,從圖4中可以看出和設(shè)計(jì)的系統(tǒng)框圖基本一致,滿足電機(jī)細(xì)分驅(qū)動(dòng)要求。
圖4 RTL電路圖Fig.4 Circuit diagram of RTL
圖 5(a)、(b)、(c)中的三角波和正弦波分別是三角波計(jì)數(shù)器和ROM中存儲(chǔ)數(shù)據(jù)的仿真波形,寬度按正弦規(guī)律變換的SPWM脈沖是比較器的輸出波形,從仿真波形上可以看出當(dāng)正弦波的值大于三角波的值時(shí)比較器輸出高電平,否則輸出低電平,與比較器功能一致。其中圖5(a)中正弦波和三角波的最大幅值比為1∶1,圖5(b)中的幅值比1∶1.5,由2個(gè)圖看出一個(gè)周期的SPWM波的脈沖個(gè)數(shù)是相同的,但是圖5(a)脈沖信號(hào)的占空比比圖5(b)大,使得圖5(a)在輸出電壓上高于圖5(b),但是細(xì)分?jǐn)?shù)是一致的。圖5(b)和圖5(c)的正弦波和三角波的最大幅值比都是1∶1.5,圖5(c)改變了正弦波的工作頻率,變?yōu)閳D5(b)的一半,使得載波比為圖5(b)的2倍,即細(xì)分?jǐn)?shù)圖5(c)是圖5(b)的 2倍,從圖5中可以直觀的看到圖5(c)的SPWM波的精度更高。通過以上分析可以知道正弦波和三角波的最大幅值比可以改變輸出脈沖的電壓,但是只有改變ROM地址計(jì)數(shù)器和三角波計(jì)數(shù)器的工作時(shí)鐘,才可以實(shí)現(xiàn)對(duì)細(xì)分?jǐn)?shù)的改變。
圖5(d)是使用圖5(b)的脈沖信號(hào)經(jīng)過信號(hào)分配器分配后,實(shí)現(xiàn)的步進(jìn)電機(jī)10細(xì)分驅(qū)動(dòng)的脈沖信號(hào)仿真波形,圖 5(e)是使用圖 5(c)的脈沖信號(hào)經(jīng)過信號(hào)分配器分配后,實(shí)現(xiàn)的步進(jìn)電機(jī)20細(xì)分驅(qū)動(dòng)脈沖信號(hào)的仿真波形。由圖5(d)和圖5(e)可以看出,每一相的脈沖信號(hào)都是按正弦規(guī)律變化,每相鄰兩相的脈沖信號(hào)的相位差相差π/2,與電流矢量恒幅均勻旋轉(zhuǎn)法的設(shè)計(jì)要求一致。由于步進(jìn)電機(jī)繞組具有電感性,在電機(jī)接收到SPWM脈沖信號(hào)后,繞組上的電流值會(huì)按正弦規(guī)律變化,實(shí)現(xiàn)四相步進(jìn)電機(jī)等步距角細(xì)分。
圖5 仿真波形:(a)幅值比為1∶1的10細(xì)分比較波形,(b)幅值比為1∶1.5的10細(xì)分比較波形,(c)幅值比為1:1.5的20細(xì)分比較波形,(d)步進(jìn)電機(jī)10細(xì)分驅(qū)動(dòng),(e)步進(jìn)電機(jī)20細(xì)分驅(qū)動(dòng)Fig.5 Simulation waveform diagram:(a)10 subdivision comparison waveforms with an amplitude ratio of 1∶1,(b)10 subdivision comparison waveforms with an amplitude ratio of 1∶1.5,(c)20 subdivision comparison waveforms with an amplitude ratio of 1∶1.5,(d)10 subdivision drive of stepper motor,(e)20subdivision drive of stepper motor
通過對(duì)步進(jìn)電機(jī)在0負(fù)載的情況下的各個(gè)轉(zhuǎn)速區(qū)間進(jìn)行振蕩測(cè)試,得到圖6(a)的步進(jìn)電機(jī)振動(dòng)特性圖,其中實(shí)線代表使用傳統(tǒng)八拍步進(jìn)方式的振動(dòng)特性,虛線代表10細(xì)分驅(qū)動(dòng)的振動(dòng)特性。
從圖6(a)中可以看出在200 r/min以上的較高頻旋轉(zhuǎn)時(shí),兩種驅(qū)動(dòng)方式都能使步進(jìn)電機(jī)較平穩(wěn)的旋轉(zhuǎn),但是電機(jī)旋轉(zhuǎn)頻率在180 r/min以下后,以八拍方式驅(qū)動(dòng)的電機(jī)振蕩明顯加大,在轉(zhuǎn)速為40~100 r/min的低頻區(qū)間,振蕩幅度最大,達(dá)到0.6 mm,這個(gè)區(qū)間稱為步進(jìn)電機(jī)的共振區(qū)。而使用10細(xì)分驅(qū)動(dòng)的電機(jī)在40~100 r/min這個(gè)低頻旋轉(zhuǎn)區(qū)間,依舊能保持振蕩幅值在0.2 mm以下。說明了細(xì)分驅(qū)動(dòng)能有效緩解步進(jìn)電機(jī)在低頻旋轉(zhuǎn)時(shí)的振蕩問題。
圖6 步進(jìn)電機(jī):(a)振動(dòng)特性圖,(b)細(xì)分控制實(shí)物圖Fig.6 Stepping motor:(a)vibration characteristics diagram ,(b)physical map of subdivision control
圖6(b)為整個(gè)步進(jìn)電機(jī)細(xì)分控制系統(tǒng)的實(shí)物連接圖,由FPGA開發(fā)板,步進(jìn)電機(jī)驅(qū)動(dòng)模塊和四相步進(jìn)電機(jī)組成。
系統(tǒng)采用CycloneⅣ系列芯片EP4CE10F17C8,設(shè)計(jì)了步進(jìn)電機(jī)正弦脈寬調(diào)制細(xì)分驅(qū)動(dòng)電路,并使用L298N電機(jī)驅(qū)動(dòng)模塊對(duì)細(xì)分信號(hào)進(jìn)行隔離和功率放大,以便穩(wěn)定驅(qū)動(dòng)步進(jìn)電機(jī)。將FPGA開發(fā)板、步進(jìn)電機(jī)驅(qū)動(dòng)模塊和四相步進(jìn)電機(jī)連接組成一個(gè)完整的電機(jī)驅(qū)動(dòng)系統(tǒng),采用ModelSim軟件對(duì)驅(qū)動(dòng)電機(jī)的脈沖信號(hào)進(jìn)行仿真,可以直觀的看到步進(jìn)電機(jī)每一相脈沖信號(hào)的實(shí)時(shí)變化,且實(shí)驗(yàn)結(jié)果表明該系統(tǒng)有效緩解電機(jī)低頻運(yùn)行時(shí)的振動(dòng),使電機(jī)運(yùn)行更加平穩(wěn),具有一定的實(shí)用價(jià)值。