閆兵兵
(上海黃浦船用儀器有限公司,上海 201109)
步進(jìn)電機(jī)驅(qū)動(dòng)控制的FPGA的實(shí)現(xiàn)
閆兵兵
(上海黃浦船用儀器有限公司,上海 201109)
利用Verilog語(yǔ)言進(jìn)行層次化設(shè)計(jì),對(duì)步進(jìn)電機(jī)的驅(qū)動(dòng)系統(tǒng)能夠?qū)崿F(xiàn)基于FPGA的控制。本文通過(guò)對(duì)步進(jìn)電機(jī)的驅(qū)動(dòng)控制原理分析,對(duì)步進(jìn)電機(jī)定位控制進(jìn)行整體設(shè)計(jì),既達(dá)到對(duì)步進(jìn)電機(jī)的驅(qū)動(dòng)控制,也優(yōu)化了傳統(tǒng)的系統(tǒng)結(jié)構(gòu)。系統(tǒng)具有修改方便、使用靈活、可靠性高、可移植、抗干擾和穩(wěn)定性強(qiáng)等優(yōu)點(diǎn),能夠提升產(chǎn)品質(zhì)量和市場(chǎng)競(jìng)爭(zhēng)力,具有廣闊的發(fā)展空間。
步進(jìn)電機(jī)驅(qū)動(dòng)控制FPGA模塊
步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)化為機(jī)械角位移或線位移的機(jī)電元件,每當(dāng)給步進(jìn)電機(jī)輸入一個(gè)脈沖信號(hào),它就相應(yīng)地轉(zhuǎn)動(dòng)一步。由于其具有成本低、易于精確控制、無(wú)累積誤差、快速響應(yīng)性好及可在很寬的范圍內(nèi)進(jìn)行平滑調(diào)速等優(yōu)點(diǎn),成為數(shù)控機(jī)床、打印機(jī)、繪圖儀、機(jī)器人控制等自動(dòng)控制和精密機(jī)械等領(lǐng)域中廣泛應(yīng)用的執(zhí)行元件。如何借助FPGA實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)運(yùn)轉(zhuǎn)的靈活、有效地控制成為研究的主要問(wèn)題。
采用現(xiàn)場(chǎng)可編程門(mén)陣列,通過(guò)Verilog語(yǔ)言編程來(lái)實(shí)現(xiàn)四相步進(jìn)電機(jī)的控制。由于VerilogHDL的靈活性,可以對(duì)FPGA器件進(jìn)行靈活的編程,實(shí)現(xiàn)復(fù)雜的控制算法,從而提高了控制性能,而且可以降低整個(gè)系統(tǒng)的體積和成本,增加系統(tǒng)的可靠性。
步進(jìn)電動(dòng)機(jī)作為一種自動(dòng)化執(zhí)行部件,通過(guò)電脈沖信號(hào)與數(shù)字系統(tǒng)結(jié)合,把脈沖數(shù)轉(zhuǎn)換成角位移,實(shí)現(xiàn)其機(jī)械的正轉(zhuǎn)、反轉(zhuǎn)、手動(dòng)和自動(dòng)控制。
步進(jìn)電動(dòng)機(jī)在其轉(zhuǎn)子、定子上都設(shè)計(jì)有許多的均勻分布的小齒,三個(gè)勵(lì)磁繞組設(shè)置在定子齒上,并使繞組的幾何軸線與轉(zhuǎn)子齒軸線依次分別錯(cuò)開(kāi)0て、1/3て、2 /3て,即A與齒1相對(duì)齊,齒2錯(cuò)開(kāi)向右B 1/3て,齒3錯(cuò)開(kāi)向右C 2/3て,齒5對(duì)齊A'。如圖1所示。
如A相通電,B、C相不通電時(shí),由于磁場(chǎng)作用,齒1與A對(duì)齊。同理如果以次給B、C相通電,每通一次電轉(zhuǎn)子都會(huì)轉(zhuǎn)動(dòng)1/3て。如再給A相通電,B、C相不通電,齒4與A對(duì)齊,向右移過(guò)1/3て,經(jīng)過(guò)A、B、C、A的轉(zhuǎn)子分別之處于通電狀態(tài),齒4移到A相,向右轉(zhuǎn)過(guò)一個(gè)齒距的電機(jī)轉(zhuǎn)子,如果按A、B、C、A方式不斷地通電,轉(zhuǎn)子因此每步向右旋轉(zhuǎn)1/3て。如按A、C、B、A方式進(jìn)行不斷地通電,轉(zhuǎn)子就自然反轉(zhuǎn)。
由導(dǎo)電次數(shù)和頻率決定轉(zhuǎn)子的位置和速度并形成一一對(duì)應(yīng)關(guān)系,導(dǎo)電順序決定方向??紤]到電機(jī)的噪音、平穩(wěn)、力矩和減少角度等諸多因素,本系統(tǒng)采用四相,八拍運(yùn)行(A-AB-B- BCC-CD-DDA-A),步距角為0.9度。
四相電動(dòng)機(jī)有3種激磁方式:
一相激磁法:當(dāng)目標(biāo)角度是90°的整數(shù)倍時(shí),采用這種方法。
二相激磁法:當(dāng)目標(biāo)角度是45°,135°,225°,315°的整數(shù)倍時(shí),采用這種方法。
一、二相激磁法:按照表1所示的信號(hào)順序。
根據(jù)步進(jìn)電機(jī)的控制基本原理,系統(tǒng)設(shè)計(jì)采用模塊化設(shè)計(jì)原則,按照現(xiàn)代EDA工程常用的“自上而下”的設(shè)計(jì)思想,進(jìn)行功能分離并按照層次設(shè)計(jì),用Verilog語(yǔ)言實(shí)現(xiàn)每個(gè)模塊功能,最后將所有的模塊進(jìn)行綜合,實(shí)現(xiàn)系統(tǒng)的整體功能。
波形仿真過(guò)程:
Modelsim SE6.2b型號(hào)能夠通過(guò)ISE9.1i完成下載、布線、布局、綜合。本電機(jī)定位控制系統(tǒng)分為驅(qū)動(dòng)、控制、顯示、輸入和分頻等模塊。實(shí)現(xiàn)電機(jī)轉(zhuǎn)子能夠定位控制,能夠按既定方向和角度旋轉(zhuǎn)等功能,得益于步進(jìn)電機(jī)的順序(A—B—C—D) 有規(guī)律地?fù)Q相及一個(gè)被八細(xì)分步距角的技術(shù)指標(biāo)。
在Spartan3 FPFA開(kāi)發(fā)板上,就可以實(shí)現(xiàn)整個(gè)系統(tǒng)的設(shè)計(jì)。
開(kāi)發(fā)板上選用3位數(shù)碼顯示來(lái)控制信息顯示,同時(shí)可以選用1個(gè)撥碼開(kāi)關(guān)按鍵和3個(gè)接觸式按鍵輸入系統(tǒng)控制內(nèi)容。電機(jī)轉(zhuǎn)動(dòng)角度的加計(jì)數(shù),減計(jì)數(shù)可以在2個(gè)接觸式按鍵操作下完成,并以十進(jìn)制方式,在低2位的數(shù)碼管上顯示。
另外,為了控制設(shè)置數(shù)據(jù)的有效性,專門(mén)需要1個(gè)撥碼開(kāi)關(guān),步進(jìn)電機(jī)的驅(qū)動(dòng)使能就能夠在最后一個(gè)接觸式開(kāi)關(guān)通過(guò)后實(shí)現(xiàn)。
分頻模塊屬于步進(jìn)電機(jī)驅(qū)動(dòng)控制系統(tǒng)的一個(gè)重要部分,主要是基于FPGA條件下,通過(guò)一定的技術(shù)手段和方式,對(duì)主時(shí)鐘進(jìn)行不同頻率的區(qū)分與整合,最終得到步進(jìn)電機(jī)能夠正常驅(qū)動(dòng)的頻率。
具體做法:FPGA開(kāi)發(fā)板上設(shè)置一個(gè)50MHz的有源晶振,計(jì)數(shù)器電路加入FPGA中,系統(tǒng)的頻率在累積的計(jì)數(shù)中,生產(chǎn)不斷的變化。板上的分頻電路在有源晶振的環(huán)境下,生成所要求的時(shí)鐘。
由于本系統(tǒng)設(shè)計(jì)所要求的步進(jìn)電機(jī)
由于存在空載牽出頻率大于800Hz,空載牽入頻率大于500Hz的系統(tǒng)設(shè)計(jì)要求,要達(dá)到步進(jìn)電機(jī)能夠正常驅(qū)動(dòng)所要求的頻率clk,必須對(duì)clk4(50MHz)進(jìn)行分頻。
分頻核心代碼如下:
步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)角度和轉(zhuǎn)動(dòng)方向的輸入是由輸入模塊來(lái)完成、控制的,如圖2顯示的內(nèi)容所示。按鍵1表示轉(zhuǎn)動(dòng)方向、按鍵2表示減計(jì)數(shù)、按鍵3表示加計(jì)數(shù)、按鍵4表示驅(qū)動(dòng)使能、方向—1表示正轉(zhuǎn),方向2代表反轉(zhuǎn)。
通過(guò)FPGA開(kāi)發(fā)板上數(shù)碼管的“1”與“2”的顯示,代表了電機(jī)旋轉(zhuǎn)的正反方向。板上兩個(gè)分別實(shí)現(xiàn)減計(jì)數(shù)和加計(jì)數(shù)的接觸式按鍵操作,可以實(shí)現(xiàn)轉(zhuǎn)動(dòng)角度,同時(shí),2位十進(jìn)制數(shù)能夠在低2位數(shù)碼管中得到顯示。如果需要步進(jìn)電機(jī)轉(zhuǎn)動(dòng)1個(gè)最小步進(jìn)腳,可以用十進(jìn)制1代表,同理,最多可控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)99個(gè)最小步距角就可以用十進(jìn)制的2來(lái)代表。5.624/64是本系統(tǒng)所使用的步進(jìn)電機(jī)的最小步距角。
表1 四相步進(jìn)電機(jī)的8個(gè)方向和電流以及電壓信號(hào)的關(guān)系表
圖1 定轉(zhuǎn)子的展開(kāi)圖
圖2 三段數(shù)碼管顯示
圖3 n級(jí)線性反饋移位寄存器結(jié)構(gòu)示意圖
(1)外部按鍵輸入模塊,其中按鍵輸入模塊又有顯示、計(jì)數(shù)器計(jì)數(shù)和防抖程序等模塊之分。通過(guò)分時(shí)復(fù)用技術(shù)實(shí)現(xiàn)三位數(shù)碼管顯示的顯示模塊;實(shí)現(xiàn)加減計(jì)數(shù)的是計(jì)數(shù)器模塊;保證不出現(xiàn)輸入錯(cuò)誤計(jì)數(shù)的是防抖程序模塊。
(2)一個(gè)隨機(jī)數(shù)輸入模塊在FPGA內(nèi)部產(chǎn)生,為實(shí)現(xiàn)步進(jìn)電機(jī)的隨機(jī)取樣轉(zhuǎn)動(dòng),需要一個(gè)作為驅(qū)動(dòng)模塊和控制模塊的輸入隨機(jī)數(shù),這個(gè)數(shù)由FPGA內(nèi)部產(chǎn)生的。
在FPGA內(nèi),產(chǎn)生偽隨機(jī)碼的方法有多種,線性反饋移位寄存器結(jié)構(gòu)(如圖3所示)所產(chǎn)生的序列隨機(jī)特性好、周期長(zhǎng)。且方式易實(shí)現(xiàn)、結(jié)構(gòu)亦簡(jiǎn)單。
由圖3可知,線性反饋移位寄存器的輸出是一個(gè)特征多項(xiàng)式的周期序列
控制模塊的主要是對(duì)復(fù)位信號(hào)、電機(jī)轉(zhuǎn)速等控制模塊外部的信息的處理。驅(qū)動(dòng)模塊得到控制模塊輸出的控制信號(hào),實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)驅(qū)動(dòng)控制。
(1)對(duì)來(lái)自輸入模塊的數(shù)據(jù)進(jìn)行有效的識(shí)別與處理,使數(shù)據(jù)的失效和有效時(shí)延得到控制。
(2)步進(jìn)電機(jī)轉(zhuǎn)子的每次停止和轉(zhuǎn)動(dòng)后,各相線圈所處位置得到有效控制,能夠保證電機(jī)的繼續(xù)轉(zhuǎn)動(dòng)是在上次停下的位置。核心代碼如下:
步進(jìn)電機(jī)的驅(qū)動(dòng)是靠給步進(jìn)電機(jī)的各相勵(lì)磁繞組輪流通以電流,實(shí)現(xiàn)步進(jìn)電機(jī)內(nèi)部磁場(chǎng)合成方向的變化來(lái)使步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的。驅(qū)動(dòng)模塊作用是接受來(lái)自控制模塊的控制信號(hào)即驅(qū)動(dòng)電流波形輸入個(gè)數(shù)。驅(qū)動(dòng)模塊的輸出波形一共有4 個(gè),分別驅(qū)動(dòng)步進(jìn)電機(jī)的4 個(gè)線圈A、B、C、D。
對(duì)步進(jìn)電機(jī)的驅(qū)動(dòng)采用四相八拍的運(yùn)行方式,其步距角是單拍制步距角的一半,因此,電路設(shè)計(jì)采用細(xì)分技術(shù),把步進(jìn)電機(jī)的步距角減小,把原來(lái)的一步分成若干步,其運(yùn)行近似地變?yōu)閯蛩龠\(yùn)動(dòng),明顯提高了步進(jìn)電機(jī)的分辨率;而且由于每一單步增量小,即使在諧振區(qū)也不容易失步,電機(jī)運(yùn)行平穩(wěn)、振動(dòng)小、噪聲低。
以FPGA芯片核心部件來(lái)控制步進(jìn)電機(jī)的驅(qū)動(dòng),通過(guò)軟件編程的方法,在一定范圍內(nèi)自由設(shè)定步進(jìn)電機(jī)的轉(zhuǎn)速,往返轉(zhuǎn)動(dòng)的角度以及轉(zhuǎn)動(dòng)次數(shù)等,還可以方便靈活地控制步進(jìn)電機(jī)的運(yùn)行狀態(tài), 滿足了不同用戶的要求。簡(jiǎn)單靈活、降低成本,又提高了系統(tǒng)的控制精度和系統(tǒng)的穩(wěn)定度。
[1]陳汝倬.基于FPGA的步進(jìn)電機(jī)控制器設(shè)計(jì)[J].科技信息,2009(8).
[2]余紅娟,潘松.FPGA在步進(jìn)電機(jī)任意細(xì)分驅(qū)動(dòng)中的應(yīng)用[J].杭州電子科技大學(xué)學(xué)報(bào),2005,25(3).
[3]陳建容,葉文才.基于FPGA的多模式步進(jìn)電機(jī)控制器的設(shè)計(jì)[J].集美大學(xué)學(xué)報(bào),2007,12(2).
[4]吳亮紅,成繼勛.基于CPLD的可控步進(jìn)電機(jī)分配器設(shè)計(jì)[J].控制工程,2005,12(1).