1 引言 步進電機是一種將電脈沖信號轉換成相應的角位移(或線位移)的機電元件,具有結構簡單堅固耐用工作可靠的優點因此廣泛應用于工業控制領域。由于脈沖的不連續性又使步進電機運行存在許多不足之處,如低頻振蕩、噪聲大、分辨率不高及驅動系統可靠性差等,嚴重制約了其應用范圍。步進電機的細分控制有效地解決了這一問題,但是傳統的步進電機驅動系統大多數采用的是用單片機作為控制芯片,外加分立的數字邏輯電路和模擬電路構成。受單片機工作頻率的限制,細分數不是很高,因此驅動器的控制精度較低,控制性能不是很理想。隨著高性能數字信號處理器DSP的出現,以DSP為控制核心,以軟件方式實現電機控制一度成為研究的熱點。近年來隨著可編程邏輯器件的飛速發展,使得可編程邏輯器件功能越來越強大從而促使高集成化高精度驅動器的出現。因此本文提出了一種基于SOPC片上可編程的全數字化步進電機控制系統,本系統是以FPGA為核心控制器件,將驅動邏輯功能模塊和控制器成功地集成在FPGA上實現,充分發揮了硬件邏輯電路對數字信號高速的并行處理能力,可以使步進電機繞組電流細分達到4096,且細分數可以自動調節,極大地提高了控制精度和驅動器的集成度,減小了驅動器體積。 2 步進電機細分驅動原理 步進電機的細分控制本質上是對步進電機勵磁繞組中的電流進行控制,在普通驅動方式下,驅動電路只是通過對電動機繞組激磁電流的“開”和“關”,使步進電動機轉子以其本身的步距角分步旋轉。步進電動機靠定子、轉子磁極間的電磁力來進行工作,當它處于“雙拍”狀態工作時,其定位位置是正好位于兩通電磁極的中間,即依靠兩通電磁極電磁吸引力的平衡而獲得的。由此可以推論:如果能夠進一步仔細地控制兩磁極電磁吸引力的大小,使轉子磁極獲得更多種由于兩相定子磁極的電磁吸引力差異而形成的平衡定位位置。步進電機細分驅動方式就是應用了這一原理,在細分驅動時,細分控制器通過控制各相激磁繞組電流的逐步增大及逐步減小,讓轉子處于多個磁力平衡狀態使電機內部的合成磁場為均勻的圓形旋轉磁場,實現步距角變小、電動機的旋轉得到細化的目的。合成的磁場矢量的幅值決定了電機旋轉力矩的大小,相鄰兩個合成磁場矢量的夾角大小決定了該步距角的大小。對于三相步進電機而言,向A、B、C繞組分別通以相位相差2/3π,而幅值相同的正弦波電流(圖1),則合成的電流矢量在空間做幅值恒定的旋轉運動,其對應的合成磁場矢量也作相應的旋轉從而形成旋轉力矩(圖2)。 A、B、C三相瞬時電流值如式(1)、(2)、(3)所示。 (1) (2) (3) 圖1 步進電機正弦細分三相繞組電流波形圖 圖2旋轉力矩圖 細分驅動方式下,由于步距角小,步進電機的控制精度明顯提高,同時這種驅動方式又有效抑制低速運行中產生的噪聲和振蕩現象。 3控制器總體設計方案 步進電機三相繞組的電流是正弦階梯電流,通過改變給定電流的每一次變化的階梯數可以實現可變細分功能。驅動器的任務就是控制繞組的電流,使之按正弦階梯波的規律變化。每給一個步進脈沖,A、B、C三相繞組的電流沿正弦階梯波前進一步,電機轉動一個步距角。步進電動機驅動主回路圖如圖3所示IA、IB為兩個霍爾元件。圖中6個IGBT集成在電源控制模塊IPM內。 圖3步進電動機驅動主回路圖 步進電機控制系統框圖如圖4所示。采用FPGA作為主控制芯片,將控制器與驅動器的數字電路部分集成在一片FPGA上實現。為了控制繞組電流,在設計中引入電流跟蹤型閉環反饋,反饋電流與給定的正弦電流(離散的正弦表)經過改進的比例積分PI調節后進行SPWM調制,輸出6路PWM波,來控制驅動電路三個橋臂上的6個IGBT開通關斷。如果忽略死區時間控制每個橋臂的上下半橋的兩路PWM波互補即上半橋PWM波為高/低電平時,下半橋PWM波為低/高電平。系統采用14位寬度200MHz計數器產生PWM載波,載波頻率12.2KHz,電流數據全部采用14位精度進行離散化。200MHz時鐘由50MHz時鐘經PLL倍頻產生。FPGA輸出的PWM波經功率模塊放大后,控制步進電機運行。步進電機運行狀態(轉速和轉向)通過LED指示。步進電機轉速是由查表速度決定的,CP是用來決定查表頻率,在細分等級一定的情況下CP速度越高電機轉速越快。如果電機在高細分下高速旋轉則CP脈沖頻率就會很高,導致PWM脈寬過小,使功率模塊IGBT控制橋臂頻繁開關,其結果是開關損耗大為增加,功率模塊過熱。而高細分在步進電機高速旋轉時其優勢并不明顯,所以在不影響電機運行精度的情況下,系統根據轉速對細分精度在4096、2048、1024、512、256、128、64、32之間自動調節,使電機更加平穩可靠的運行。 圖4 控制系統框圖 3.1FPGA結構設計 本系統是由集成在系統采用層次化開發方式,頂層模塊由多個子模塊組合而成,FPGA設計系統框圖如圖5所示。系統由NiosII微處理器模塊和數字邏輯模塊組成。 圖5 FPGA設計系統框圖 控制器采NiosII的32位CPU軟核,由SOPCBuilder生成。用來接收外界控制信號并把信號處理后送給脈沖發生器,并通過輸出端口控制LED來指示系統工作情況。系統頂層設計圖如圖6所示,系統由CPU軟核(stepmotor_controller、CP發生器(PatternGenerator)、正弦查表控制模塊(interface)、A/D電流采樣模塊(currenttop)、C相電流計算模塊(Current_c)調節模塊、PI調節模塊(pimodule)、PWM發生模塊(PWM)組成,各模塊功能如下: CPU:接受外界控制信號把信號處理后得到相應的細分等級和與速度對應的控制信號送給CP發生器,把轉向信號處理后送到查表控制模塊,并把轉速和轉向信號送到LED數碼管和發光二極管來指示電機運行情況; CP發生器:接受轉速控制信號發出與轉速相對應的CP脈沖并給出相應轉速下對應的最佳細分等級; 正弦查表控制模塊:根據CP脈沖和細分等級進行查表產生參考電流,根據轉向控制信號來決定查表方向來實現轉向控制; A/D電流采樣模塊:采集步進電機A、B兩相電流值; C相電流計算模塊:根據基爾霍夫電流定律A、B、C三相電流之和為零,由A/D采集的A、B兩相的電流計算出C相電流; PI調節模塊:將參考正弦電流與反饋電流差值進行PI調節,把調節后的控制信號,為了防止IPM內上下半橋的IGBT同時導通,導致IPM短路,PI模塊內設置的了死區時間。 圖6 系統頂層設計圖 頂層接口說明: AD_in_a、AD_in_b是AD1674轉換輸出的數字信號; AD_CE、AD_RD、AD_STS為AD的控制信號; clk、reset分別為系統時鐘輸入端口和系統復位端口; enable端口是PWM發生器使能端,功率模塊溫度過高熱保護就會動作將enable置0停止發出PWM波,保護驅動器; setspeet、rotate_dirc分別為轉速和轉向控制端口; led_sel、speeddisplay、led_indicator為工作情況指示電路; pl_a、ph_a、pl_b、ph_b、pl_c、ph_c為A、B、C三相橋臂的上下半橋控制端; 3.2NiosII軟核設計 在本控制器中利用CPU控制靈活的功能用來接受并處理外界控制號再將處理過的控制信號送到各個功能模塊,因此NiosII軟核采用了經濟型即NiosII/e,加入了用于輸入輸出端口(PIO)、片上存儲器模塊(OnchipMemory)。控制器程序流程圖軟件程序工作流程如圖7所示。 圖7CPU控制流程圖 CPU內部程序采用C++語言編寫,并對電機的控制狀態建立類。通過對電機的控制狀態對象的操作,即可輸出各種控制命令到接口模塊和CP脈沖發生模塊,控制電機狀態;同時在程序主循環中監視用戶的各種輸入,更新電機的控制狀態對象的成員變量。 3.3CP發生器模塊和查表控制模塊 PatternGenerator模塊根據設置的電機轉速產生相應的CP脈沖和在該轉速下的最適宜的細分等級,并把這些信號傳送給查表控制模塊。CP發生器模塊和查表控制模塊如圖8所示。 圖8CP發生器模塊和查表控制模塊 查表控制模塊(interface)內部例化了一個只讀存儲器,存放一個周期的正弦數據表。正弦表數據寬度與系統數據流數據寬度一致,因此選擇14位寬度。正弦表深度決定了驅動器的最大細分等級,關系式表示為:NMAX=2N,當N=12時,達到最高細分等級4096細分。外部輸入CP和CCW信號后,通過順序的給出三相繞組對應的地址數據,即可查得三相相電流的給定數據,并同時更新三個給定數據寄存器,送入下一個環節。轉向交換也在本模塊實現。輸入的CCW信號將控制一個路選擇器,控制正弦表的查表方向來改變步進電機轉向。本模塊通過輸入的細分等級信號和CP脈沖信號共同決定三相繞組的地址數據的每次增量大小。當細分等級最高時,地址計數器每次增1或減1;當處于非最高細分精度時,地址計數器每次遞增2的N次冪,N由當前的細分等級確定。 3.4AD采樣模塊與C相電流計算模塊 步進電機A、B兩相電流通過霍爾元件進行采集,AD采樣模塊通過采集采樣電阻上的電壓來將電機A、B兩相電流的模擬量轉換為數字量,C相電流模塊由基爾霍夫電流定律ia+ib+ic=0計算得到。圖9為兩模塊的端口。 圖9AD采樣模塊與C相電流計算模塊 3.5PI調節模塊 PI調節模塊是對給定數據和反饋數據進行離散化PI調節。模塊的數據寬度統一為14位,即給定數據/反饋數據/控制數據都用14位寬度無符號整型數據表示。本模塊實現一個PI控制器功能,如圖10所示。 圖10 PI控制邏輯框圖 PI調節離散化公式如(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 模塊在收到啟動信號后,先寄存給定數據/反饋數據,再對二者擴寬符號位做有符號減法,并啟動KI乘法器計算KI乘以誤差e的結果。對減法的計算結果取絕對值,并與閥值作比較(常數比較器),比較的結果存入寄存器。計算e的誤差增量,即E(K)-E(K-1),并用KP乘法器計算KP乘以誤差增量的結果。將KI乘法器計算的結果先送入累加器,然后再將KP乘法器計算的結果送入累加器;模塊的累加器在每次累加的時候會進行溢出處理和數據超出邊界處理,無論哪種情況都會置為邊界值(最大/最小值)。 3.6PWM發生器模塊 PWM發生器模塊將PI調節后輸出的數據轉化為PWM波形輸出給IGBT模塊,通過IGBT的通斷切換調整相電壓,進而改變相電流按照給定進行變化。PWM波形的生成是通過將給定控制數據和載波數據比較,通過比較二者大小情況確定PWM的高低電平,實現PWM調制,如圖11所示。 圖11 PWM模塊總體框圖 鋸齒波作為PWM載波,驅動時鐘頻率為200MHz,14位寄存器寬度。為減少計數器的進位鏈長度,采用計數器,拆分為3位計數器和11位計數器,減少了組合邏輯延遲。死區保護發生器模塊根據給定的死區長度數據,將輸入的PWM信號輸出為PH和PL信號,分別對應IGBT的上下橋臂,并在PH和PL數據的變沿插入死區保護(同時置為低電平)。插入的死區保護是通過上升計數器和下降計數器來實現的,保證上橋臂和下橋臂不同時導通。 4 仿真 對PWM模塊進行功能仿真,仿真波形如圖12所示。經分析,六路PWM波滿足時序和死區保護的要求,實現了設計所要達到的目。將圖12進行放大可見IGBT死區如圖13所示。 圖12PWM功能仿真波形 圖13IGBT控制信號死區 5 電機運行波形及分析 把FPGA配置好之后,對系統調試電機運行時三相電流波形如圖14所示,電機換向時進行反轉查表,電機轉速反轉波形如圖15所示。 圖14步進電機運行時三相電流 圖15步進電機反轉時電流波形 實驗結果表明步進電機運行時三相電流相位差120度,三相電流為正弦波,電機運行平穩,電機反轉時進行反相查表,轉換方向時反應時間短,電流波動小。 6 結論 本控制器采用Altera公司嵌入NiosII處理器軟核的FPGA實現了步進電機正弦波可變細分控制,大大提高了系統的可靠性,降低了設計成本。 控制部分采用NiosIICPU軟核是系統控制更加方便靈活。CPU和各個控制模塊集成在單片FPGA內,使驅動器集成度大為提高,減小了驅動器的體積。大大提高了細分精度,實現了步進電機在是低轉速下的4096高細分的運行,消除了步進電機存在的低頻振蕩問題,控制精度顯著提高,在高精密數控機床中有廣泛的應用前景。 |