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