朱亞光馮國勝李婭君韓超李先河
(1.石家莊鐵道大學;2.河北省節水灌溉設備質量監督檢驗站)

在電動汽車中電動機的轉速常常作為反饋量在控制系統中起著重要的作用,也是駕駛人員觀察電動汽車運行狀態的重要依據之一。在當前的電動機轉速測量方法中,有微電動機測速法、離心式轉速表法及霍爾元件測速法等。微電動機測速和離心式轉速表測速2種方法有現成的測速儀器,但測速電動機和測速表都要與被測電動機的軸連接,既增加安裝難度,也消耗電動機一部分能量,因此,2種測速方法都不可取。光電編碼器測速和霍爾元件的測速方法相似,都是在電動機轉軸上安裝傳感器,將軸的轉動信號轉化為脈沖信號,通過計算脈沖信號的個數來計算轉速。光電編碼器具有線性度好、精度高及體積小等特點,是目前應用廣泛的測速工具之一。為了實現電動機轉速的快速及準確的測量,文章通過DSP56F8346開發板對編碼器進行計數,然后通過新的編程方式在保證測量精度的情況下,擴大了電動機轉速的測量范圍,并通過DSP和上位機的通信實現了電動機轉速數據的實時監測和存儲[1]。該測量系統具有精度高、范圍廣的特點,為電動機轉速測量提供了有效的測量手段。
目前,電動機轉速光電編碼器的測速常用方法有3種,即測周期法(T法)、測頻法(M法)及將以上2種方法結合起來的測頻率周期法(M/T法)。T法主要是檢測2個邊沿信號的時間,在低速范圍的速度檢測中比較適用;M法主要是在一個固定的時間內檢測正交脈沖信號的個數,適用于高速測量,但測量的速度降低時,誤差也隨即增大;M/T法是計算一定時間內脈沖的個數和該時間內第1個脈沖和最后1個脈沖的時間值,然后通過計算得到轉速值,此法檢測轉速范圍廣,測量精度比較高。圖1示出M/T法測速原理。光電編碼器主要由光柵盤和光電檢測裝置組成。由于光柵盤與電動機同軸,電動機旋轉時,光柵盤與電動機同速旋轉,經發光二極管等電子元件組成的檢測裝置檢測輸出若干脈沖信號,通過計算每秒光電編碼器輸出脈沖的個數就能反映當前電動機的轉速[2]。

圖1 測頻率周期法(M/T法)測速原理圖
電動機中的編碼器信號由定時器(TIMERA)的1和2引腳輸入2路正交編碼脈沖,當正交編碼脈沖電路測量這2路的正交編碼脈沖信號進行計數時,無論是檢測到下降沿還是上升沿,都會產生一個時鐘脈沖對TIMERA進行計數。可以通過定時器每隔一定時間(t)讀取TIMERA的值,然后將讀取到的值保存下來并用于下一時刻的計算,如:t1時刻讀取的TIMERA值為K1,t1+t時刻讀取到的TIMERA值為K2。那么在時間為t的時間間隔內,讀取到TIMERA的脈沖個數為K2-K1。因此,電動機轉速(n)的計算,如式(1)所示。

式中:n——電動機的轉速,r/s;
K1——t時刻讀取的TIMERA值,個;
K2——t1+t時刻讀取的TIMERA值,個;
N——電動機每轉的脈沖數[3],個;
t——時間間隔,s。
在時間為t的一段時間中,計數1個已知頻率為f/Hz的高頻脈沖數為M/個,如式(2)所示。

將式(2)代入式(1)中,則電動機轉速,如式(3)所示。

為了測量出電動機編碼器輸出的2個相鄰脈沖之間高頻時鐘脈沖的個數,可以采用DSP56F8346開發板進行測量。DSP56F8346的主頻為60 MHz,時鐘周期為16.7 ns,它集成了數字信號處理器(DSP)和微控制單元(MCU)的功能,具有2個雙6通道的PWM模塊、1個相位檢測器功能模塊,2個串行通信接口模塊等[4]。通過對電動機中的正交編碼器脈沖信號的測量,將測得的脈沖信號傳送給DSP56F8346的捕捉單元,使用DSP56F8346的計數器對已知頻率的脈沖信號在一個脈沖周期范圍內進行計數,得出M,最后通過M和f來計算轉速。轉速值通過串口發送到FreeMASTER軟件中,實現了轉速信號的適時監測和數據存儲[5]。圖2示出電動機編碼器測速總體流程圖。試驗用的電動機型號為SM060R20B30MNAD,示波器測出的編碼器A相信號,如圖3所示。

圖3 電動機編碼器的A相信號顯示界面圖
本設計利用DSP的TIMERA進行高速時鐘的累加,將捕獲引腳CAP1_QEP1定義為功能引腳,允許定時器中斷和捕捉中斷,轉速測量流程,如圖4所示。

圖4 電動機轉速測量流程圖
單片機DSP56F8346有相位檢測器0和相位檢測器1,這2個相位檢測器分別與定時器A和定時器B共享引腳。因此,在測量轉速時需要將編碼器中的A,B相與定時器相應的針腳相連接,然后通過編程計算,就可以得到轉速值。DSP56F8346開發板的編程軟件為CodeWarriors,它可以用C語言也可以用匯編語言進行編程。這個編程環境的嵌入式軟件PE(Processor Expert)提供了比較高效又方便的嵌入豆模塊。每個嵌入豆模塊有相對應的嵌入式系統的基本功能,如CPU內核和外設等,它可以根據用戶的需求通過可視化窗口選擇和配置適當的功能。當啟動代碼設計時,系統會根據嵌入豆中的設置自動生成代碼,不易出錯;也可根據自己的需要來編寫代碼,從而提高工作效率。
在CodeWarriors編程環境中,可以添加脈沖累加模塊(PulseAccumulator)、定時模塊(TimerInt)及位輸入輸出模塊(BitsIO)。在PulseAccumulator模塊中設置中斷使能(Interrupt service/event)開啟;在 TimerInt模塊中設置中斷周期(Interrupt Period)為100 ms;在BitsIO中設置引腳Pin0-Pin2為GIPOC8_ISA0-GIPOC10_ISA2,其它的都選擇默認設置[6],再進行編譯,系統會根據設置自動生成相應的代碼。需要編寫的主程序為:

為了實現轉速信號的實時監測和數據儲存,采用通過串口(R232)傳輸DSP發出的數據到上位機。FreeMASTER利用計算機強大的圖形環境,采用可視化的圖形語言和平臺,可以在計算機上建立圖形化的軟面板來取代傳統的儀器面板。因此它可以將DSP通過串口發送過來的數據進行采集和顯示[7]。
通過DSP的SCI模塊和FreeMASTER實現串口通信,數據用串口進行發送。由于可以通過在CodeWar riors編程環境中直接添加FreeMASTER,因此用戶不用考慮是怎樣傳輸數據的,這給用戶帶來了極大的方便。FreeMASTER在接收程序時,在工程(Project)選項中設定波特率為9 600 Bd、選用R232串口選擇并連接相應的COM接口,然后再選擇并生成轉速變量(Speed)即轉速值。新建一個窗口(NewScope),將生成的轉速值轉移到NewScope中顯示出來,即可觀測到轉速值。
應用DSP56F8346的捕獲單元模塊測量電動機編碼器脈沖信號的方法可以計算出電動機的轉速,同時可以保證很高的精度。為驗證本系統的有效性,首先在試驗室中的信號發生器上模擬光電編碼器的脈沖信號,把采集到的脈沖頻率轉化成轉速值,采集到的轉速值在FreeMASTER面板圖中顯示,如圖5所示。

圖5FreeMASTER面板顯示界面
最后采用本系統進行電動機測速試驗,并將所得到的轉速值和實際的轉速值進行對比,如表1所示。經比較,兩者數據相差很小。

表1 電動機編碼器轉速測量值和實際值對比表
文章基于DSP56F8346的電動機測速系統實現了對電動機轉速的測量,通過串口傳輸到FreeMASTER中將數據儲存并顯示,在實際測量電動機轉速的試驗中取得了比較好的結果。該系統測量的方法簡單、有效,克服了傳統測量方法存在的一些缺陷與不足,具有較寬的速度測量范圍。通過對電動機轉速測量的對比結果可知,測量值與實際值存在一些偏差,但偏差都很小,在可接受的范圍內,相對來講比較精確。因此該系統可以應用到發動機轉速測量等領域中,具有比較好的實用價值。