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