雷 宇,任文靜,焦新程
(中國石油集團東方地球物理公司西安物探裝備分公司 陜西 西安 710077)
通常石油儀器中的頻率,指的是單位時間內(nèi)電信號周期變化的次數(shù)。由于頻率信號具有抗干擾性強、易于傳輸、測量準確度較高等優(yōu)點,因此在石油儀器領域被廣泛應用。頻率信號的測量一般通過FFT數(shù)字信號處理來實現(xiàn),這種方法能保障測量精度,但軟件算法復雜,硬件電路需要將模擬信號轉(zhuǎn)換為數(shù)字信號后才能對頻率進行測量,設計成本高。本文利用MSP430F149單片機的捕獲比較寄存器實現(xiàn)對頻率的測量,無需進行模數(shù)轉(zhuǎn)換,有效降低硬件成本,減少程序復雜性,提高系統(tǒng)穩(wěn)定性。為了有利于對小信號的測量,本文中使用了濾波放大電路,能有效的提高抗干擾能力及對小信號的識別能力。
我們已經(jīng)知道了頻率即是單位時間內(nèi)信號周期變化的次數(shù),該測頻模塊的設計原理則是通過測量電路內(nèi)一個脈沖信號的周期,然后對其求倒數(shù),得出其頻率。由于MSP430系列單片機定時器結(jié)構(gòu)復雜,功能強大,適用于工業(yè)控制,如數(shù)字化電機控制,電表和手持儀表的理想配置。它給開發(fā)人員提供了較多靈活的選擇余地。MSP430系列單片機,采用16位的定時器,加上內(nèi)部的比較器,至少能達到10位的A/D測量精度。本設計主要是采用定時器的捕獲/比較模式,主要是用于捕獲事件發(fā)生的時間或者是產(chǎn)生的時間間隔,該功能的引入主要是為了提高I/O端口處理事務的能力與速度。
在捕獲模式中,當滿足捕獲條件時,硬件自動將計數(shù)器TAR的值寫入CCRx寄存器中。如測量某脈沖(高電平)的脈沖長度,可定義為上升沿和下降沿都捕獲,在上升沿時,捕獲一個定時器數(shù)據(jù),這個數(shù)據(jù)在捕獲寄存器中讀出,在等到下降沿到來時,在下降沿又捕獲一個定時器數(shù)據(jù),那么兩次捕獲的定時器數(shù)據(jù)差就是脈沖的高電平時間。同理若要測量脈沖的周期,一個脈沖的周期包括高電平與低電平,若要從高電平開始捕獲,可定義為兩次上升沿捕獲,兩次捕獲的定時器數(shù)據(jù)差即為該脈沖的周期通過倒數(shù)可以求出該頻率(若是從低電平開始捕獲則定義為兩次下降沿捕獲)。
若輸入信號較小,不滿足單片機采集要求,需要對信號進行放大處理,同時為了減小系統(tǒng)的噪音水平,提高抗干擾能力,需要進行濾波處理,本文提供了作者針對30 kHz~50 kHz的信號進行采集處理的方案,以供參考。
本設計采用有源帶通濾波器,該濾波器輸入阻抗高,輸出阻抗低,具有良好的隔離性能,因此各級之間不需要進行阻抗匹配。在濾波電路中使用軌對軌運放正負電壓供電,實現(xiàn)信號的濾波放大,該電路具有失真小,動態(tài)范圍大特性。
由于單片機使用3.3 V供電電壓,采集信號范圍為0~3.3V,因此需要對放大后的信號進行處理,滿足單片機采集要求。信號處理使用3.3 V供電的門電路。
總體設計框圖1所示。
圖1 總體設計框圖
2.1.1 有源帶通濾波器設計
使用運算放大器OPA1611來實現(xiàn)濾波放大電路,電路如圖2所示。
圖2 濾波放大電路圖
電路性能參數(shù):
(1)
(2)
(3)
使用PSPICE軟件對濾波電路頻域進行仿真,連接硬件電路,仿真結(jié)果如圖3所示。
圖3 電路仿真圖
具體參數(shù)見表1。
表1 仿真結(jié)果參數(shù)
2.1.2 信號整形設計
由于運放使用+3.3V電壓供電,因此輸出信號最大峰-峰值為6.6 Vpp,單片機的供電范圍為0~3.3 V,因此,可以使用兩輸入與非門,實現(xiàn)輸出0~3.3 V的方波信號。電路圖如圖4所示。
輸入35 kHz的頻率信號,經(jīng)過濾波后輸出波形如圖5所示。
圖4 最終電路圖
圖5 濾波輸入圖形
經(jīng)過兩輸入與非門后輸出波形如圖6所示。
圖6 最終輸出波形
從上圖可以看出,輸出波形滿足單片機要求,即可對該頻率進行檢測。
本設計采用定時器Timer A的捕獲比較模塊1即為P1.2端口的第二功能。采用系統(tǒng)外部高速時鐘,在此處系統(tǒng)外部時鐘越高,則測量精度相對來說越高。采用連續(xù)計數(shù)模式,Timer A中計數(shù)模式共分為4種分別是停止模式:該模式用于定時器暫停,并不發(fā)生復位,所有寄存器現(xiàn)行的內(nèi)容在停止模式結(jié)束后都可用,當定時器暫停后重新計數(shù)時,計數(shù)器將從暫停時的值開始以暫停前的計數(shù)方向計數(shù);第二種是增計數(shù)模式,該模式適用于小于65 536的連續(xù)計數(shù)情況。計數(shù)器TAR可以增計數(shù)到CCRx的值,當計數(shù)值與CCRx的值相等(或大于CCRx的值)時,定時器復位并從0重新開始計數(shù)。第三種為連續(xù)計數(shù)模式,在需要65 536個時鐘周期的定時應用場合常采用此模式。定時器從當前計數(shù)值計數(shù)到65 536后,又從0重新開始計數(shù)。第四種為增/減計數(shù)模式,在生成對稱波形的情況下可以采用此模式,該模式下,定時器先增計數(shù)到CCR0的值,然后反向計數(shù)到0。
為了測量頻率為30 kHz以上的信號的周期,需要使用連續(xù)計數(shù)模式,采用兩次上升沿同步捕獲。
經(jīng)過整形后的方波信號,連接MSP430F149的P1.2端口,首先對P1.2端口進行初始化,程序如下所示:
P1SEL |= BIT2;
//P1.2選擇第二功能
P1DIR &= ~BIT2;
//P1.2選擇為輸入口
TACTL = TASSEL_2 + MC_2+ID_0+TAIE;
//定時器使用主時鐘、連續(xù)計數(shù)模式
TACCTL1 |= CAP+CM_1 + SCS + CCIS_0+ CCIE;
//選擇捕獲模式、使用上升沿同步捕獲
當檢測到輸入信號上升沿時,會進入捕獲中斷程序,如下所示:
#pragma vector=TIMERA1_VECTOR
//捕獲中斷子程序
__interrupt void TimerA1(void)
{
switch(TAIV)
//判斷中斷向量寄存器
{
case 2://比較/捕獲模塊1中斷
x++;
if(x==1)old_cap=TACCR1;
//第一次上升沿捕獲計數(shù)值
if(x==2)
{
period=TACCR1+65536*TA_ov_num-old_cap;
//計算脈沖周期
TA_ov_num=0;
x=0;
}
break;
case 4:break;
//比較/捕獲模塊2中斷未使用
case 10:TA_ov_num++;
//是否溢出
break;
}
程序中old_cap表示第一次上升沿捕獲的值,TACCR1為第二次上升沿捕獲的值,當計數(shù)值到65 536時從0開始重新計數(shù)即為溢出,溢出后TA_ov_num加1,否則為0,period為當前計算出的脈沖周期。
使用信號源輸出峰峰值為3.3Vpp的方波信號,單片機外接8MHz高速晶振作為主時鐘,使用該程序?qū)︻l率進行檢測,結(jié)果如表2所示。
表2 標準頻率測量結(jié)果
從上表可以看出,使用該程序測試,最大誤差為0.5%。
從上述可以看出,本設計能對頻率信號進行精確測量,最大測試誤差為0.5%。這種基于MSP430F149單片機的頻率測量模塊,體積小巧,設計成本不高,可集成到各種對測量頻率信號有需求電子儀器當中。