新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的步進(jìn)電機(jī)正弦波細(xì)分驅(qū)動(dòng)器設(shè)計(jì)

基于FPGA的步進(jìn)電機(jī)正弦波細(xì)分驅(qū)動(dòng)器設(shè)計(jì)

——
作者:李寧 時(shí)間:2007-08-16 來源:電子產(chǎn)品世界 收藏

摘  要:本設(shè)計(jì)應(yīng)用Altera 公司的Cyclone 系列的FPGA(現(xiàn)場(chǎng)可編程門陣列)實(shí)現(xiàn)了對(duì)步進(jìn)電機(jī)正弦波可變細(xì)分控制,并在FPGA中進(jìn)行了具體驗(yàn)證和實(shí)現(xiàn)。該方案綜合運(yùn)用了電流跟蹤型SPWM技術(shù)、PI調(diào)節(jié)、片上可編程系統(tǒng)SOPC技術(shù)、EDA技術(shù)等。步進(jìn)電機(jī)控制系統(tǒng)用FPGA實(shí)現(xiàn)了 軟核處理器與硬件邏輯電路集于一體,發(fā)揮了處理器的靈活性和數(shù)字邏輯電路高速性,有效地解決了步距角的高細(xì)分問題,細(xì)分?jǐn)?shù)最高達(dá)4096,而且細(xì)分?jǐn)?shù)可自動(dòng)調(diào)節(jié)。實(shí)驗(yàn)表明高細(xì)分大大提高了步進(jìn)電機(jī)的控制精度,降低了電機(jī)運(yùn)行噪聲消除了低頻振蕩。

關(guān)鍵詞:  ;細(xì)分;FPGA

1    引言

步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成相應(yīng)的角位移(或線位移)的機(jī)電元件,具有結(jié)構(gòu)簡(jiǎn)單堅(jiān)固耐用工作可靠的優(yōu)點(diǎn)因此廣泛應(yīng)用于工業(yè)控制領(lǐng)域。由于脈沖的不連續(xù)性又使步進(jìn)電機(jī)運(yùn)行存在許多不足之處,如低頻振蕩、噪聲大、分辨率不高及驅(qū)動(dòng)系統(tǒng)可靠性差等,嚴(yán)重制約了其應(yīng)用范圍。步進(jìn)電機(jī)的細(xì)分控制有效地解決了這一問題,但是傳統(tǒng)的步進(jìn)電機(jī)驅(qū)動(dòng)系統(tǒng)大多數(shù)采用的是用作為控制芯片,外加分立的數(shù)字邏輯電路和模擬電路構(gòu)成。受工作頻率的限制,細(xì)分?jǐn)?shù)不是很高,因此驅(qū)動(dòng)器的控制精度較低,控制性能不是很理想。隨著高性能數(shù)字信號(hào)處理器DSP的出現(xiàn),以DSP為控制核心,以軟件方式實(shí)現(xiàn)電機(jī)控制一度成為研究的熱點(diǎn)。近年來隨著可編程邏輯器件的飛速發(fā)展,使得可編程邏輯器件功能越來越強(qiáng)大從而促使高集成化高精度驅(qū)動(dòng)器的出現(xiàn)。因此本文提出了一種基于SOPC片上可編程的全數(shù)字化步進(jìn)電機(jī)控制系統(tǒng),本系統(tǒng)是以FPGA為核心控制器件,將驅(qū)動(dòng)邏輯功能模塊和控制器成功地集成在FPGA上實(shí)現(xiàn),充分發(fā)揮了硬件邏輯電路對(duì)數(shù)字信號(hào)高速的并行處理能力,可以使步進(jìn)電機(jī)繞組電流細(xì)分達(dá)到4096,且細(xì)分?jǐn)?shù)可以自動(dòng)調(diào)節(jié),極大地提高了控制精度和驅(qū)動(dòng)器的集成度,減小了驅(qū)動(dòng)器體積。

2    步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)原理

步進(jìn)電機(jī)的細(xì)分控制本質(zhì)上是對(duì)步進(jìn)電機(jī)勵(lì)磁繞組中的電流進(jìn)行控制,在普通驅(qū)動(dòng)方式下,驅(qū)動(dòng)電路只是通過對(duì)電動(dòng)機(jī)繞組激磁電流的“開”和“關(guān)”,使步進(jìn)電動(dòng)機(jī)轉(zhuǎn)子以其本身的步距角分步旋轉(zhuǎn)。步進(jìn)電動(dòng)機(jī)靠定子、轉(zhuǎn)子磁極間的電磁力來進(jìn)行工作,當(dāng)它處于“雙拍”狀態(tài)工作時(shí),其定位位置是正好位于兩通電磁極的中間,即依靠?jī)赏姶艠O電磁吸引力的平衡而獲得的。由此可以推論:如果能夠進(jìn)一步仔細(xì)地控制兩磁極電磁吸引力的大小,使轉(zhuǎn)子磁極獲得更多種由于兩相定子磁極的電磁吸引力差異而形成的平衡定位位置。步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)方式就是應(yīng)用了這一原理,在細(xì)分驅(qū)動(dòng)時(shí),細(xì)分控制器通過控制各相激磁繞組電流的逐步增大及逐步減小,讓轉(zhuǎn)子處于多個(gè)磁力平衡狀態(tài)使電機(jī)內(nèi)部的合成磁場(chǎng)為均勻的圓形旋轉(zhuǎn)磁場(chǎng),實(shí)現(xiàn)步距角變小、電動(dòng)機(jī)的旋轉(zhuǎn)得到細(xì)化的目的。合成的磁場(chǎng)矢量的幅值決定了電機(jī)旋轉(zhuǎn)力矩的大小,相鄰兩個(gè)合成磁場(chǎng)矢量的夾角大小決定了該步距角的大小。對(duì)于三相步進(jìn)電機(jī)而言,向A、B、C繞組分別通以相位相差2/3π,而幅值相同的正弦波電流(圖1),則合成的電流矢量在空間做幅值恒定的旋轉(zhuǎn)運(yùn)動(dòng),其對(duì)應(yīng)的合成磁場(chǎng)矢量也作相應(yīng)的旋轉(zhuǎn)從而形成旋轉(zhuǎn)力矩(圖2)。

A、B、C三相瞬時(shí)電流值如式(1)、(2)、(3)所示。

(1)

(2)

(3)

圖1 步進(jìn)電機(jī)正弦細(xì)分三相繞組電流波形圖

圖2旋轉(zhuǎn)力矩圖 

細(xì)分驅(qū)動(dòng)方式下,由于步距角小,步進(jìn)電機(jī)的控制精度明顯提高,同時(shí)這種驅(qū)動(dòng)方式又有效抑制低速運(yùn)行中產(chǎn)生的噪聲和振蕩現(xiàn)象。
 
3    控制器總體設(shè)計(jì)方案

步進(jìn)電機(jī)三相繞組的電流是正弦階梯電流,通過改變給定電流的每一次變化的階梯數(shù)可以實(shí)現(xiàn)可變細(xì)分功能。驅(qū)動(dòng)器的任務(wù)就是控制繞組的電流,使之按正弦階梯波的規(guī)律變化。每給一個(gè)步進(jìn)脈沖,A、B、C三相繞組的電流沿正弦階梯波前進(jìn)一步,電機(jī)轉(zhuǎn)動(dòng)一個(gè)步距角。步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)主回路圖如圖3所示IA、IB為兩個(gè)霍爾元件。圖中6個(gè)IGBT集成在電源控制模塊IPM內(nèi)。

圖3 步進(jìn)電動(dòng)機(jī)驅(qū)動(dòng)主回路圖

步進(jìn)電機(jī)控制系統(tǒng)框圖如圖4所示。采用FPGA作為主控制芯片, 將控制器與驅(qū)動(dòng)器的數(shù)字電路部分集成在一片F(xiàn)PGA上實(shí)現(xiàn)。為了控制繞組電流,在設(shè)計(jì)中引入電流跟蹤型閉環(huán)反饋,反饋電流與給定的正弦電流(離散的正弦表)經(jīng)過改進(jìn)的比例積分PI調(diào)節(jié)后進(jìn)行SPWM調(diào)制,輸出6路PWM波,來控制驅(qū)動(dòng)電路三個(gè)橋臂上的6個(gè)IGBT開通關(guān)斷。如果忽略死區(qū)時(shí)間控制每個(gè)橋臂的上下半橋的兩路PWM波互補(bǔ)即上半橋PWM波為高/低電平時(shí),下半橋PWM波為低/高電平。系統(tǒng)采用14位寬度200MHz計(jì)數(shù)器產(chǎn)生PWM載波,載波頻率12.2KHz,電流數(shù)據(jù)全部采用14位精度進(jìn)行離散化。200MHz時(shí)鐘由50MHz時(shí)鐘經(jīng)PLL倍頻產(chǎn)生。FPGA輸出的PWM波經(jīng)功率模塊放大后,控制步進(jìn)電機(jī)運(yùn)行。步進(jìn)電機(jī)運(yùn)行狀態(tài)(轉(zhuǎn)速和轉(zhuǎn)向)通過LED指示。步進(jìn)電機(jī)轉(zhuǎn)速是由查表速度決定的,CP是用來決定查表頻率,在細(xì)分等級(jí)一定的情況下CP速度越高電機(jī)轉(zhuǎn)速越快。如果電機(jī)在高細(xì)分下高速旋轉(zhuǎn)則CP脈沖頻率就會(huì)很高,導(dǎo)致PWM脈寬過小,使功率模塊IGBT控制橋臂頻繁開關(guān),其結(jié)果是開關(guān)損耗大為增加,功率模塊過熱。而高細(xì)分在步進(jìn)電機(jī)高速旋轉(zhuǎn)時(shí)其優(yōu)勢(shì)并不明顯,所以在不影響電機(jī)運(yùn)行精度的情況下,系統(tǒng)根據(jù)轉(zhuǎn)速對(duì)細(xì)分精度在4096、2048、1024、512、256、128、64、32之間自動(dòng)調(diào)節(jié),使電機(jī)更加平穩(wěn)可靠的運(yùn)行。

圖4 控制系統(tǒng)框圖

3.1  FPGA結(jié)構(gòu)設(shè)計(jì)

本系統(tǒng)是由集成在系統(tǒng)采用層次化開發(fā)方式,頂層模塊由多個(gè)子模塊組合而成,F(xiàn)PGA設(shè)計(jì)系統(tǒng)框圖如圖5所示。系統(tǒng)由 II微處理器模塊和數(shù)字邏輯模塊組成。

圖5 FPGA設(shè)計(jì)系統(tǒng)框圖

控制器采Nios II的32位CPU軟核,由SOPC Builder 生成。用來接收外界控制信號(hào)并把信號(hào)處理后送給脈沖發(fā)生器,并通過輸出端口控制LED來指示系統(tǒng)工作情況。系統(tǒng)頂層設(shè)計(jì)圖如圖6所示,系統(tǒng)由CPU軟核(stepmotor_controller、CP發(fā)生器(PatternGenerator)、正弦查表控制模塊(interface)、A/D電流采樣模塊(currenttop)、C相電流計(jì)算模塊(Current_c)調(diào)節(jié)模塊、PI調(diào)節(jié)模塊(pimodule)、PWM發(fā)生模塊(PWM)組成,各模塊功能如下:

CPU:接受外界控制信號(hào)把信號(hào)處理后得到相應(yīng)的細(xì)分等級(jí)和與速度對(duì)應(yīng)的控制信號(hào)送給CP發(fā)生器,把轉(zhuǎn)向信號(hào)處理后送到查表控制模塊,并把轉(zhuǎn)速和轉(zhuǎn)向信號(hào)送到LED數(shù)碼管和發(fā)光二極管來指示電機(jī)運(yùn)行情況;

CP發(fā)生器:接受轉(zhuǎn)速控制信號(hào)發(fā)出與轉(zhuǎn)速相對(duì)應(yīng)的CP脈沖并給出相應(yīng)轉(zhuǎn)速下對(duì)應(yīng)的最佳細(xì)分等級(jí);
正弦查表控制模塊:根據(jù)CP脈沖和細(xì)分等級(jí)進(jìn)行查表產(chǎn)生參考電流,根據(jù)轉(zhuǎn)向控制信號(hào)來決定查表方向來實(shí)現(xiàn)轉(zhuǎn)向控制;

A/D電流采樣模塊:采集步進(jìn)電機(jī)A、B兩相電流值;

C相電流計(jì)算模塊:根據(jù)基爾霍夫電流定律A、B、C三相電流之和為零,由A/D采集的A、B兩相的電流計(jì)算出C相電流;

PI調(diào)節(jié)模塊:將參考正弦電流與反饋電流差值進(jìn)行PI調(diào)節(jié),把調(diào)節(jié)后的控制信號(hào),為了防止IPM內(nèi)上下半橋的IGBT同時(shí)導(dǎo)通,導(dǎo)致IPM短路,PI模塊內(nèi)設(shè)置的了死區(qū)時(shí)間。 

圖6 系統(tǒng)頂層設(shè)計(jì)圖

頂層接口說明: 
AD_in_a、AD_in_b 是    AD1674轉(zhuǎn)換輸出的數(shù)字信號(hào);
AD_CE、AD_RD、AD_STS為AD的控制信號(hào);
clk、reset分別為系統(tǒng)時(shí)鐘輸入端口和系統(tǒng)復(fù)位端口;
enable端口是PWM發(fā)生器使能端,功率模塊溫度過高熱保護(hù)就會(huì)動(dòng)作將enable置0停止發(fā)出PWM波,保護(hù)驅(qū)動(dòng)器;
setspeet、rotate_dirc分別為轉(zhuǎn)速和轉(zhuǎn)向控制端口;
led_sel、speeddisplay、led_indicator為工作情況指示電路;
pl_a、ph_a、pl_b、ph_b、pl_c、ph_c為A、B、C三相橋臂的上下半橋控制端;

3.2 Nios II軟核設(shè)計(jì)

在本控制器中利用CPU控制靈活的功能用來接受并處理外界控制號(hào)再將處理過的控制信號(hào)送到各個(gè)功能模塊,因此Nios II軟核采用了經(jīng)濟(jì)型即Nios II/e,加入了用于輸入輸出端口(PIO)、片上存儲(chǔ)器模塊(On chip Memory)??刂破鞒绦蛄鞒虉D軟件程序工作流程如圖7所示。 

圖7  CPU控制流程圖

CPU內(nèi)部程序采用C++語言編寫,并對(duì)電機(jī)的控制狀態(tài)建立類。通過對(duì)電機(jī)的控制狀態(tài)對(duì)象的操作,即可輸出各種控制命令到接口模塊和CP脈沖發(fā)生模塊,控制電機(jī)狀態(tài);同時(shí)在程序主循環(huán)中監(jiān)視用戶的各種輸入,更新電機(jī)的控制狀態(tài)對(duì)象的成員變量。

3.3 CP發(fā)生器模塊和查表控制模塊

PatternGenerator模塊根據(jù)設(shè)置的電機(jī)轉(zhuǎn)速產(chǎn)生相應(yīng)的CP脈沖和在該轉(zhuǎn)速下的最適宜的細(xì)分等級(jí),并把這些信號(hào)傳送給查表控制模塊。CP發(fā)生器模塊和查表控制模塊如圖8所示。 

圖8 CP 發(fā)生器模塊和查表控制模塊

查表控制模塊(interface)內(nèi)部例化了一個(gè)只讀存儲(chǔ)器,存放一個(gè)周期的正弦數(shù)據(jù)表。正弦表數(shù)據(jù)寬度與系統(tǒng)數(shù)據(jù)流數(shù)據(jù)寬度一致,因此選擇14位寬度。正弦表深度決定了驅(qū)動(dòng)器的最大細(xì)分等級(jí),關(guān)系式表示為:NMAX=2N,當(dāng)N=12時(shí),達(dá)到最高細(xì)分等級(jí)4096細(xì)分。外部輸入CP和CCW信號(hào)后,通過順序的給出三相繞組對(duì)應(yīng)的地址數(shù)據(jù),即可查得三相相電流的給定數(shù)據(jù),并同時(shí)更新三個(gè)給定數(shù)據(jù)寄存器,送入下一個(gè)環(huán)節(jié)。轉(zhuǎn)向交換也在本模塊實(shí)現(xiàn)。輸入的CCW信號(hào)將控制一個(gè)路選擇器,控制正弦表的查表方向來改變步進(jìn)電機(jī)轉(zhuǎn)向。本模塊通過輸入的細(xì)分等級(jí)信號(hào)和CP脈沖信號(hào)共同決定三相繞組的地址數(shù)據(jù)的每次增量大小。當(dāng)細(xì)分等級(jí)最高時(shí),地址計(jì)數(shù)器每次增1或減1;當(dāng)處于非最高細(xì)分精度時(shí),地址計(jì)數(shù)器每次遞增2的N次冪,N由當(dāng)前的細(xì)分等級(jí)確定。

3.4 AD采樣模塊與C相電流計(jì)算模塊

步進(jìn)電機(jī)A、B兩相電流通過霍爾元件進(jìn)行采集,AD采樣模塊通過采集采樣電阻上的電壓來將電機(jī)A、B兩相電流的模擬量轉(zhuǎn)換為數(shù)字量,C相電流模塊由基爾霍夫電流定律ia+ib+ic=0計(jì)算得到。圖9為兩模塊的端口。

圖9 AD采樣模塊與C相電流計(jì)算模塊

3.5 PI調(diào)節(jié)模塊

PI調(diào)節(jié)模塊是對(duì)給定數(shù)據(jù)和反饋數(shù)據(jù)進(jìn)行離散化PI調(diào)節(jié)。模塊的數(shù)據(jù)寬度統(tǒng)一為14位,即給定數(shù)據(jù)/反饋數(shù)據(jù)/控制數(shù)據(jù)都用14位寬度無符號(hào)整型數(shù)據(jù)表示。本模塊實(shí)現(xiàn)一個(gè)PI控制器功能,如圖10所示。

圖10  PI控制邏輯框圖

PI調(diào)節(jié)離散化公式如(4)式所示。

I(K)=I(K-1)+KP*(E(K)-E(K-1))+KI*E(K)                  (4)

其中,1500≤I(K)≤14384,I(0) = 8192,E(K)=IREF-IOUT

模塊在收到啟動(dòng)信號(hào)后,先寄存給定數(shù)據(jù)/反饋數(shù)據(jù),再對(duì)二者擴(kuò)寬符號(hào)位做有符號(hào)減法,并啟動(dòng)KI乘法器計(jì)算KI乘以誤差e的結(jié)果。對(duì)減法的計(jì)算結(jié)果取絕對(duì)值,并與閥值作比較(常數(shù)比較器),比較的結(jié)果存入寄存器。計(jì)算e的誤差增量,即E(K)-E(K-1) ,并用KP乘法器計(jì)算KP乘以誤差增量的結(jié)果。將KI乘法器計(jì)算的結(jié)果先送入累加器,然后再將KP乘法器計(jì)算的結(jié)果送入累加器;模塊的累加器在每次累加的時(shí)候會(huì)進(jìn)行溢出處理和數(shù)據(jù)超出邊界處理,無論哪種情況都會(huì)置為邊界值(最大/最小值)。 
 
3.6 PWM發(fā)生器模塊

PWM發(fā)生器模塊將PI調(diào)節(jié)后輸出的數(shù)據(jù)轉(zhuǎn)化為PWM波形輸出給IGBT模塊,通過IGBT的通斷切換調(diào)整相電壓,進(jìn)而改變相電流按照給定進(jìn)行變化。PWM波形的生成是通過將給定控制數(shù)據(jù)和載波數(shù)據(jù)比較,通過比較二者大小情況確定PWM的高低電平,實(shí)現(xiàn)PWM調(diào)制,如圖11所示。 

圖11 PWM模塊總體框圖

鋸齒波作為PWM載波,驅(qū)動(dòng)時(shí)鐘頻率為200MHz,14位寄存器寬度。為減少計(jì)數(shù)器的進(jìn)位鏈長(zhǎng)度,采用計(jì)數(shù)器,拆分為3位計(jì)數(shù)器和11位計(jì)數(shù)器,減少了組合邏輯延遲。死區(qū)保護(hù)發(fā)生器模塊根據(jù)給定的死區(qū)長(zhǎng)度數(shù)據(jù),將輸入的PWM信號(hào)輸出為PH和PL信號(hào),分別對(duì)應(yīng)IGBT的上下橋臂,并在PH和PL數(shù)據(jù)的變沿插入死區(qū)保護(hù)(同時(shí)置為低電平)。插入的死區(qū)保護(hù)是通過上升計(jì)數(shù)器和下降計(jì)數(shù)器來實(shí)現(xiàn)的,保證上橋臂和下橋臂不同時(shí)導(dǎo)通。

4仿真結(jié)果

對(duì)PWM模塊進(jìn)行功能仿真,仿真波形如圖12所示。經(jīng)分析,六路PWM波滿足時(shí)序和死區(qū)保護(hù)的要求,實(shí)現(xiàn)了設(shè)計(jì)所要達(dá)到的目。將圖12進(jìn)行放大可見IGBT死區(qū)如圖13所示。 

圖12 PWM功能仿真波形

圖13  IGBT控制信號(hào)死區(qū)

5電機(jī)運(yùn)行波形及分析

把FPGA配置好之后,對(duì)系統(tǒng)調(diào)試電機(jī)運(yùn)行時(shí)三相電流波形如圖14所示,電機(jī)換向時(shí)進(jìn)行反轉(zhuǎn)查表,電機(jī)轉(zhuǎn)速反轉(zhuǎn)波形如圖15所示。 

圖14 步進(jìn)電機(jī)運(yùn)行時(shí)三相電流

圖15 步進(jìn)電機(jī)反轉(zhuǎn)時(shí)電流波形

實(shí)驗(yàn)結(jié)果表明步進(jìn)電機(jī)運(yùn)行時(shí)三相電流相位差120度,三相電流為正弦波,電機(jī)運(yùn)行平穩(wěn),電機(jī)反轉(zhuǎn)時(shí)進(jìn)行反相查表,轉(zhuǎn)換方向時(shí)反應(yīng)時(shí)間短,電流波動(dòng)小。

6結(jié)論

本控制器采用Altera 公司嵌入Nios II處理器軟核的FPGA實(shí)現(xiàn)了步進(jìn)電機(jī)正弦波可變細(xì)分控制,大大提高了系統(tǒng)的可靠性,降低了設(shè)計(jì)成本。

控制部分采用Nios II CPU軟核是系統(tǒng)控制更加方便靈活。CPU和各個(gè)控制模塊集成在單片F(xiàn)PGA內(nèi),使驅(qū)動(dòng)器集成度大為提高,減小了驅(qū)動(dòng)器的體積。大大提高了細(xì)分精度,實(shí)現(xiàn)了步進(jìn)電機(jī)在是低轉(zhuǎn)速下的4096高細(xì)分的運(yùn)行,消除了步進(jìn)電機(jī)存在的低頻振蕩問題,控制精度顯著提高,在高精密數(shù)控機(jī)床中有廣泛的應(yīng)用前景。 

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

電氣符號(hào)相關(guān)文章:電氣符號(hào)大全


fpga相關(guān)文章:fpga是什么


pwm相關(guān)文章:pwm是什么


c++相關(guān)文章:c++教程


霍爾傳感器相關(guān)文章:霍爾傳感器工作原理


負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理
塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理
霍爾傳感器相關(guān)文章:霍爾傳感器原理
絕對(duì)值編碼器相關(guān)文章:絕對(duì)值編碼器原理
脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉