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