摘 要: 直流無刷電機(jī)(BLDCM)兼有交流電機(jī)的結(jié)構(gòu)簡單和普通直流電機(jī)的高運(yùn)行效率以及極佳調(diào)速性能等特點(diǎn);尤其在精確定位的伺服系統(tǒng)中得到廣泛應(yīng)用,。但在BLDCM高精度伺服定位中起著關(guān)鍵作用的光電編碼器碼盤在實(shí)際安裝中常會(huì)因?yàn)椴僮鞑划?dāng)而對其造成損傷,,增大了電機(jī)產(chǎn)品的出廠故障率。介紹了基于FPGA設(shè)計(jì)的光電碼盤損傷檢測方案,,可以快速準(zhǔn)確地檢測待測BLDCM光電編碼器碼盤的受損程度,。
關(guān)鍵詞: 直流無刷電機(jī); FPGA; 增量式光電編碼器,; 碼盤
直流無刷電機(jī)(BLDCM)是利用電子換向裝置驅(qū)動(dòng)電機(jī)轉(zhuǎn)子的一種常用動(dòng)力設(shè)備,,由于其可方便實(shí)現(xiàn)精確定位功能,使其在伺服系統(tǒng)得以廣泛應(yīng)用[1],。BLDCM轉(zhuǎn)子運(yùn)行位置的精確反饋是整個(gè)伺服系統(tǒng)的關(guān)鍵,,因此轉(zhuǎn)子位置的檢測在BLDCM電機(jī)伺服控制系統(tǒng)中有著十分重要的作用。光電碼盤位置檢測法是通過光電對管計(jì)數(shù)電機(jī)轉(zhuǎn)子帶動(dòng)碼盤旋轉(zhuǎn)時(shí)發(fā)出的脈沖數(shù),,計(jì)算得到電機(jī)運(yùn)行過程中的轉(zhuǎn)子位置,。光電管的物理特性決定其具有高測量精度、高檢測速度,;因此光電碼盤位置檢測法能快速準(zhǔn)確地反應(yīng)電機(jī)轉(zhuǎn)子的機(jī)械位置,,在伺服系統(tǒng)中得到廣泛的應(yīng)用。
光電編碼器是一種通過光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器,。典型的光電編碼器由碼盤,、檢測光柵、光電轉(zhuǎn)換電路(包括光源,、光敏器件,、信號轉(zhuǎn)換電路)、機(jī)械部件等組成[2],。碼盤上刻有間距相等的輻射狀透光縫隙,,相鄰兩個(gè)透光縫隙之間代表一個(gè)位置增量。它通過物理連接如“連軸器”與電機(jī)的轉(zhuǎn)軸同心連接,,被轉(zhuǎn)軸帶動(dòng)旋轉(zhuǎn),,在透光和不透光的情況下便會(huì)通過轉(zhuǎn)換電路輸出連續(xù)的脈沖信號,在BLDCM運(yùn)行中根據(jù)脈沖計(jì)數(shù)即可計(jì)算出轉(zhuǎn)子的位置,,通過算法還可以精確地得到電機(jī)的運(yùn)行速度和旋轉(zhuǎn)方向[3],。光電編碼器原理示意圖如圖1所示。
增量式編碼器是直接利用光電轉(zhuǎn)換原理輸出兩組方波脈沖A,、B,其中A,、B兩組脈沖相位差90°,,從而可方便地判斷出旋轉(zhuǎn)方向。其優(yōu)點(diǎn)是原理構(gòu)造簡單,,機(jī)械平均壽命可在幾萬小時(shí)以上,,抗干擾能力強(qiáng),可靠性高,,并適合于長距離傳輸[2,4],。增量式編碼器碼盤屬于高精度儀器,然而在現(xiàn)場操作中往往會(huì)因?yàn)闄C(jī)械裝配原因而使碼盤受到損傷(如扭曲變形),特別是光柵受損錯(cuò)位等,這就會(huì)使轉(zhuǎn)子位置反饋信號出現(xiàn)不同程度的偏差,,嚴(yán)重情況下甚至?xí)?dǎo)致整個(gè)伺服系統(tǒng)的失敗,,造成不必要的故障和損失。為此,,本文著重介紹了基于可編程邏輯器件FPGA設(shè)計(jì)的BLDCM整機(jī)光電編碼器碼盤檢測系統(tǒng),。
1 系統(tǒng)方案的確定
本系統(tǒng)是BLDCM整機(jī)測試方案,, BLDCM帶有待測的增量式編碼器碼盤,,且待測碼盤在測試臺上被電機(jī)后座封閉。為了得到準(zhǔn)確的測量結(jié)果,,測試系統(tǒng)提供待測電機(jī)恒定的旋轉(zhuǎn)速度,,未受損的增量式編碼器通過光電對管和光柵的配合,輸出連續(xù)占空比為50%的方波信號,。測試系統(tǒng)控制器通過驅(qū)動(dòng)步進(jìn)電機(jī)控制器使得BLDCM按恒定的轉(zhuǎn)速旋轉(zhuǎn),,設(shè)BLDCM轉(zhuǎn)速為Kround/Min,編碼器碼盤光柵分辨率為N,,則正常碼盤輸出的脈沖周期寬度為:
式(2)說明在正常情況下,每個(gè)電平持續(xù)的時(shí)間約為0.83 ms,,為了提高系統(tǒng)檢測準(zhǔn)確性,應(yīng)該進(jìn)一步提高測試系統(tǒng)的時(shí)鐘頻率,,使得光電管單個(gè)脈沖輸出期間檢測系統(tǒng)所得的高頻時(shí)鐘計(jì)數(shù)越多,,系統(tǒng)可以得到更真實(shí)的碼盤輸出脈沖寬度信息,因此提高時(shí)鐘頻率是有效的方法,。若采用傳統(tǒng)的單片機(jī)設(shè)計(jì)光電編碼器碼盤檢測系統(tǒng),,由于單片機(jī)時(shí)鐘頻率較低,外設(shè)速度較慢,。若碼盤出現(xiàn)損壞則輸出不規(guī)則的波形,,如圖2(b)所示,此時(shí)會(huì)出現(xiàn)電平持續(xù)時(shí)間長短不一的情況,,若碼盤分辨率稍高,,某些檢測時(shí)刻甚至?xí)幱跀?shù)十微秒的數(shù)量級上,易造成檢測錯(cuò)誤,。FPGA屬于高速并行器件,,運(yùn)行頻率高,內(nèi)部存儲容量大,,所有模塊都是并行運(yùn)行[5],,這就極大地減少了內(nèi)部延時(shí),因此它更適應(yīng)于檢測碼盤損傷,。
系統(tǒng)中BLDCM為被動(dòng)旋轉(zhuǎn)運(yùn)行方式,但需通過接口向光電對管提供+5 V直流工作電壓,以供輸出檢測脈沖信號,。控制器通過控制步進(jìn)電機(jī)的啟停來控制待測BLDCM的旋轉(zhuǎn)和停止。在啟動(dòng)測試系統(tǒng)階段,,系統(tǒng)從靜止開始加速旋轉(zhuǎn)BLDCM,,待轉(zhuǎn)速穩(wěn)定在控制器根據(jù)編碼器設(shè)定的速度后,正式開始進(jìn)入碼盤測試階段,,并通過外接LED指示說明系統(tǒng)運(yùn)行狀態(tài),目前為滿足不同分辨率的碼盤測試要求,,測試系統(tǒng)通過編碼器可以設(shè)定3種速度,即K=25,,50,,100。碼盤輸出的脈沖信號經(jīng)簡單的調(diào)理電路后直接連接到FPGA的引腳提供給控制器進(jìn)行運(yùn)算,,所得結(jié)果輸出并通過LED和蜂鳴器進(jìn)行故障指示,。圖3為測試系統(tǒng)的功能簡圖。
2 碼盤損傷檢測系統(tǒng)整體方案的實(shí)現(xiàn)
本系統(tǒng)采用Xilinx的Spartan3E型號為XC3S500E[6]的FPGA,系統(tǒng)流程圖如圖4,。整個(gè)系統(tǒng)采用Top-Down的設(shè)計(jì)思想,,把系統(tǒng)劃分為幾個(gè)基本單元,頂層采用原理圖的輸入方式如圖5所示,。
2.1 時(shí)鐘計(jì)數(shù)模塊
系統(tǒng)采用50 MHz時(shí)鐘對碼盤輸入的波形進(jìn)行計(jì)數(shù),。在正常情況下,光電對管輸出的待測信號(本系統(tǒng)中為CP)應(yīng)該為標(biāo)準(zhǔn)的方波,,若碼盤被損壞則輸入的方波也必然會(huì)變得不規(guī)則,。控制器用CLK對待測信號進(jìn)行寬度計(jì)數(shù),,CP上升沿和下降沿來時(shí)將計(jì)數(shù)器內(nèi)的值分別輸入FPGA的RAM中,。
2.2 單口RAM模塊
采用Xilinx ISE9.1的單口RAM IP核對時(shí)鐘模塊輸出的計(jì)數(shù)值進(jìn)行存儲,RAM Core原理圖符號如圖6[7],。為了在每個(gè)時(shí)鐘沿觸發(fā)時(shí)使存儲器的利用率最大化,,XC3S500E提供的RAM塊支持3種不同的寫模式。根據(jù)需要系統(tǒng)選擇寫優(yōu)先模式(Write First mode),,當(dāng)WE為高電平時(shí)向RAM中寫入數(shù)據(jù),當(dāng)WE為低電平是根據(jù)輸入的地址ADDR將存儲器內(nèi)的數(shù)據(jù)讀出,其時(shí)序如圖7[7],。
為了提高測試的精度,保證測試結(jié)果的可靠性,,系統(tǒng)設(shè)定了采樣3周待測碼盤輸出信號,,也就是先把電機(jī)轉(zhuǎn)動(dòng)完整3周所輸出的計(jì)數(shù)值全部存入RAM中,然后再讀取需要的值進(jìn)行運(yùn)算,。設(shè)計(jì)中分別用兩個(gè)模塊對RAM的WE和ADDR取值進(jìn)行了控制,以保證電機(jī)在此3周轉(zhuǎn)動(dòng)中WE始終是高(即為寫),,地址始終遞增,,3周以后WE變?yōu)榈?即為讀),地址從0開始遞增。
2.3 減法及存儲模塊
由于RAM模塊內(nèi)存儲的分別為CP上升和下降沿到來時(shí)的時(shí)鐘數(shù)計(jì)數(shù)值,,此模塊遞增改變讀地址,,實(shí)現(xiàn)RAM數(shù)據(jù)的減法運(yùn)算,即可得到CP在每個(gè)高電平或低電平對應(yīng)的時(shí)鐘計(jì)數(shù)值,。此時(shí)鐘計(jì)數(shù)值的多少反應(yīng)了它們在高低電平的持續(xù)時(shí)間,。將所得的結(jié)果再次存入一單口RAM中,以便后續(xù)的比較運(yùn)算,。
2.4 比較模塊
此模塊用于比較CP在前一個(gè)高電平(或低電平)與后一個(gè)高電平(或低電平)持續(xù)的時(shí)間是否一致,。對于不同的時(shí)鐘頻率所得的計(jì)數(shù)精確度不一樣,因此相鄰兩個(gè)同樣電平持續(xù)的時(shí)間也不可能完全相同,,本系統(tǒng)中設(shè)定的計(jì)數(shù)差值為±10,,即相鄰兩個(gè)同樣電平計(jì)數(shù)值之差在±10之間,模塊輸出低電平,,測試系統(tǒng)判斷碼盤是正常未受損,;一旦計(jì)數(shù)值之差超過10,模塊將會(huì)輸出一個(gè)高電平,,用以記錄碼盤出現(xiàn)受損的情況,。然后再比較下一個(gè)相鄰高電平(或相鄰低電平),由此類推,。分析模塊的輸出端(q)可以發(fā)現(xiàn),,如果碼盤是正常的,則q全為低電平,;反之,,則會(huì)出現(xiàn)高電平,并可計(jì)數(shù)分析高電平的個(gè)數(shù),計(jì)算出碼盤損壞的嚴(yán)重程度,。碼盤受損的仿真比較結(jié)果如圖8所示,。
2.5 驅(qū)動(dòng)及復(fù)位模塊
為了便于用戶觀察,系統(tǒng)加入了驅(qū)動(dòng)復(fù)位模塊,,用以驅(qū)動(dòng)故障指示LED和蜂鳴器,。其設(shè)計(jì)思想是,一旦輸入端出現(xiàn)高電平,且整個(gè)系統(tǒng)在不復(fù)位的情況下,,模塊輸出兩路周期為1 s的方波,,驅(qū)動(dòng)LED燈和蜂鳴器指示故障并報(bào)警,并可以使用一復(fù)位按鈕人工復(fù)位停止LED和蜂鳴器。程序仿真結(jié)果如圖9所示,。
3 系統(tǒng)仿真和實(shí)驗(yàn)結(jié)果
系統(tǒng)程序采用Verilog HDL硬件描述語言編寫,,并在ISE 9.1i環(huán)境下綜合成功,其ModelSim仿真結(jié)果如圖10所示,。由圖可知,,當(dāng)相鄰兩個(gè)同電平的脈沖計(jì)數(shù)差值在±10時(shí),,輸出端q為低電平,一旦超出預(yù)定范圍則輸出高電平,,且驅(qū)動(dòng)LED和蜂鳴器動(dòng)作,。
實(shí)際使用證明,本文設(shè)計(jì)的光電編碼器的碼盤損傷檢測系統(tǒng)可以快速準(zhǔn)確地檢測出已完成安裝的BLDCM光電碼盤,并可以根據(jù)待測碼盤的分辨率要求和檢測的計(jì)數(shù)要求,通過編碼器方便快捷地調(diào)整設(shè)置驅(qū)動(dòng)轉(zhuǎn)速和誤差比較閾值,。經(jīng)過實(shí)際使用的反饋分析,,本系統(tǒng)將在碼盤的故障定位上開展研究,滿足系統(tǒng)在快速檢測出故障碼盤的前提下,,可以準(zhǔn)確定位故障光柵的位置,,為實(shí)際的檢修提供信息。
參考文獻(xiàn)
[1] 劉剛 王志強(qiáng).永磁無刷直流電機(jī)控制技術(shù)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,,2008.
[2] 陳先鋒. 伺服控制技術(shù)自學(xué)手冊[M].北京:人民郵電出版社,,2010年第1版.
[3] 盧志剛.?dāng)?shù)字伺服控制系統(tǒng)與設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2007.
[4] HEDS-9700 シリーズ2チャンネル光學(xué)式,,小型エンコーダモジュール(リニアタイプ/ ロータリタ
イプ),,Agilent Technologies.
[5] 黃智偉.FPGA系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:電子工業(yè)出版社,2005.
[6] XILINX Corporation[Z].Spartan-3E FPGA Family Complete Data Sheet.
[7] XILINX Corporation[Z].Libraries Guide ISE 9.1i.