基于FPGA的電機測速系統設計
2.3 鎖存模塊的設計
鎖存模塊具有存儲1 s it數完時,所計數的數據和提供自動復位信號的功能。而且,在按下復位信號時,清除計數數據。當閘門信號en為下降沿時,就將計數模塊所得到的數值存入鎖存模塊。當閘門信號en為‘0’時,程序就輸出一個低電平的復位信號,反之則輸出高電平的信號。
2.4 動態顯示模塊的設計
動態顯示譯碼是所有數碼管共用數據通道,由位選端選通,每位依次導通。由于人眼具有視覺延遲性,所以觀察到的數碼管為每一位顯示不同的數據,同時顯示。
設計利用外部時鐘50 MHz分頻來實現延遲,延遲系數為62 499。則clock上升沿個數為62 499個時,位選信號加1,下一位導通顯示數據。數碼管的顯示需要將0到9的BCD碼轉換為七段數碼管顯示。與分頻模塊類似,由于時間較長,設計將延遲系數62 499改為8,則clock每8個上升沿則數碼管顯示下一位。
動態顯示模塊仿真如圖7所示。本文引用地址:http://www.104case.com/article/189520.htm
N——電脈沖個數
n——電機轉速(單位為:轉每分鐘)
Z——光電編碼器倍增數(此設計中為360)
t——測量時間(單位為:秒)
通過式(1)可以推出電機轉速值n的計算公式如式(2)所示。
f——測量頻率
由式(3),程序在運算模塊中將會編寫的模塊有數據相加模塊、乘60模塊、除360模塊和數據分解模塊。運算模塊流程圖如圖8所示。
數據相加模塊是為了將頻率計所得到的四位數值乘以相應的倍數,再將其相加后得到一個整體的二進制數,以便于進行下面的運算。又因為電脈沖的個數單位為個每秒,而電機轉速的單位為轉每分鐘,所以存在60 s的轉換值。利用程序將之前得到的數據乘以60。使用的傳感器是歐姆龍編碼器E6B2-CWZ6C360P/R,所以倍增數是360,所以在運算模塊中我們要除去360。在運算得出轉速值后,還需要一個將這個二進制數值分解的模塊,因為數碼管顯示模塊是將個十百千位單獨顯示的,所以要先將每一位分解出來,再送入數碼管顯示。
3 結束語
本次設計是基于FPGA的電機測速系統設計,利用的是Altera公司開發的Quartus II軟件作為設計平臺,可以在FPGA開發板上實現測量由傳感器轉換得到的脈沖信號,并且通過計算得到電機轉速值。
在本次設計中,還可以進行一些擴展,可以添加報警電路,設定一個報警值,當測量的轉速值大于這個報警值時,就可以讓蜂鳴器報警或數碼管點亮。
評論