文常保,張穎超,李建華
(長安大學(xué) 電子與控制工程學(xué)院 微納電子研究所,陜西 西安710064)
對(duì)于軸轉(zhuǎn)運(yùn)動(dòng)的物體來說,轉(zhuǎn)動(dòng)頻率是最基本的電參數(shù)之一,因此測(cè)量轉(zhuǎn)動(dòng)頻率對(duì)于研究其運(yùn)動(dòng)狀態(tài)具有十分重要的意義[1,2]。目前,測(cè)量軸轉(zhuǎn)物體頻率一般采用單片機(jī)加邏輯處理器件的方法,這種方法系統(tǒng)構(gòu)成比較簡單,但存在測(cè)頻速度慢、準(zhǔn)確度低等問題[3]。
現(xiàn)場(chǎng) 可 編 程 門 陣 列 (FPGA)[4,5]是 在PAL、GAL、CPLD等可編程器件基礎(chǔ)上發(fā)展起來的一種新型物理器件,它可以根據(jù)設(shè)計(jì)需要,通過硬件描述語言,把FPGA 內(nèi)部的物理器件陣列連接起來,實(shí)現(xiàn)復(fù)雜數(shù)字系統(tǒng)設(shè)計(jì)的功能。與單片機(jī)相比,F(xiàn)PGA 具有并行處理、速度快、多管腳,以及容易實(shí)現(xiàn)大規(guī)模系統(tǒng)設(shè)計(jì)等眾多優(yōu)勢(shì)[6]。因此,F(xiàn)PGA被廣泛應(yīng)用于各種復(fù)雜數(shù)字電路及系統(tǒng)的設(shè)計(jì)。
本系統(tǒng)正是基于FPGA 的上述優(yōu)點(diǎn),將其用于軸轉(zhuǎn)物體轉(zhuǎn)速的測(cè)量,并以一個(gè)具體步進(jìn)電機(jī)為例,對(duì)該轉(zhuǎn)速測(cè)量系統(tǒng)進(jìn)行了實(shí)驗(yàn)和測(cè)試。
基于FPGA 的軸轉(zhuǎn)物體轉(zhuǎn)速測(cè)量系統(tǒng)主要由步進(jìn)電機(jī)及驅(qū)動(dòng)模塊、光電編碼器將物理量轉(zhuǎn)化為電量模塊和FPGA 數(shù)據(jù)處理與數(shù)碼管動(dòng)態(tài)顯示3個(gè)模塊組成,其系統(tǒng)結(jié)構(gòu)原理圖如圖1所示。
在工作狀態(tài)下,步進(jìn)電機(jī)及驅(qū)動(dòng)模塊中的驅(qū)動(dòng)步進(jìn)電機(jī)可以以預(yù)設(shè)的速度轉(zhuǎn)動(dòng)以產(chǎn)生所需待測(cè)量,然后通過光電編碼器將物理量轉(zhuǎn)化為電量模塊中的光電編碼傳感器將此物理量轉(zhuǎn)化為電量,并最終在FPGA 數(shù)據(jù)處理與數(shù)碼管動(dòng)態(tài)顯示模塊中利用FPGA 將電量進(jìn)行數(shù)據(jù)處理,計(jì)算出轉(zhuǎn)速,并將測(cè)量結(jié)果顯示在數(shù)碼管上。
圖1 基于FPGA 的軸轉(zhuǎn)物體轉(zhuǎn)速測(cè)量系統(tǒng)
步進(jìn)電機(jī)及驅(qū)動(dòng)模塊由單片機(jī)、電源、LCD 顯示屏、矩陣按鍵和步進(jìn)電機(jī)5部分組成,模塊結(jié)構(gòu)如圖2所示。
圖2 步進(jìn)電機(jī)及驅(qū)動(dòng)模塊結(jié)構(gòu)
系統(tǒng)運(yùn)行中,模塊中的單片機(jī)通過IO 口生成預(yù)設(shè)的脈沖頻率,步進(jìn)電機(jī)在接受脈沖后開始轉(zhuǎn)動(dòng),每接受一個(gè)脈沖步進(jìn)電機(jī)轉(zhuǎn)動(dòng)1.8度,所以使用步進(jìn)電機(jī)可以得到精確的預(yù)設(shè)角速度。當(dāng)按下不同的矩陣按鍵時(shí),可以控制單片機(jī)升高或降低預(yù)設(shè)脈沖頻率,并且把設(shè)定好的脈沖頻率轉(zhuǎn)化成轉(zhuǎn)動(dòng)頻率和角速度顯示在LCD 上以方便與后期FPGA測(cè)量結(jié)果相對(duì)比。因此,在實(shí)際工作中步進(jìn)電機(jī)及驅(qū)動(dòng)模塊,可以通過改變脈沖頻率來控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)角速度,達(dá)到為系統(tǒng)生成各種轉(zhuǎn)動(dòng)角速度待測(cè)物理量目的。
系統(tǒng)的傳感器采用機(jī)械透射式光柵、紅外光電開關(guān)設(shè)計(jì)的光電編碼器,這種光電編碼器的具有結(jié)構(gòu)簡單、可靠性高的特點(diǎn)[7-9]。光電編碼器結(jié)構(gòu)示意圖如圖3所示,它主要有兩部分組成,一部分是光電開關(guān),另一部分是碼盤。光電開關(guān)一端是紅外線發(fā)射器,另一端是光敏三極管接收器;圓形的碼盤上面等分了100個(gè)光柵,紅外線可以透過光柵,射在接收器上。
碼盤被固定在步進(jìn)電機(jī)上,且與轉(zhuǎn)軸垂直,隨著轉(zhuǎn)動(dòng)不斷切割紅外線,光敏三極管接收器會(huì)不斷產(chǎn)生一對(duì)正交的方波脈沖,如圖4所示。因此,步進(jìn)電機(jī)每轉(zhuǎn)一圈,光電編碼器產(chǎn)生100個(gè)脈沖,分辨率可達(dá)到360°/100,即一個(gè)脈沖周期表示轉(zhuǎn)了3.6°。
為了將輸出的波形高電平穩(wěn)定在3.3v,這里采用AMS1117系列穩(wěn)壓芯片對(duì)波形進(jìn)行進(jìn)一步的整形和穩(wěn)壓。
根據(jù)基于FPGA 的軸轉(zhuǎn)物體轉(zhuǎn)速測(cè)量系統(tǒng)中FPGA 數(shù)據(jù)處理與數(shù)碼管顯示模塊的運(yùn)算、處理量和設(shè)計(jì)需求,這里選用Altera公司的CycloneII EP2C8Q208C8N 芯片[10]。
FPGA 數(shù)據(jù)處理與數(shù)碼管顯示模塊如圖5 所示。設(shè)計(jì)中頂層模塊采用的是原理圖編輯的方式,將每個(gè)子模塊用單線或總線連接起來。其中的每個(gè)子模塊用Verilog HDL硬件編程語言設(shè)計(jì)[11,12]。經(jīng)過綜合,硬件編程代碼生成特定的數(shù)字邏輯,并下載到FPGA 中,實(shí)現(xiàn)所需的功能設(shè)計(jì)。
圖5 FPGA 數(shù)據(jù)處理與數(shù)碼管顯示模塊
在實(shí)際測(cè)試中,待測(cè)信號(hào)A、B 經(jīng)過FPGA 預(yù)設(shè)的輸入引腳進(jìn)入系統(tǒng)內(nèi)部,然后根據(jù)這兩路脈沖信號(hào)的正交性,利用鑒相電路判斷電機(jī)轉(zhuǎn)動(dòng)方向。鑒相電路進(jìn)行相位測(cè)量的工作原理如圖6所示。
圖6 鑒相電路工作原理流程
因?yàn)锳、B脈沖的頻率完全一樣,所以在接下來計(jì)算頻率時(shí),僅分析其中一個(gè)脈沖。在一個(gè)脈寬為1s、對(duì)輸入信號(hào)脈沖計(jì)數(shù)允許的信號(hào) (以下均以 “閘門”代替)作用下,計(jì)數(shù)器開始計(jì)數(shù),1s后計(jì)數(shù)結(jié)束,計(jì)數(shù)器清零;在一個(gè)鎖存信號(hào)lock_en的上升沿到來時(shí),計(jì)數(shù)器在前1s的計(jì)數(shù)的值存入鎖存器中;最終將鎖存值輸入到數(shù)碼管譯碼顯示模塊,顯示測(cè)得的頻率 (此結(jié)果為脈沖頻率,并非轉(zhuǎn)動(dòng)頻率)。計(jì)數(shù)值經(jīng)過鎖存器的目的是使顯示的數(shù)據(jù)穩(wěn)定,不會(huì)因?yàn)橹芷谛缘那辶阈盘?hào)而不斷閃爍。此外,如果光電編碼器一共N 個(gè)光柵,則步進(jìn)電機(jī)每轉(zhuǎn)一圈,產(chǎn)生N 個(gè)脈沖,所以測(cè)量的脈沖頻率縮小N 倍即為每秒步進(jìn)電機(jī)轉(zhuǎn)的圈數(shù)。本系統(tǒng)選用的是具有100光柵的光電編碼器,故沒有在FPGA 測(cè)頻模塊中添加復(fù)雜的100倍除法器模塊,而是直接在數(shù)碼管動(dòng)態(tài)掃描時(shí)點(diǎn)亮百位后面的小數(shù)點(diǎn),這樣既節(jié)約了FPGA 內(nèi)部資源,又避免了復(fù)雜計(jì)算的誤差。
在閘門到來時(shí),有可能出現(xiàn)被測(cè)信號(hào)前一個(gè)脈沖還沒結(jié)束、下一個(gè)脈沖還沒到來的情況,這樣就會(huì)出現(xiàn)±1 個(gè)脈沖的誤差,如圖7所示。為了避免這個(gè)誤差,用一個(gè)D觸發(fā)器使被測(cè)信號(hào)成為閘門控制的一個(gè)使能端。閘門生效時(shí),被測(cè)信號(hào)下一個(gè)上升沿到來時(shí)計(jì)數(shù)才能生效;閘門結(jié)束后,需等到當(dāng)前的被測(cè)信號(hào)脈沖結(jié)束后,計(jì)數(shù)器才停止計(jì)數(shù)。
閘門選通信號(hào)、計(jì)數(shù)器的使能、清零信號(hào)以及鎖存信號(hào)lock_en都是由一個(gè)控制器 (如圖7所示)產(chǎn)生的,用來同步閘門和被測(cè)信號(hào)的D 觸發(fā)器也內(nèi)嵌在控制器中。這3個(gè)信號(hào)的要求是:鎖存信號(hào)lock_en與計(jì)數(shù)器使能信號(hào)正好高低電平相反,而在計(jì)數(shù)器下一個(gè)高電平到來之前,清零信號(hào)完成對(duì)計(jì)數(shù)器的清零,圖8為控制器生成控制信號(hào)的波形。
為了對(duì)FPGA 數(shù)據(jù)處理與數(shù)碼管顯示模塊進(jìn)行驗(yàn)證,分別在QuartusII環(huán)境與外部信號(hào)接入情況下,進(jìn)行了功能仿真和實(shí)際電路測(cè)試。
在功能仿真測(cè)試中,因?yàn)殚l門為1s,而QuartusII自帶的仿真器脈沖都是ns或者us級(jí)的,為節(jié)省仿真時(shí)間,預(yù)設(shè)輸入脈沖時(shí),把clk 時(shí)鐘頻率 (50 Mhz)和待測(cè)頻率(1000Hz)同時(shí)擴(kuò)大6 個(gè)數(shù)量級(jí),最終結(jié)果數(shù)值上不變,仿真結(jié)果如圖9所示。
圖9 Quartus軟件上進(jìn)行功能仿真
通過功能仿真,鎖存器將數(shù)據(jù)送進(jìn)數(shù)碼管掃描模塊之前的數(shù)值為1000Hz。為了對(duì)硬件進(jìn)行測(cè)試,將1000Hz的標(biāo)準(zhǔn)頻率信號(hào)送入FPGA 測(cè)頻模塊,數(shù)碼管上顯示電機(jī)轉(zhuǎn)動(dòng)頻率為10.03Hz,測(cè)量誤差率為0.3%,如圖10所示。
圖10 測(cè)頻模塊對(duì)于標(biāo)準(zhǔn)1000Hz的測(cè)試結(jié)果
按照上述設(shè)計(jì)思想,建立了基于FPGA 的軸轉(zhuǎn)物體轉(zhuǎn)速測(cè)量系統(tǒng)的實(shí)驗(yàn)系統(tǒng),如圖11所示。
圖11 實(shí)驗(yàn)系統(tǒng)
驅(qū)動(dòng)步進(jìn)電機(jī)以一定頻率轉(zhuǎn)動(dòng),將光電編碼器產(chǎn)生的脈沖通過穩(wěn)壓電路接入FPGA 的預(yù)設(shè)引腳,上電運(yùn)行系統(tǒng),記錄測(cè)的頻率,并與預(yù)設(shè)數(shù)值頻率對(duì)比,根據(jù)誤差率公式
可計(jì)算出每個(gè)測(cè)量結(jié)果的誤差率,實(shí)驗(yàn)結(jié)果見表1。
表1 實(shí)驗(yàn)結(jié)果
由表1 可知,系統(tǒng)的測(cè)量精度為0.01Hz,零點(diǎn)為0Hz,最大值為99.99Hz。測(cè)量結(jié)果與預(yù)設(shè)值的誤差率隨著待測(cè)頻率的變化曲線如圖12所示。
圖12 誤差率隨著測(cè)量值的變化關(guān)系曲線
由測(cè)量結(jié)果和誤差分析曲線圖可知,系統(tǒng)誤差率的變化范圍在0.3%-5.6%之間。在系統(tǒng)初始狀態(tài)時(shí),由于轉(zhuǎn)速慢,誤差率相對(duì)大,當(dāng)實(shí)際轉(zhuǎn)速大于8Hz時(shí),誤差將隨著頻率的增大逐漸減小,并最終穩(wěn)定在0.3%左右。
對(duì)于上述誤差進(jìn)行分析,可以發(fā)現(xiàn)這種測(cè)量誤差的來源主要有3個(gè)方面:①單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)時(shí)產(chǎn)生一定的誤差,即預(yù)設(shè)值與實(shí)際值存在誤差;②光電編碼器將物理量轉(zhuǎn)化為電量時(shí)產(chǎn)生一定的誤差,如步進(jìn)電機(jī)轉(zhuǎn)動(dòng)時(shí)不停的震動(dòng)或光電編碼器位置稍有傾斜,影響光電編碼器產(chǎn)生脈沖;③當(dāng)電機(jī)轉(zhuǎn)速較慢時(shí),光電編碼器產(chǎn)生的脈沖較寬,F(xiàn)PGA 內(nèi)部計(jì)數(shù)器計(jì)數(shù)值較少,1個(gè)脈沖的計(jì)數(shù)誤差就可能帶來很大的誤差率,但是隨著轉(zhuǎn)速的加快,這部分誤差逐漸減小。
另外,在工作范圍內(nèi),光敏三極管傳感器產(chǎn)生的光電流變化范圍為1mA-2.3mA,變化量相對(duì)比較小。同時(shí),系統(tǒng)中單片機(jī)、FPGA、步進(jìn)電機(jī)均受外界影響不大,因此整個(gè)系統(tǒng)受溫度等外界因素影響不大。
本文提出并設(shè)計(jì)實(shí)現(xiàn)了一種基于FPGA 的軸轉(zhuǎn)物體轉(zhuǎn)速測(cè)量系統(tǒng)。該系統(tǒng)利用單片機(jī)控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng),產(chǎn)生待測(cè)物理量,再通過光電編碼器將輸出物理量轉(zhuǎn)化為可測(cè)量的電參量,最后通過FPGA 進(jìn)行數(shù)據(jù)處理,計(jì)算并顯示步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的頻率。該系統(tǒng)不僅實(shí)現(xiàn)了軸轉(zhuǎn)物體轉(zhuǎn)動(dòng)頻率的測(cè)量,而且避免了單片機(jī)加邏輯器件測(cè)轉(zhuǎn)速的原有思路,充分發(fā)揮了FPGA 的靈活性和高效性,使得設(shè)計(jì)思路以及電路結(jié)構(gòu)變得更加簡潔,測(cè)量誤差大大降低,系統(tǒng)的穩(wěn)定性得到很大提高。實(shí)驗(yàn)結(jié)果顯示,在0-99.99Hz測(cè)量范圍內(nèi),該系統(tǒng)的測(cè)量精度為0.01Hz,誤差率為0.3%-5.6%。因此,本系統(tǒng)的研究對(duì)于提高軸轉(zhuǎn)物體轉(zhuǎn)速測(cè)量速度、測(cè)量準(zhǔn)確度等問題的解決具有一定的參考意義和價(jià)值。
[1]Situmorang Marhaposan.The DC motor speed controller using AT89S52microcontroller to rotate stepper motor attached into potentiometer in variable regulated power supply [J].Sensors and Transducers,2011,129 (6):86-96.
[2]Tadeo A T.Dynamic characterization of a mechanical coupling for a rotating shaft [J].Journal of Mechanical Engineering Science,2011,225 (3):604-616.
[3]Ke-Nung Huang,Yu-Pei Huang.Multiple-frequency ultrasonic distance measurement using direct digital frequency synthesizers[J].Sensors and Actuators A,2009,149 (1):42-50.
[4]Zhao Hao.High accuracy speed-fed grating angular acceleration measurement system based on FPGA [J].International Journal of Computer Science Issues,2012,9 (5):34-38.
[5]Jayalakshmi V,Reddy T K,Shivakumar K.Design and implementation of orthog-onal frequency division multiplexing(OFDM)transmission using FPGA [J].International Journal of Communications and Engineering,2012,3 (3):45-51.
[6]Baluta Gheorghe,Papachatzis Nikolaos.High performance microstepping system for stepper motor control [J].WSEAS Transactions on Systems,2007,6 (8):1229-1236.
[7]Alsofyani brahim M.A review on sensorless techniques for sustainable reliablity and efficient variable frequency drives of induction motors [J].Renewable and Sustainable Energy Reviews,2013,24 (C):111-121.
[8]Li Ye,BAO Ai-da.Design of low power consumption cymometer based on FPGA [C]//ICMTMA,2011:978-981.
[9]XIA Zhenhua.Realization of equal precision frequency memter[J].Electronic Design Engineering,2010,18 (6):177-178.
[10]Ricardo Menotti,Joo M P Cardoso,Marcio M Fernandes,et al.A language to program custom FPGA-based acceleration engines[J].Int J Parallel Prog,2012,40 (3):262-289.
[11]Monmasson Eric.FPGA-based controllers[J].IEEE Industrial Electronics Magazine,2011,5 (1):14-26.
[12]Xiaoyan Hou,Ling ShihFu,Heng Kok Hui.A new transducer for rotational and translational impedance measurement[J].Journal of Intelligent Material Systems and Structures,2008,19 (10):1207-1215.