測頻是最基本的電子測量技術。常用的測頻方法有較大的局限性,其測量精度是隨被測信號頻率的下降而降低的,并且被測信號計數則產生±1個數字誤差。而采用等精度頻率測量方法測量精確,測量精度保持恒定;并且與CPLD(復雜可編程邏輯器件)相結合可使測頻范圍達到0.1 Hz~100 MHz,測頻全域相對誤差恒為1/1000。
智能化儀器通常以單片機為核心,而一般單片機自身計數器/定時器的計數/定時范圍或精度有時無法滿足系統要求。以89C51單片機為例,當其內部兩個16位計數器/定時器T0和T1工作在計數方式時,對T0(P3.4)或T1(P3.5)的外部脈沖進行計數。當T0或T1引腳上發生負跳變時,計數器加1。由于識別引腳的負跳變需2個機器周期,即24個時鐘振蕩周期。T0/T1的最高頻率為1/24fosc,當晶體振蕩器頻率為12MHz時,其最高計數頻率為500 kHz。要求高測量頻率時,則需對被測信號預處理以擴展測頻范圍。
2 測量原理
要求測量頻率較高時,則需對高頻和低頻采用不同的測量方法,提高測量精度。
2.1高頻測量
采用測頻法測量高頻。在確定的閾值時間Tw內,記錄被測信號的變化周期數(或脈沖數)Nx,則被測信號的頻率:fx=Nx/Tw。測頻法原理如圖1。由于被測頻率較高,單片機難以測量,8051所測量最高頻率為500 kHz,因此采用CPLD和8051的內部計數器組成32位計數器。CPLD的計數器為低16位,其進位脈沖再向8051計數。CPLD延時為10 ns,因此,CPLD與8051按測頻原理可以精確測量50 Mz的頻率。
2.2低頻測量
采用測周法測量低頻。測周期法需用標準信號的頻率fs,待測信號的一個周期Tx內,記錄標準頻率的周期數為Ns,則被測信號的頻率為:fx=fs/Ns,其原理如圖2所示。由于被測頻率較低,故可采用8051測量。首先要將被測信號轉換成門控信號,其轉換電路原理如圖3所示。
2.3脈寬測量
由于被測頻率較低,故可采用8051實現。將脈寬信號直接送人8051計數器,采用測周法來測量脈寬,標準信號頻率fs記錄標準頻率的周期數為Ns,則被測信號的脈寬為:Tx=Ns/fs。
3系統硬件電路設計
3.1單片機設計部分
快速測量的要求必須保證高精度測頻,必須采用高精度的標準頻率信號。由于單片機受本身時鐘頻率和指令運算限制,因此,測頻速度較慢,無法滿足高速、高精度測頻要求。采用高集成度、高速可編程門陣列CPLD可實現快速、高精度測頻。其硬件電路如圖4所示。
3.2 CPLD設計部分
利用CPLD作為計數器的低16位,而89S51內部計數器作為計數器的高16位,在門控時間內分別對被測信號和標準信號進行計數。由于單片機具有程序運算能力,且頻率為周期的倒數(f=1/T),則測頻法與測周法互通。CPLD設計部分的硬件電路如圖5所示。
4系統軟件設計
系統軟件設計采用Keil C51編寫。由于單片機能夠完成大量運算,且包含浮點數據處理。因此,并采用Keil C51便于運行。并采用Keil C51自帶的軟件仿真器對所編寫的程序進行仿真。
系統軟件設計流程為:單片機初始化、LCD初始化、計數器清零、單片機發出啟動脈沖,來啟動CPLD的兩個低16位計數器和單片機的兩個高16位計數器。此時,計數器并不開始計數,直到下一個Tx上升沿到來,計數器才開始計數,軟件延時1 s后,發出結束脈沖來結束CPLD的兩個低16位計數器計數,但此時,計數器并不停止計數,而是直到下一個Fx上升沿兩個計數器才都停止計數,隨后關閉單片機的兩個計數器。CPLD發送結束信號,單片機響應中斷。中斷函數分兩次讀取CPLD的兩個計數器值。進而單片機處理兩個32位計數器值。調用顯示函數顯示頻率,從而完成一次測頻。圖6為系統軟件設計流程圖。
5 結語
本系統設計經系統測試,測試數據符合要求。因此,該信號測量儀具有電路簡單、體積小巧、便于攜帶、功能強大,中文液晶顯示等特點。其頻率測量范圍可達0.1 Hz~100MHz,并可隨意切換被測信號的頻率、周期和脈寬,具有較強的實用價值。