廣州航海高等??茖W(xué)校(廣州510725) 李 漢
螺旋槳的直流發(fā)電機(jī)模擬裝置如圖1所示,圖中 M為船舶推進(jìn)電動(dòng)機(jī),G為模擬海船螺旋槳的他勵(lì)直流發(fā)電機(jī),RL為發(fā)電機(jī)的負(fù)載,B為變速器。為了利用直流發(fā)電機(jī)模擬海船螺旋槳,發(fā)電機(jī)應(yīng)提供的阻轉(zhuǎn)矩為:
式中 n為推進(jìn)電動(dòng)機(jī)的轉(zhuǎn)速 (r/min),GD2為模擬螺旋槳及傳動(dòng)部件的飛輪矩,為發(fā)電機(jī)及傳動(dòng)部件的飛輪矩,K為槳矩常數(shù)。由此可見,為了準(zhǔn)確調(diào)節(jié)推進(jìn)電動(dòng)機(jī)的阻轉(zhuǎn)矩,要求在一定的時(shí)間內(nèi)精確測量出推進(jìn)電機(jī)的轉(zhuǎn)速及轉(zhuǎn)速變化率。
指標(biāo)如下:測速范圍:3~1500r/min;測速周期:100ms;測速精度:±0.5%;最大轉(zhuǎn)速變化率:±400r/min/s。
圖1 海船螺旋槳模擬示意圖
為了在電動(dòng)機(jī)低速時(shí)仍然能準(zhǔn)確地測量轉(zhuǎn)速,必須處理傳動(dòng)軸振動(dòng)帶來的問題。光電編碼器的輸出信號(hào)如圖2所示,其中(a)為傳動(dòng)軸平穩(wěn)運(yùn)行時(shí)的波形,(b)為傳動(dòng)軸有徑向振動(dòng)時(shí)的波形。光電編碼器輸出A、B兩相信號(hào),以A相信號(hào)為測速脈沖信號(hào),B相信號(hào)為參考信號(hào)。由圖2(a)可看出,當(dāng)A相信號(hào)的上升沿時(shí)刻測得B相信號(hào)的電位與A相信號(hào)的下降沿時(shí)刻測得B相信號(hào)的電位不同時(shí),此次脈沖為真實(shí)脈沖,反之脈沖為干擾脈沖。具體如下:在A相信號(hào)的上升沿時(shí)刻測量B相信號(hào)的電位 Vu,下降沿時(shí)刻測量B相信號(hào)的電位 Vd,則
當(dāng) Vu≠Vd時(shí),判定本次脈沖為真實(shí)脈沖;
當(dāng) Vu=Vd時(shí),判定本次脈沖為干擾脈沖。
在測速程序中只對真實(shí)脈沖給以計(jì)數(shù),而忽略干擾脈沖,這樣在傳動(dòng)軸出現(xiàn)振動(dòng)的情況下,使用光電編碼器測速的精度將大大提高。
圖2 光電編碼器輸出波形圖
設(shè)定測速周期為 Tc,系統(tǒng)接收到脈沖之后,識(shí)別出A相的干擾脈沖,從而決定是否對脈沖進(jìn)行計(jì)數(shù)或作為計(jì)時(shí)開始/結(jié)束時(shí)刻。測速系統(tǒng)從A相信號(hào)真實(shí)脈沖的下降沿開始計(jì)時(shí),在 Tc期間對A相信號(hào)不斷判定輸入脈沖的真實(shí)性,如果輸入為真實(shí)脈沖,則測速計(jì)數(shù)器mp加1,如果輸入為干擾脈沖,則測速計(jì)數(shù)器保持原值不變,直到計(jì)時(shí)時(shí)間到,記錄測速計(jì)數(shù)器的脈沖數(shù) mp、Tc到達(dá)前一個(gè)真實(shí)脈沖下降沿來臨時(shí)刻的實(shí)際計(jì)時(shí)長度 Tn,由此計(jì)算出轉(zhuǎn)速 n。假設(shè)計(jì)時(shí)時(shí)鐘頻率為 fc(MHz),則
在傳動(dòng)軸有振動(dòng)的情況下,采用如下的方法判定轉(zhuǎn)向:設(shè)置判向計(jì)數(shù)器 Dr,在A相信號(hào)脈沖為真實(shí)脈沖的下降沿時(shí)刻,測量B相信號(hào)的電位 Vd,當(dāng) Vd=“1”時(shí),Dr加 1,當(dāng) Vd=“0”時(shí),Dr減 1,在一個(gè)測速周期 Tc內(nèi)
Dr> 0,則判為正轉(zhuǎn);
Dr <0,則判為反轉(zhuǎn)。
判向計(jì)數(shù)器 Dr必須在測速周期開始時(shí)清零。這種判向的方法的好處是在一個(gè)測速周期內(nèi)記錄A相信號(hào)超前于B相信號(hào)的脈沖次數(shù)來判斷轉(zhuǎn)向,不會(huì)因?yàn)閹状胃蓴_造成判向失誤,所以抗振動(dòng)的性能較好。
測量轉(zhuǎn)速之后,為了平滑并求取轉(zhuǎn)速變化率,使用最優(yōu)二階濾波器。輸入為初次測速 r,輸出為轉(zhuǎn)速 n和轉(zhuǎn)速變化率n˙,則濾波器的狀態(tài)方程為
本系統(tǒng)采用PHILIPS公司生產(chǎn)的基于ARM7TDMI-S內(nèi)核的32位嵌入式處理器LPC2114,該處理器具有豐富的片內(nèi)資源,如2個(gè)定時(shí)器、I2C接口、SPI接口、2個(gè)UART接口、PWM、實(shí)時(shí)時(shí)鐘RTC、看門狗、A/D轉(zhuǎn)換器、多路中斷系統(tǒng)和數(shù)量較大的GPIO,給用戶系統(tǒng)設(shè)計(jì)帶來較大方便。測速系統(tǒng)硬件電路如圖3所示,由信號(hào)輸入電路、按鍵和LED顯示電路、復(fù)位和電源等部分組成。
圖3 測速系統(tǒng)硬件電路圖
光電編碼器輸出A、B相信號(hào)經(jīng)施密特觸發(fā)器整形之后,分別輸入到LPC2114的P0.10端和P0.11端,信號(hào)處理電路非常簡單,無需復(fù)雜的硬件電路,抗干擾和脈沖計(jì)數(shù)都有軟件完成。
顯示電路有兩部分,一部分采用發(fā)光二極管,分別顯示運(yùn)行、正轉(zhuǎn)和反轉(zhuǎn)指示信號(hào);另一部分采用8個(gè)數(shù)碼管,用于顯示測速的結(jié)果。發(fā)光二極管直接由 LPC2114 的 GPIO 端口 P0.4、P0.5、P0.6驅(qū)動(dòng),而8個(gè)數(shù)碼管則通過LED與鍵盤驅(qū)動(dòng)芯片ZLG7290動(dòng)態(tài)驅(qū)動(dòng),SegA~H端輸出顯示碼,它們通過220!電阻與數(shù)碼管的a~h連接,Dig0~7端輸出位選碼,分兩組,第一組Dig0~3與低4位數(shù)碼管C0~C3連接,第二組Dig4~7與高4位數(shù)碼管C0~C3連接。ZLG7290通過I2C接口與LPC2114連接,具有獨(dú)立的晶振電路(6MHz),其復(fù)位信號(hào)由芯片SP708S提供。
系統(tǒng)采用兩個(gè)控制按鍵,一個(gè)是開始(START)按鍵,另一個(gè)是停止(STOP)按鍵。當(dāng)START按下時(shí)系統(tǒng)開始工作,同時(shí)運(yùn)行指示燈亮,而STOP按下后系統(tǒng)將停止測速,運(yùn)行指示燈滅。
LPC2114需要兩種電壓,+3.3V 和 +1.8V,同時(shí),邏輯電路和編碼器還需要+5V的直流電源,所以電源電路需要通過3種電壓。使用三端穩(wěn)壓電路7805、LM11173-3.3和 LM11173-1.8可提供系統(tǒng)所需的電源。為了提高系統(tǒng)的可靠性,復(fù)位電路使用專用芯片SP708S。SP708S同時(shí)向LPC2114和ZLG7290提供復(fù)位信號(hào)。
LPC2114內(nèi)部具有兩個(gè)32位定時(shí)器-定時(shí)器0和定時(shí)器1,分別具有3路和4路32位的捕獲通道,各有4個(gè)匹配寄存器,僅使用一個(gè)定時(shí)器就完成測速周期定時(shí)和測速的要求,這里選用定時(shí)器1。編碼器A相脈沖信號(hào)從P0.10端口輸入,測速系統(tǒng)需要在A相信號(hào)下降沿和上升沿時(shí)刻能夠產(chǎn)生中斷并且捕獲該時(shí)刻的定時(shí)值,因此 P0.10 設(shè)置為 CAP1.0。B 相脈沖信號(hào)從P0.11端口輸入,因B相信號(hào)需要檢測電位,故P0.11設(shè)置為GPIO,方向設(shè)置為I。定時(shí)器C語言初始化程序如下:
測速系統(tǒng)通過I2C接口與ZLG7290連接,管理按鍵和顯示電路需要將P0.2設(shè)置為SCL,P0.3設(shè)置為SDA,才能使用I2C接口。I2C接口C語言初始化程序如下:
測速系統(tǒng)的三個(gè)發(fā)光二極管由端口 P0.4、P0.5、P0.6 控制,故P0.4、P0.5、P0.6 應(yīng)設(shè)置為 GPIO,方向?yàn)?O。
系統(tǒng)所用宏定義如下:
初始化程序如下:
抗振動(dòng)測速和判向主要由定時(shí)器1的中斷程序完成,時(shí)序圖如圖4所示。圖中測速周期0.1s定時(shí)由定時(shí)器的匹配寄存器MR0產(chǎn)生,MR0配置為匹配時(shí)中斷并且復(fù)位,因此,定時(shí)器TC的值在0~110591之間循環(huán),每次循環(huán)產(chǎn)生一次中斷。中斷時(shí)記錄編碼器A相信號(hào)真實(shí)脈沖計(jì)數(shù)器mp的值、判向計(jì)數(shù)器Dr的值、mp個(gè)真實(shí)脈沖的計(jì)時(shí)長度Tn,由這些數(shù)據(jù)可計(jì)算出轉(zhuǎn)速和判斷轉(zhuǎn)向。在中斷程序中計(jì)算轉(zhuǎn)速、判斷轉(zhuǎn)向和濾波會(huì)導(dǎo)致中斷程序執(zhí)行時(shí)間過長,為了避免這種情況,使用聯(lián)絡(luò)標(biāo)志位bPro。當(dāng)測速周期結(jié)束時(shí) bPro=“1”,主程序檢測到 bPro為“1”則由 mp、Dr、Tn 計(jì)算轉(zhuǎn)速、判斷轉(zhuǎn)向并進(jìn)行濾波處理,求出平滑后的轉(zhuǎn)速和轉(zhuǎn)速變化率,處理完畢bPro清零。這樣將計(jì)算轉(zhuǎn)速、判斷轉(zhuǎn)向和濾波的工作交給主程序完成,降低中斷程序的負(fù)擔(dān)。為了重新測速,在記錄A相脈沖數(shù)計(jì)數(shù)器mp、判向計(jì)數(shù)器Dr的值之后,mp、Dr應(yīng)清零。采用標(biāo)志位bST來識(shí)別是否需要記錄脈沖的初值。當(dāng)測速周期開始時(shí),bST=“1”,在此條件下檢測到A相真實(shí)脈沖下降沿,則記錄CAP1.0捕獲的計(jì)時(shí)值(用寄存器Tn0保存)作為測速脈沖開始時(shí)刻,同時(shí)bST復(fù)位,進(jìn)入正常脈沖計(jì)數(shù)過程。在正常脈沖計(jì)數(shù)過程中,CAP1.0不斷捕獲A相信號(hào)邊緣的計(jì)時(shí)值,但只有真實(shí)脈沖的下降沿所捕獲的計(jì)時(shí)值才用寄存器Tn保存下來,同時(shí)對A相信號(hào)的真實(shí)脈沖個(gè)數(shù)進(jìn)行計(jì)數(shù),保存于計(jì)數(shù)器mp中;檢測A相超前于B相的周期數(shù)并保存于判向計(jì)數(shù)器Dr中。到測速周期結(jié)束時(shí),Tn保存的值就是真實(shí)脈沖計(jì)時(shí)的終值,此值減去初值Tn0,得到mp的真實(shí)脈沖的計(jì)時(shí)長度Tn(即Tn←Tn-Tn0)。中斷程序和主程序的流程圖分別如圖5、6所示。
圖4 抗振動(dòng)測速判向時(shí)序圖
本系統(tǒng)使用槽數(shù)為500的光電編碼器,32位脈沖計(jì)數(shù)器,在0.1s測速周期內(nèi)能檢測到的最低轉(zhuǎn)速為
圖5 中斷程序流程圖
經(jīng)過測算,在CPU頻率為44.2368MHz的情況下,定時(shí)器中斷程序在一個(gè)測速周期內(nèi)的平均執(zhí)行時(shí)間不超過3!s(考慮執(zhí)行中斷延時(shí)),如果系統(tǒng)在一個(gè)測速周期內(nèi)20%的時(shí)間執(zhí)行中斷程序,并且電機(jī)高速時(shí)運(yùn)行平穩(wěn),光電編碼器的干擾脈沖極少,在不考慮干擾的情況下,一個(gè)脈沖產(chǎn)生兩次中斷,則最高轉(zhuǎn)速可達(dá)
圖6 主程序流程圖
可見,本程序能夠滿足系統(tǒng)測速范圍的要求。
測速系統(tǒng)的測試曲線如圖7所示,其中(a)(b)分別是使用非抗振動(dòng)程序和抗振動(dòng)程序測量結(jié)果 (設(shè)定轉(zhuǎn)速為 5.6r/min),(c)為電機(jī)由靜止加速到1200r/min的過程曲線,1為測速系統(tǒng)初始測速曲線,2為經(jīng)濾波處理之后的轉(zhuǎn)速曲線,3為轉(zhuǎn)速變化率曲線。
(1)在低速轉(zhuǎn)軸振動(dòng)條件下(設(shè)定轉(zhuǎn)速為5.6r/min),采用非抗振動(dòng)測速程序測量結(jié)果為17.1r/min,結(jié)果遠(yuǎn)遠(yuǎn)偏離設(shè)定值,且測向不穩(wěn);采用抗振動(dòng)測速程序測量結(jié)果為5.65r/min,非常接近設(shè)定轉(zhuǎn)速,同時(shí)測向準(zhǔn)確,可見采用抗振動(dòng)程序測速是有效的。
(2)由圖(a)和圖(b)可見,經(jīng)濾波后轉(zhuǎn)速曲線較為平滑,使用最佳二階濾波器取得較好效果。
(3)圖(c)分為兩段,第一段電動(dòng)機(jī)在40個(gè)測速周期內(nèi)將轉(zhuǎn)速由靜止加速到800r/min,轉(zhuǎn)速變化率為200r/min/s,與實(shí)測結(jié)果基本相符;第二段在25個(gè)測速周期內(nèi)將電動(dòng)機(jī)加速到1200r/min,轉(zhuǎn)速變化率為160r/min/s,與實(shí)測結(jié)果基本相符。
(4)最佳二階濾波器具有較好的快速性。
本文在提出一種光電編碼器的抗振動(dòng)測速和判向方法的基礎(chǔ)上,研制以32位嵌入式處理器(LPC2114)為控制器的精確測速系統(tǒng)。由于ARM7處理器LPC2114具有豐富的片內(nèi)資源,在用戶系統(tǒng)的硬件和軟件設(shè)計(jì)中都顯示出較好的靈活性和簡便性。同時(shí),32位數(shù)據(jù)寬度和流水線設(shè)計(jì)帶來測量的高精度和程序運(yùn)行的快速性,給測控系統(tǒng)提供了新的活力和用途。本系統(tǒng)設(shè)計(jì)已應(yīng)用于海船螺旋槳直流發(fā)電機(jī)模擬裝置中,證實(shí)在轉(zhuǎn)速和轉(zhuǎn)速變化率測量方面具有較高的精度,滿足該裝置的技術(shù)要求,取得了較好的實(shí)用效果。
圖7 測速系統(tǒng)的測試曲線圖
[1]宋剛等.基于普通編碼器的高精度測速方法[D].上海交通大學(xué)學(xué)報(bào),2002,8:1169 ~1172
[2]周立功,編著.ARM微控制器基礎(chǔ)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2005
[3]沈建華,譯.ARM嵌入式系統(tǒng)開發(fā)-軟件設(shè)計(jì)與優(yōu)化[M].北京:北京航空航天大學(xué)出版社,2005