DSP的正交解碼電路與捕獲單元在電機測速中的運用
1 引言 對于交流異步電機調(diào)速來講,電機轉(zhuǎn)子轉(zhuǎn)角和轉(zhuǎn)速的測量是一個極其關(guān)鍵的環(huán)節(jié)。美國TI公司專為電機調(diào)速設(shè)計的 數(shù)字電機微控制器TMS320F240具有其特殊功能模塊--正交解碼(QEP)電路和捕獲單元,它們可直接與光電編碼器相 連,用于轉(zhuǎn)速檢測。其中QEP電路內(nèi)部設(shè)有轉(zhuǎn)向判別和倍頻功能,因此不再需要其它輔助電路,接口電路設(shè)計變得 非常簡單。而且F240具有三個功能強大的通用定時器,可靈活應(yīng)用于各種測速方法。 TMS320F240與測速相關(guān)的管腳主要有四個:CAP1/QEP1,CAP2/QEP2,CAP3和CAP4。正交解碼(QEP)電路與捕獲單元 CAP1、CAP2共享兩個輸入引腳,因此需要正確配置捕獲控制寄存器CAPCON來使能正交解碼電路并禁止捕獲單元1、 2。這樣就把相應(yīng)的管腳分配給QEP電路使用。 F240與增量式光電編碼器連接如圖一所示,光碼盤的A與B信號相差900,-A、-B分別為反向1800的信號。Z、-Z信號 互為反向,是每轉(zhuǎn)輸出一個脈沖的零位參考信號。其中TL714是高速差分比較器。 2 QEP電路和捕獲單元的工作原理 正交解碼電路必須選擇一個計數(shù)器用于計算電路的輸入脈沖次數(shù),即將QEP電路脈沖信號作為某通用定時器的時鐘 源。F240的通用定時器2,3或2和3一起形成的一個32位定時器可供其選擇。以通用定時器2為例,首先要求T2定時 器工作在雙向加/減計數(shù)模式。在這種工作模式下,QEP電路不僅為定時器T2提供計數(shù)時鐘,而且還決定了計數(shù)方 向。 當(dāng)電機正轉(zhuǎn)時,QEP電路的方向檢測邏輯測定出連接到光碼盤A相的QEP1輸入引腳上脈沖序列的相位領(lǐng)先于QEP2上的 脈沖信號,然后產(chǎn)生一個方向信號(此信號可以在特殊寄存器內(nèi)讀取,以此判別轉(zhuǎn)向)作為T2定時器的計數(shù)方向,則 計數(shù)器T2CNT遞增計數(shù);反之,若電機反轉(zhuǎn),QEP2輸入是先導(dǎo)脈沖序列,則計數(shù)器T2CNT遞減計數(shù)。定時器T2在計數(shù) 器下溢或上溢時發(fā)生翻轉(zhuǎn),并重新開始計數(shù)。如果兩列正交解碼輸入脈沖的兩個邊沿均被QEP電路檢測,則T2的時 鐘頻率是每個輸入序列頻率的4倍,如圖2所示。由此省去了原有的正交解碼脈沖電路4倍頻電路。 F240共有四個捕獲單元,每一個捕獲單元都有一個相應(yīng)的捕獲輸入引腳。用戶定義捕獲控制寄存器檢測捕獲引腳上 的轉(zhuǎn)換:上升沿、下降沿或二者均檢測。每個捕獲單元都可以選擇通用定時器2或3作為其時間基準(zhǔn)。每當(dāng)在捕獲輸 入引腳上檢測到一個設(shè)定的轉(zhuǎn)換時, 該捕獲單元選定的通用定時器的計數(shù)器值被捕獲并鎖存在相應(yīng)的2級深度FIFO 堆棧中。如果去除了捕獲中斷屏蔽,捕獲單元同時會向CPU發(fā)送一個中斷申請。 在檢測電機轉(zhuǎn)角和轉(zhuǎn)速之前,必須先作以下設(shè)置: 選擇通用定時器1工作在連續(xù)遞增計數(shù)模式,允許周期定時中斷。在這種工作模式下,定時器按照定標(biāo)輸入時鐘遞 增計數(shù),直到計數(shù)器的值與周期寄存器的值相同時,計數(shù)器復(fù)位為零,周期中斷標(biāo)志被設(shè)置為1,然后開始另一個 計數(shù)周期。通用定時器2工作在雙向加/減計數(shù)模式,計算QEP電路輸入脈沖個數(shù)。通用定時器3工作方式與定時器1 完全相同,但是被選為捕獲單元4的時間基準(zhǔn)。 3 轉(zhuǎn)角計算 在計算電機轉(zhuǎn)角之前,必須先解決轉(zhuǎn)角定位問題。當(dāng)在捕獲輸入引腳CAP3上檢測到零位參考信號時,定時器2的計 數(shù)值T2CNT被捕獲并存儲在相應(yīng)的2級深度FIFO堆棧中,被捕獲的T2CNT值就可以作為計算轉(zhuǎn)角的基準(zhǔn)值。這樣,轉(zhuǎn) 子每旋轉(zhuǎn)一周,基準(zhǔn)值就被重新定義一次,從而保證了轉(zhuǎn)角的準(zhǔn)確性。 為了方便說明,我們只考慮正轉(zhuǎn)情況。用于正交解碼電路計數(shù)的定時器T2是一個16的通用定時器,因此當(dāng)定時器T2 計數(shù)到******值FFFFH時,計數(shù)器T2CNT發(fā)生翻轉(zhuǎn),重新從零開始計數(shù)。必須分兩種情況來計算轉(zhuǎn)角。 3.1 定時器T2不發(fā)生翻轉(zhuǎn)計數(shù) 如圖3(a)所示,f(1)、f(2)分別是t1、t2時刻定時器T2計數(shù)值;f(0)、f1(0)為相鄰兩次零位參考信號時的定時器T2 計數(shù)值。那么在t1~t2時間內(nèi)電機轉(zhuǎn)子旋轉(zhuǎn)的機械角度應(yīng)是 (rad) (1) 式中PN—每轉(zhuǎn)脈沖數(shù), PN=2500脈沖/轉(zhuǎn); 式中Δ1=f(2)-f(1)。 若要計算t2時刻相對于以光碼盤Z信號轉(zhuǎn)角基準(zhǔn)的旋轉(zhuǎn)夾角,則必須以最后一次捕獲值f1(0)為參考值。可表示為 (rad) (2) 式中Δ2=f(2)-f1(0) 3.2 定時器T2發(fā)生翻轉(zhuǎn) 因為計數(shù)器T2CNT每計數(shù)FFFFH次,才翻轉(zhuǎn)一次,這遠遠大于光碼盤每轉(zhuǎn)輸出脈沖的四倍數(shù)(10000)。因此,在相鄰 兩個零位參考信號之間,計數(shù)器T2CNT最多出現(xiàn)一次翻轉(zhuǎn)的情況。如圖3(b)所示。可知 (rad) (3) 其中Δ1=f(2)-f(1)+FFFFH 同定時器T2不翻轉(zhuǎn)情況相同: (rad) (4) 式中Δ2=f(2)-f1(0)+FFFFH 4 轉(zhuǎn)速計算 下面介紹M法、T法以及M/T法三種常用測速方法。M法測速是在相等的時間間隔Tc內(nèi)用光碼盤輸出脈沖個數(shù)來算出轉(zhuǎn) 速,從而得到轉(zhuǎn)速的測量值。T法測速是測出相鄰兩個脈沖之間的間隔時間來計算轉(zhuǎn)速。根據(jù)以上定義可知,轉(zhuǎn)速 越低,M法測速誤差越大;T法測速則正好相反,測速誤差隨轉(zhuǎn)速加大而加大。那么若想檢測低轉(zhuǎn)速,同時又要保證 高轉(zhuǎn)速的精度,就必須綜合這兩種測速方法的特點,從而得到M/T法的測速方法:在M法的基礎(chǔ)上,以時間TC之后光 碼盤再輸出第一個脈沖為止的時間為檢測時間。 4.1 M法測速 設(shè)置通用定時器T1的時鐘輸入為20MHz。并且開通定時器周期中斷,中斷周期等于計算轉(zhuǎn)速的采樣周期TC。則定時 器每隔時間TC向CPU發(fā)出一次中斷請求,CPU響應(yīng)中斷后,在中斷服務(wù)子程序中按前面所述方法求出定時器T2變化 量 ,則電機轉(zhuǎn)速: (5) M法計算轉(zhuǎn)速只需要檢測一個變化量,即定時器T2變化量, 而且由于PN和TC均為常數(shù),令,將上式改為: (6) 這樣避免了復(fù)雜的定點除法運算,因此計算程序十分簡單,只需四、五條語句便能實現(xiàn)。 不過,正如前面講到的一樣:轉(zhuǎn)速越低,M法測速誤差越大。這在DSP中更加明顯。通常情況下,我們希望控制周期 越短越好,而同一轉(zhuǎn)速下,周期越短,能夠檢測到光碼盤輸出脈沖個數(shù)就越少,分辨率也越高。舉例說明見表1。 表1 M法測速性能表 每轉(zhuǎn)脈沖數(shù)PN=2500脈沖/轉(zhuǎn): 控制周期TC(ms) 轉(zhuǎn)速(轉(zhuǎn)/分) 定時器T2變化量△1 分辨率(q=1/△1) 1 3000 500 0.2% 50 8.33 12.5% 0.1 3000 50 2% 50 △1小于1無法檢測 可知當(dāng)控制周期TC=0.1ms,轉(zhuǎn)速低于60轉(zhuǎn)/分時,使用M法將無法檢測到轉(zhuǎn)速。 3.2 T法測速 T法測速可以利用捕獲單元的功能來實現(xiàn)。選擇通用定時器T3時鐘頻率f=20MHz,作為計算轉(zhuǎn)速的時鐘基準(zhǔn).設(shè)定當(dāng)捕 獲引腳上發(fā)生上升或下跳沿時,均將計數(shù)器T3CNT值捕獲并鎖存。在計算兩個連續(xù)捕獲發(fā)生的間隔時間T時也必須考 慮16位定時器翻轉(zhuǎn)情況。與前面所述定時器T2翻轉(zhuǎn)情況相同: 不翻轉(zhuǎn)時,m=f(1)-f(0) (7) f(1)為當(dāng)前捕獲發(fā)生時16位定時器的計數(shù)值; f(2)為前一捕獲發(fā)生時16位定時器的計數(shù)值; 翻轉(zhuǎn)時,只考慮翻轉(zhuǎn)一次的情況; m=f(1)-f(0)+0FFFFh (8) 那么轉(zhuǎn)子轉(zhuǎn)速: (9) 這里TC指引腳CAP3上兩個連續(xù)跳變沿間隔時間,TC=(m/20)MHz 在計數(shù)器T3CNT翻轉(zhuǎn)一次的情況下,T時間里內(nèi),定時器計數(shù)值******變化量為mmax=0FFFFH,則******檢測時間 那么可測最低轉(zhuǎn)速 在一般情況下,每分鐘3.66轉(zhuǎn)的轉(zhuǎn)速已經(jīng)相當(dāng)?shù)土?,因此不能一味地追求低速測量,而選取由通用定時器T2和T3合 成的32位定時器作為QEP電路的計數(shù)器,設(shè)計復(fù)雜的32位運算程序來計算更低轉(zhuǎn)速。所以可以認為定時器出現(xiàn)兩次 或兩次以上翻轉(zhuǎn)的情況時,轉(zhuǎn)子是靜止的,即n=0rpm。 當(dāng)電機轉(zhuǎn)速n為3000rpm時,兩個脈沖間的計數(shù)值: 分辨率q%=1/160=0.625%。這已經(jīng)能滿足一般測速系統(tǒng)要求,所以對高速的DSP而言,采用T法測速即可達到要求。 但是T法測速含有定點除法運算,因此計算過程比M法稍微復(fù)雜一些。 3.3 M/T法 仍然按M法設(shè)置通用定時器T1,按T法設(shè)置通用定時器T3。當(dāng)發(fā)生定時器T1周期中斷時(中斷周期TC,計算定時器T2 計數(shù)值變化量△1,讀取此時定時器T3計數(shù)值T3CNT(0),并允許捕獲單元CAP4捕獲中斷。在此之后,當(dāng)捕獲單元 CAP4捕獲到第一個跳變沿時,向CPU申請捕獲中斷。在捕獲中斷子程序中,根據(jù)捕獲的計數(shù)值T3CNT(1),得檢測時 間 (10) 則電機轉(zhuǎn)子轉(zhuǎn)速: (11) M/T法綜合了M法和T法的測速特點,能夠在很寬范圍內(nèi)按要求檢測轉(zhuǎn)速。但是它涉及兩個通用定時器、捕獲單元、 QEP電路等多個特殊寄存器的設(shè)計,所以在定義特殊寄存器時一定要小心,以免相互沖突。 5 結(jié)束語 本文主要介紹了數(shù)字電機控制專用控制芯片TMS320F240中專用模塊正交解碼電路和捕獲單元的功能特點,給出了由 它們實現(xiàn)M法、T法以及M/T法測速的三種方案,并做了對比。無論采用哪一種方法,在設(shè)計過程中都應(yīng)該注意硬件 與軟件的配合,有效地利用QEP電路、捕獲單元、定時器三者間的關(guān)系實現(xiàn)了測速功能。 |