基于FPGA的電機測速系統(tǒng)設(shè)計
摘要:研究的是基于FPGA的電機測速系統(tǒng)設(shè)計。該設(shè)計以有源晶振來產(chǎn)生時基信號,利用歐姆龍光電編碼器E682-CWZ6C360P/R將轉(zhuǎn)速信號轉(zhuǎn)變?yōu)轭l率信號,采用數(shù)碼管動態(tài)顯示來顯示測量所得的數(shù)值。FPGA模塊的編寫是基于Altera公司的Quartus II軟件進行編寫的,采用的芯片型號為EP2C5T144C8N。FPGA模塊是利用VHDL語言進行編寫,利用Quartus II軟件自帶的仿真軟件進行仿真,通過觀察仿真波形來驗證模塊是否正確。本設(shè)計可以實現(xiàn)小數(shù)值的方波頻率測量和電機轉(zhuǎn)速測量。
關(guān)鍵詞:FPGA;電機測速;VHDL;模塊化設(shè)計
隨著電子設(shè)備及電子產(chǎn)品逐漸向低功耗、小體積、多功能和快速更新的方向發(fā)展,使得電子設(shè)計自動化(EDA)技術(shù)快速發(fā)展。由于成本和功耗的進一步降低,在許多的領(lǐng)域運用到了可編程門陣列即FPGA,它在通信、儀器、網(wǎng)絡、數(shù)據(jù)處理、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域有著廣泛的應用。
現(xiàn)場可編程門陣列即FPGA(Field Programmable Gate Array),是從EPLD、PAL、GAL等這些可編程器件的基礎(chǔ)上進一步發(fā)展起來的。作為專業(yè)集成電路領(lǐng)域中的半定制電路而出現(xiàn)的FPGA,不但解決了定制電路的不足,而且克服了原有可編程器件因門電路數(shù)有限的而產(chǎn)生的缺點。FPGA的使用十分的靈活,同一片F(xiàn)PGA只要使用不同的程序就能夠達到不同的電路功能?,F(xiàn)在FPGA在通信、儀器、網(wǎng)絡、數(shù)據(jù)處理、工業(yè)控制、軍事和航空航天等眾多領(lǐng)域有著廣泛的應用。隨著成本和功耗的進一步降低,將在更多的領(lǐng)域運用FPGA。
基于FPGA的電機測速系統(tǒng)設(shè)計,以Quartus II為設(shè)計平臺,采用硬件描述語言VHDL和模塊化設(shè)計的方式,并通過數(shù)碼管驅(qū)動電路動態(tài)顯示測量的結(jié)果。本設(shè)計具有外圍電路少,集成度高,可靠性強等特點,可以用來測量電機的轉(zhuǎn)速值。
1 外圍電路設(shè)計
傳感器將電機轉(zhuǎn)速的模擬信號轉(zhuǎn)換成數(shù)字脈沖信號送入FPGA模塊。同時由基準時鐘電路產(chǎn)生準確的時鐘信號和復位電路產(chǎn)生的復位信號送入FPGA模塊。再由FPGA模塊產(chǎn)生分頻電路、十進制計數(shù)器電路、數(shù)據(jù)處理電路和顯示譯碼電路。由分頻電路將送入的基準時鐘信號進行分頻,得到一個閘門信號,作為十進制計數(shù)器的使能信號。數(shù)據(jù)處理電路的作用是將十進制計數(shù)器得到的數(shù)據(jù)進行相應的處理后,再送入顯示譯碼電路進行轉(zhuǎn)換譯碼。電機測速系統(tǒng)的總體框圖如圖1所示。外圍電路分為:基準時基電路,復位電路,傳感器測量電路和顯示電路。
1.1 基準時基電路設(shè)計
基準時基電路采用50 MHz的有源晶振,3.3 V電源通過FB5接入有源晶振的VCC端口,同時通過C10和C11濾去高頻干擾信號。從OUT端口輸出50 MHz的時鐘信號。晶振電路如圖2所示。
1.2 復位按鍵的設(shè)計
按鍵作為嵌入式智能控制系統(tǒng)中人機交互的常用接口,我們通常會通過按鍵向系統(tǒng)輸入各種信息,調(diào)整各種參數(shù)或者發(fā)出控制指令,按鍵的處理是一個很重要的功能模塊,它關(guān)系到整個系統(tǒng)的交互性能,同時也影響系統(tǒng)的穩(wěn)定性。在本次設(shè)計中,通過按鍵實現(xiàn)了FPGA模塊的手動復位。復位按鍵如圖3所示。
1.3 傳感器電路的設(shè)計
若要測量轉(zhuǎn)速信號,需要先將其轉(zhuǎn)換為電信號,所以就需要用到光電脈沖傳感器。本次設(shè)計所選用的光電編碼器為歐姆龍編碼器E682-CWZ6C360P/R。
1.4 顯示電路的設(shè)計
在本次設(shè)計中我們用到的顯示電路如圖4所示。
由數(shù)碼管顯示電路可以知道,這是共陽極數(shù)碼管。當在位選端SE1~SE4輸入低電平時,三極管導通,從而D1~D4接入高電平。由a到DP端輸入數(shù)碼管顯示碼,就可以得到我們所需要的數(shù)字,由位選端讓數(shù)碼管選擇導通。
2 FPGA模塊設(shè)計
FPGA模塊的設(shè)計主要是實現(xiàn)將由光電編碼器轉(zhuǎn)換得到的電信號轉(zhuǎn)換成轉(zhuǎn)速值,通過數(shù)碼管顯示。因此本次設(shè)計的模塊主要有分頻模塊、計數(shù)模塊、鎖存模塊、數(shù)據(jù)處理模塊和動態(tài)顯示模塊等組成。
2.1 分頻模塊的設(shè)計
在本次設(shè)計中我們需要得到的是轉(zhuǎn)速值,而測量的根本原理就是將轉(zhuǎn)速信號轉(zhuǎn)換為頻率信號,同過測量頻率信號從而算出轉(zhuǎn)速值。由于外部時鐘提供的是50 MHz的時鐘信號,此信號送入FPGA模塊,通過程序?qū)⑵溥M行分頻,設(shè)計需要的是1 s的閘門脈沖,來統(tǒng)計被測信號的個數(shù),從而計算出被測信號的頻率。
分頻模塊的設(shè)計流程圖如圖5所示。
2.2 四位十進制計數(shù)
四位十進制計數(shù)模塊是通過復位信號和閘門信號來控制模塊對外部被測信號的十進制計數(shù)。當復位信號為高電平時,b1、b2、b3、b4四位計數(shù)信號都為0。當復位信號為低電平,并且閘門信號為高電平時,計數(shù)模塊開始統(tǒng)計外部信號clk1的個數(shù),b4為最高位,b1為最低位。
計數(shù)模塊流程圖如圖6所示。
start為復位信號,當為0時系統(tǒng)復位。
b4、b3、b2、b1為計數(shù)信號,依次代表千位到個位,每一位最大計數(shù)。
2.3 鎖存模塊的設(shè)計
鎖存模塊具有存儲1 s it數(shù)完時,所計數(shù)的數(shù)據(jù)和提供自動復位信號的功能。而且,在按下復位信號時,清除計數(shù)數(shù)據(jù)。當閘門信號en為下降沿時,就將計數(shù)模塊所得到的數(shù)值存入鎖存模塊。當閘門信號en為‘0’時,程序就輸出一個低電平的復位信號,反之則輸出高電平的信號。
2.4 動態(tài)顯示模塊的設(shè)計
動態(tài)顯示譯碼是所有數(shù)碼管共用數(shù)據(jù)通道,由位選端選通,每位依次導通。由于人眼具有視覺延遲性,所以觀察到的數(shù)碼管為每一位顯示不同的數(shù)據(jù),同時顯示。
設(shè)計利用外部時鐘50 MHz分頻來實現(xiàn)延遲,延遲系數(shù)為62 499。則clock上升沿個數(shù)為62 499個時,位選信號加1,下一位導通顯示數(shù)據(jù)。數(shù)碼管的顯示需要將0到9的BCD碼轉(zhuǎn)換為七段數(shù)碼管顯示。與分頻模塊類似,由于時間較長,設(shè)計將延遲系數(shù)62 499改為8,則clock每8個上升沿則數(shù)碼管顯示下一位。
動態(tài)顯示模塊仿真如圖7所示。
2.5 數(shù)據(jù)處理模塊的設(shè)計
本次實驗是為了完成電機轉(zhuǎn)速的測量,而測量的原理是利用傳感器將轉(zhuǎn)速信號變?yōu)殡娒}沖信號,通過測量脈沖信號的頻率值,帶入公式從而計算出轉(zhuǎn)速值。數(shù)據(jù)處理模塊就是利用VHDL語言編寫程序進行數(shù)據(jù)的運算,將會運用到加減乘除這4種運算。
通過推理可以得出電脈沖的個數(shù)N與電機的轉(zhuǎn)速n的關(guān)系式如式(1)所示。
N——電脈沖個數(shù)
n——電機轉(zhuǎn)速(單位為:轉(zhuǎn)每分鐘)
Z——光電編碼器倍增數(shù)(此設(shè)計中為360)
t——測量時間(單位為:秒)
通過式(1)可以推出電機轉(zhuǎn)速值n的計算公式如式(2)所示。
f——測量頻率
由式(3),程序在運算模塊中將會編寫的模塊有數(shù)據(jù)相加模塊、乘60模塊、除360模塊和數(shù)據(jù)分解模塊。運算模塊流程圖如圖8所示。
數(shù)據(jù)相加模塊是為了將頻率計所得到的四位數(shù)值乘以相應的倍數(shù),再將其相加后得到一個整體的二進制數(shù),以便于進行下面的運算。又因為電脈沖的個數(shù)單位為個每秒,而電機轉(zhuǎn)速的單位為轉(zhuǎn)每分鐘,所以存在60 s的轉(zhuǎn)換值。利用程序?qū)⒅暗玫降臄?shù)據(jù)乘以60。使用的傳感器是歐姆龍編碼器E6B2-CWZ6C360P/R,所以倍增數(shù)是360,所以在運算模塊中我們要除去360。在運算得出轉(zhuǎn)速值后,還需要一個將這個二進制數(shù)值分解的模塊,因為數(shù)碼管顯示模塊是將個十百千位單獨顯示的,所以要先將每一位分解出來,再送入數(shù)碼管顯示。
3 結(jié)束語
本次設(shè)計是基于FPGA的電機測速系統(tǒng)設(shè)計,利用的是Altera公司開發(fā)的Quartus II軟件作為設(shè)計平臺,可以在FPGA開發(fā)板上實現(xiàn)測量由傳感器轉(zhuǎn)換得到的脈沖信號,并且通過計算得到電機轉(zhuǎn)速值。
在本次設(shè)計中,還可以進行一些擴展,可以添加報警電路,設(shè)定一個報警值,當測量的轉(zhuǎn)速值大于這個報警值時,就可以讓蜂鳴器報警或數(shù)碼管點亮。