新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于DSP的跟蹤頻率變化的交流有樣技術

        基于DSP的跟蹤頻率變化的交流有樣技術

        作者: 時間:2004-12-06 來源:網絡 收藏
        摘要:在電力系統采樣系統中,經常要測量電網,再根據/周期的調整采樣周期。本文在簡單分析TMS320F240片內定時器、捕獲器的使用原理后,提出一種全新的采樣

        關鍵詞:采樣 頻率 TMS320F240

        在交流采樣系統中,通常是一個周波采樣64點或128點的電量值,然后對這些數據進行處理。如果電網頻率恒定,則采樣間隔t=T/N(T為周期,N為采樣點),而電網的頻率通常有一定的波動,所以要不斷調整采樣間隔。

        在單片機系統中,一般采用過零觸發電路和單片機的外部中斷來檢測電量周波的開始和結束時間,再利用內部定時器計算出周期和采樣間隔,在采樣間隔定時中斷程序中啟動一次采親。這種方案有兩個缺點:其一,電路實現復雜;其二,精度不高,因為要考慮中斷能否實時響應。過零觸發電路產生的中斷響應具有不確定性。

        我們在使用TMS320F240 開發交流采樣系統時,巧妙地利用該款的定時器、捕獲器和不中屏蔽中斷(NMI)實現了頻率變化的交流采樣。

        1 NMI中斷、定時器、捕獲器的簡單分析

        (1)NMI中斷

        TMS320F24X系列有一個不可屏蔽中斷(NMI)引腳。當該引腳有跳變信號時(可編程為上升沿或下降沿觸發),立即進入中斷程序,可以用于緊急事件的處理。本文中用于被測電量的頻率。

        (2)定時器介紹

        TMS320F240有3個通用定時器,每個通用定時器有6種計數方式:①停止/保持模式,模式0;②單增計數模式,模式1;③連續增計數模式,模式2;④定向增/減計數模式,模式3;⑤單增/減計數模式,模式4;⑥連續增/減計數模式,模式5。

        設fc是CPU的時鐘頻率,則定時時間t=脈沖個數/(fc/分頻系數),脈沖個數與定時周期寄存器的值或比較寄存器的值有關。工作過程是:①根據CPU的頻率、定時時間確定計數寄存器的初值TxNT、周期寄存器的初值TxPER、比較寄存器的初值TxCMP。②啟動定時器計數。③計數到比較寄存器的值發生比較匹配中斷,同時使TxCMP引腳發生跳變。本文中利用T3CPU的跳變去啟動一次A/D轉換。④計數到周期寄存器的值發生周期匹配中斷。

        定時器一旦開始工作就不受程序影響,準確性高,保證每隔固定間隔進行采樣。

        (3)捕獲器介紹

        捕獲單元用于捕獲引腳上電平的變化并記錄發生的時間,記錄事件發生的時間以定時器的計數器作時基。當捕獲引腳發生跳變時,捕獲單元將該時刻時基的計數寄存器T2CNT的值裝入相應的FIFO隊列中。FIFO隊列可以裝入兩個值,第三個裝入時會將第一個值擠出。如果將捕獲器的跳變輸入信號和NMI輸入信號并聯(見圖2),則可以在NMI中斷程序中讀取跳變時的時基值(讀FIFOx寄存器)。例如:以T2作時基,引腳電平第一次上跳時,T2計數寄存器T2CNT的值為X1,第二次為X2,T2分頻系數為D,CPU頻率為fc,則變化時間間隔為

        t=D/fc(X2-X1)

        2 設計思想

        過零觸發電路的輸出接TMS320F240外部不可屏蔽中斷引腳NMI,確保了中斷的實時響應;同時,過零觸發電路的輸出還接到捕獲器1的輸入端CAP1,T2定時器作捕獲器的時基,捕獲器可以捕獲兩個脈沖間隔的時間(用T2計數器的變化量表示),這樣可以計算出周波的周期/頻率。

        用一個定時器T3完成定時觸發采樣,每隔一個采樣周期T3定時器的比較匹配輸出端T3CMP輸出一個下降沿脈沖去啟動ADC進行一次A/D轉換,所以T3CMP的啟動信號的間隔具有確定性。

        下面對頻率/周期和采樣間隔的計算作出推導。

        (1)頻率和周期

        捕獲器用T2作時基,CAP1端每出現一個上升沿脈沖表示一個周波開始,同時立刻進入NMI中斷程序,在中斷程序中讀取FIFO1寄存器的值賦給T3的周期寄存器。要注意的是:FIFO1總是初始化為0,所以FIFO1的值是在剛過去的周波內T2計數器的增加值;而T2的分頻系數為128,假設DSP的工作頻率為20MHz,這樣就可以計算出上一個周波的周期T和頻率f:

        T=(1/20) μs128(FIFO1)=

        (128/20)10 -6(FIFO1)s

        f=1/T=(2010 6)/[128(FIFO1)]=156250/(FIFO1)Hz

        (2)跟蹤頻率變化的采樣間隔

        如果T2工作在定時/計數狀態下,給T2的周期寄存器T2PER賦初值為FIFO1寄存器的值,則T2的周期中斷時間即是上一個周波的周期;而在NMI中斷程序中將FIFO1寄存器的值賦給T3的周期寄存器T3PER.注意:T2的分頻系數為128,T3的分頻系數為1,所以T3的周期中斷時間是一個周期的電量的1/128;而采樣周期用T3作時基,T3的周期中斷即是采樣中斷。從而實現了一個周期的128點采樣,即實現了跟蹤頻率變化的交流采樣,當然,有一個周波的滯后。

        每個周期會產生一次NMI(不可屏蔽中斷),在NMI中斷程序中將T2CNT的增加值(在FIFO寄存器)讀出來賦給T3的周期寄存器。因為T2的分頻系數為128,這樣T3的周期中斷時間即為一個周期的1/128,實現了一個周期采樣128點的目的。

        3 硬件設計

        (1)互感器電路及設計注意事項

        利用互感器電網的二次高壓和電流交換成0~5V或-5~+5V的電壓送入A/D轉換器,具體電路如圖1所示。

        圖1中,電壓互感器的原邊100V,副邊輸出2mA電流經OP07轉換成-3.5~+3.5V的電壓量(注意:幅值范圍為-5~+5V)。電流互感器的原邊輸入5A的電流,副邊輸出2mA的電流經運放轉換成-3.5~+3.5V的電壓量。

        D11、D12,D21、D22為運放輸入限幅保護電路;C11、R14,C21、R23為互感器相移補償電路。因采樣時只要保證一個周波采樣N點,什么時候開始并不重要,所可以省去相移補償電路。

        R11,R12、R13,R21、R22的值可以通過以上給出的電流、電壓值計算出來:R11=100V/2mA,R12+R13=R21+R22=3.5V/2mA。運放的輸出端可以接一電容進行濾波。

        運放的輸出可以再接一級電壓跟隨器(如圖2的U1A)起緩沖、隔離、提高帶載能力的作用。

        (2)過零觸發電路

        具體電路如圖2所示。U1A構成的電壓跟隨器的作用如上所述,它的正端輸入來自互感器電路的輸出。U2A構成一個過零比較電路,D2穩壓二極管使比較器的輸出為0~5V,將模擬信號轉換成數字信號送入DSP的捕獲器輸入端CAP1和不可屏蔽中斷端NMI。

        (3)A/D轉換器和DSP的接口電路

        電路原理如圖3所示。ADC芯片采樣14位的MAX125。TMS320F240的定時比較器輸出端T3CMP接MAX125的啟動轉換器CONVST;MAX125轉換結束產生中斷,通過INT腳接DSP的XINT1腳向DSP申請中斷,DSP在中斷程序中讀取轉換結果。DSP對MAX125的操作是通過端口訪問完成的,MAX125的片選端CS4接譯碼器的一個輸出端,譯碼器的輸入和使能端由DSP的地址線和I/O信號LS控制。

        每隔一個采樣周期(T/N)T3CMP端輸出一個下降沿脈沖,啟動MAX125進行一次A/D轉換。采樣間隔會根據電網頻率的變化自動調整。

        4 軟件設計

        下面給出幾個程序函數。具體數據處理的函數因系統功能不同而異,限于篇幅這里不作討論。

        (1)定時器、捕獲器初始化程序:

        void init_TimerCapturet()

        {*T2CNT=0; /*計數寄存器初始化*/

        *T3CNT=0;

        *T3CMP=1000;

        *T2PER=30000;

        T3PER=4000; /T2PER、T3PER會在NMI中斷程序中根據電量頻率的變化作出相應的調整*/

        *CAPCON=0XBC55; /*設置捕獲器*/

        *GPTCON=0X186A;

        *T2CON=0X17CA; /*方式2,分頻系數為128*/

        *T3CON=0X10CA; /*方式2,分頻系數為1*/

        *NMI_CR=0X64; /*設置不可屏蔽中斷*/

        }

        (2)ADC轉換結束中斷響應程序

        void c_int1()

        {int i;/*其余為全局或靜態變量*/

        /*程序中讀取ADC的轉換結果*/

        if(AChanel= =1) /*讀A組3路的轉換結果*/

        { outport(0x01,0x03);/*輸出MAX125的控制字*/

        inport(0x01,ADC_Data[0]);

        inport(0x01,ADC_Data[1]);

        inport(0x01,ADC_Data[2]);

        AChanel=0;

        }

        else

        {/*如上讀取B組3路的轉換結果*/

        }

        /*將14位的結果轉換為16位的(初碼存放)*/

        for(i=1;i6;i++)

        ADC_Data[i]=ADC_Data[i]2/4;

        }

        (3)不可屏蔽中斷的中斷程序

        void c_int7() {

        asm("SETC INTM");/*禁止中斷*/

        *T2CNT=0;/*作捕獲器的時在,一個周波開始時其值為0*/

        *T3PER=*FIFO1;/*T3的計數周期是一個周波周期的1/128*/

        asm("CLRC INTM");/*使能中斷*/

        }

        本文充分利用了TM320F240的片內資源,巧妙地實現了動態跟蹤頻率變化的交流采樣,希望對使用該系列DSP進行測控領域開發的人員有所啟發。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 右玉县| 噶尔县| 安康市| 视频| 乌拉特后旗| 贵州省| 玉门市| 闵行区| 潞西市| 和林格尔县| 儋州市| 万源市| 望谟县| 耿马| 顺平县| 荔波县| 盐源县| 贡嘎县| 汕头市| 新乡市| 缙云县| 盖州市| 翁牛特旗| 开鲁县| 新河县| 邢台市| 古浪县| 靖江市| 阿瓦提县| 公安县| 锦州市| 沙洋县| 体育| 福鼎市| 眉山市| 乌什县| 朔州市| 修水县| 安庆市| 寿宁县| 瑞安市|