姜禮杰,王勇,徐健,劉建華
(合肥工業(yè)大學(xué)機(jī)械與汽車(chē)工程學(xué)院,安徽合肥290003)
三維移動(dòng)平臺(tái)是一種集光、電、機(jī)等多技術(shù)領(lǐng)域于一體的運(yùn)動(dòng)裝置,廣泛應(yīng)用于醫(yī)療器械、先進(jìn)制造、工業(yè)檢測(cè)、實(shí)驗(yàn)設(shè)備等多個(gè)領(lǐng)域[1-2]。傳統(tǒng)的三維移動(dòng)平臺(tái)常采用開(kāi)環(huán)控制方式,根據(jù)控制器所發(fā)信息來(lái)控制運(yùn)動(dòng)平臺(tái)的運(yùn)動(dòng),信息流是單向[3]。隨著定位精度要求的提高,這種控制方式已不能滿足人們?cè)鲩L(zhǎng)的精密需求[4-6]。越來(lái)越多的平臺(tái)開(kāi)始使用光柵尺進(jìn)行位置和速度的檢測(cè),以構(gòu)成閉環(huán)或半閉環(huán)控制方式,從而取代開(kāi)環(huán)控制方式[7]。這種方式主控制器需要對(duì)光柵尺輸出信號(hào)進(jìn)行濾波、鑒向、細(xì)分和計(jì)數(shù)等處理。這些處理可以由數(shù)字集成電路來(lái)完成,但這種設(shè)計(jì)方法所需芯片多,結(jié)構(gòu)復(fù)雜,可靠性差[8-9]。也可以通過(guò)專(zhuān)用芯片 (如CPLD、FPGA等)和一些外圍電路來(lái)實(shí)現(xiàn),但這種方法編程復(fù)雜,增加功耗,實(shí)時(shí)性差[10]。
傳統(tǒng)的8位或16位的單片機(jī)也很難滿足這種大數(shù)據(jù)量、復(fù)雜算法控制方式的實(shí)時(shí)性要求,隨著嵌入式技術(shù)的發(fā)展,32位單片機(jī)廣泛應(yīng)用于工業(yè)自動(dòng)化、智能儀器、家電產(chǎn)品等領(lǐng)域[11-12]。文中探索了一種以STM32微處理器做主控制器的光柵尺信號(hào)處理方法,實(shí)現(xiàn)了外部信號(hào)直接與微處理器連接,不需要其他外部邏輯接口,優(yōu)化了結(jié)構(gòu),并提高實(shí)時(shí)性。經(jīng)實(shí)驗(yàn)證明,該方法具有編程簡(jiǎn)單、可靠性高、實(shí)時(shí)性好等優(yōu)點(diǎn)。
利用STM32微處理器進(jìn)行光柵信號(hào)處理雖簡(jiǎn)單方便、實(shí)時(shí)性好,但也存在以下一些問(wèn)題,限制這種使用范圍。
(1)一般光柵尺的信號(hào)輸出正弦信號(hào)或者脈沖信號(hào),均屬于弱電信號(hào)。由于現(xiàn)場(chǎng)的電磁、噪聲、振動(dòng)等干擾因素,使光柵信號(hào)帶有一些毛刺或抖動(dòng),會(huì)造成計(jì)數(shù)器計(jì)數(shù)不準(zhǔn),甚至無(wú)法計(jì)數(shù)的現(xiàn)象。也就無(wú)法實(shí)時(shí)地將工作臺(tái)運(yùn)動(dòng)情況反饋給控制器,因此需要對(duì)光柵尺的信號(hào)進(jìn)行濾波處理。
(2)光柵信號(hào)選擇有效端口接入微處理器,微處理器設(shè)置在編碼器模式下,根據(jù)輸入有效邊沿和兩路信號(hào)的相對(duì)電平,進(jìn)行向上或者向下計(jì)數(shù)。但是,微處理器的計(jì)數(shù)器位數(shù)是16位,計(jì)數(shù)只能在0~65 535范圍內(nèi)進(jìn)行,最大計(jì)數(shù)值65 535,低于0或超過(guò)65 553會(huì)產(chǎn)生溢出。計(jì)數(shù)向上產(chǎn)生溢出,計(jì)數(shù)器會(huì)接著向下計(jì)數(shù);如圖1所示,假如工作臺(tái)向左運(yùn)動(dòng),計(jì)數(shù)器計(jì)在點(diǎn)B到最大值65 535后,繼續(xù)向左運(yùn)動(dòng)至點(diǎn)C,則此時(shí)計(jì)數(shù)器值可能變成60 000;當(dāng)向下計(jì)數(shù)到0溢出后,會(huì)接著向上計(jì)數(shù),這時(shí)候直接讀取計(jì)數(shù)器的數(shù)值當(dāng)做工作臺(tái)的運(yùn)動(dòng)位移量是不準(zhǔn)確的。
圖1 工作臺(tái)運(yùn)動(dòng)圖
(3)微處理器的計(jì)數(shù)器在編碼器模式下,依據(jù)兩個(gè)輸入信號(hào)的跳變順序,硬件實(shí)時(shí)地對(duì)控制寄存器中的DIR位進(jìn)行相應(yīng)的設(shè)置。一般可以通過(guò)采取讀出DIR位的值,判斷工作平臺(tái)的運(yùn)動(dòng)方向。這種方法雖能確定工作臺(tái)的運(yùn)動(dòng)方向,但不能確定工作臺(tái)所處在機(jī)械原點(diǎn)的那個(gè)方向。如圖1所示,假設(shè)點(diǎn)O為機(jī)械原點(diǎn),OA與OB是等距離的。開(kāi)始時(shí),工作臺(tái)處在機(jī)械原點(diǎn),向右運(yùn)動(dòng)至點(diǎn) A,計(jì)數(shù)值為50 000,DIR的值為1;然后向左運(yùn)動(dòng)至點(diǎn)C,計(jì)數(shù)器值為55 000,DIR的值為0;接著向右運(yùn)動(dòng),至點(diǎn)B,則計(jì)數(shù)器的值也為50 000,DIR值也為1;此時(shí),處在A、B兩點(diǎn)的計(jì)時(shí)器值和DIR的值都是相同的,主控制器則無(wú)法辨別工作臺(tái)到底是運(yùn)動(dòng)到點(diǎn)A還是點(diǎn)B。
光柵尺是一種集光、機(jī)、電為一體的高性能數(shù)字化位置測(cè)量工具。它主要由標(biāo)尺光柵和指示光柵兩部分組成,二者發(fā)生移動(dòng)時(shí),在光的干涉與衍射共同作用下產(chǎn)生明暗相間的莫爾條紋。光電器件將明暗相間的摩爾條紋,通過(guò)光電轉(zhuǎn)化,再經(jīng)過(guò)放大器放大和整形電路整形后,得到兩路相位差為90°的正弦波。后續(xù)電路對(duì)正弦信號(hào)進(jìn)行濾波、插值等處理輸出脈沖信號(hào)。然后經(jīng)信號(hào)處理裝置的整形、放大及微分處理后,即可輸出與檢測(cè)位移成比例的脈沖信號(hào)。
該模塊所選用的STM32是一款32位基于ARM Cortex-M3內(nèi)核的微控制器。它的定時(shí)器主要由一個(gè)16位計(jì)數(shù)器和相關(guān)自動(dòng)裝載寄存器組成,由可編程的預(yù)分頻器進(jìn)行驅(qū)動(dòng)。這個(gè)計(jì)數(shù)器可選擇編碼器模式進(jìn)行向上/向下計(jì)數(shù),如圖2所示。在編碼器模式下,將信號(hào)輸入微處理器的有效端口,根據(jù)輸入信號(hào)的跳變順序,產(chǎn)生計(jì)數(shù)脈沖和方向信號(hào)。當(dāng)有邊沿跳變產(chǎn)生時(shí),硬件對(duì)定時(shí)器的控制寄存器TIMx_CR1的DIR位進(jìn)行相應(yīng)的設(shè)置,DIR位會(huì)被置為0或1。當(dāng)DIR位為0時(shí),計(jì)數(shù)器自動(dòng)向上計(jì)數(shù),直至自動(dòng)重裝值-1,產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件,接著向下計(jì)數(shù),至0,則產(chǎn)生一個(gè)計(jì)數(shù)器下溢事件,接著向上計(jì)數(shù);而當(dāng)DIR位為1時(shí),計(jì)數(shù)器計(jì)數(shù)情況類(lèi)似。只要有邊沿跳變產(chǎn)生,就會(huì)重新計(jì)算DIR位,通過(guò)讀取DIR位的數(shù)值來(lái)判斷機(jī)床運(yùn)動(dòng)方向。當(dāng)定時(shí)器被設(shè)置在編碼器模式下,計(jì)數(shù)器的內(nèi)容是依照光柵尺運(yùn)動(dòng)速度和方向而被實(shí)時(shí)地自動(dòng)修改。
圖2 定時(shí)器在編碼器模式下計(jì)數(shù)方式
三維移動(dòng)平臺(tái)要求定位精度高,使用光柵尺作為位置檢測(cè)器件進(jìn)行反饋。主控制器根據(jù)計(jì)數(shù)器采集到的光柵尺脈沖邊沿個(gè)數(shù)計(jì)算工作臺(tái)的實(shí)際位移量,以消除系統(tǒng)的傳動(dòng)鏈誤差,減小系統(tǒng)的慣性,提高定位精度。三維移動(dòng)平臺(tái)三軸的行程分別為150,150和50 mm,根據(jù)移動(dòng)平臺(tái)的定位精度要求,為每個(gè)軸分別選配了分辨率為:0.5、0.5和0.1 μm的光柵尺。每個(gè)軸所選絲杠的導(dǎo)程均為5 mm/r。經(jīng)計(jì)算,一個(gè)導(dǎo)程光柵尺理論產(chǎn)生脈沖的邊沿?cái)?shù)為10 000、10 000和50 000,而整個(gè)運(yùn)動(dòng)行程理論上產(chǎn)生的脈沖數(shù)邊沿?cái)?shù)分別是280 000、280 000和50 000。這些值遠(yuǎn)遠(yuǎn)超過(guò)微處理器中計(jì)數(shù)器的最大計(jì)數(shù)值,無(wú)法準(zhǔn)確計(jì)算平臺(tái)移動(dòng)位移量,不滿足光柵尺作為位置檢測(cè)元件的要求。
光柵尺信號(hào)因現(xiàn)場(chǎng)的電磁、噪聲、振動(dòng)等影響,可能會(huì)使TTL信號(hào)帶有一些毛刺或抖動(dòng),造成計(jì)數(shù)器計(jì)數(shù)不準(zhǔn)。根據(jù)信號(hào)的波形質(zhì)量,可選擇通過(guò)軟件設(shè)置數(shù)字濾波器的帶寬的方式,對(duì)輸入的信號(hào)進(jìn)行濾波處理。數(shù)字濾波器就是由一個(gè)事件計(jì)數(shù)器組成,它記錄到N個(gè)事件后會(huì)產(chǎn)生一個(gè)輸出的跳變。例如一個(gè)脈沖波形對(duì)高電平進(jìn)行判斷,在某個(gè)時(shí)間段內(nèi)進(jìn)行若干次檢測(cè),這若干次中至少N次都為真則為真,產(chǎn)生一個(gè)跳變,否則認(rèn)為為假,不產(chǎn)生跳變??梢赃@樣配置輸入濾波器對(duì)輸入波形信號(hào)進(jìn)行濾波處理。濾波器的濾波效果如圖3所示。
圖3 濾波器濾波效果圖
采用定時(shí)查取計(jì)數(shù)器數(shù)值的方法,通過(guò)軟件編程使計(jì)數(shù)器擴(kuò)展到32位,是一種簡(jiǎn)單有效的方法。采用定時(shí)查取方式進(jìn)行擴(kuò)展,根據(jù)機(jī)床的運(yùn)動(dòng)速度和實(shí)際測(cè)量需要設(shè)定查詢周期。假定每10 ms查詢一次,設(shè)S為光柵尺移動(dòng)的實(shí)際位移量,a為計(jì)數(shù)器的實(shí)時(shí)值。每隔10 ms對(duì)計(jì)數(shù)器里的值進(jìn)行一次查詢,將計(jì)數(shù)器的值賦予a并清零,同時(shí)查詢控制寄存器的DIR的值。假如DIR=0時(shí),S的值將變?yōu)镾加a的值,同時(shí)將a的值清零;如果DIR=1時(shí),S的值將變?yōu)镾減a的值,同時(shí)將a的值清零。顯示器不斷地顯示S的值,S可為正值也可為負(fù)值。假如當(dāng)S的值大于零時(shí)認(rèn)為工作臺(tái)的位置處在機(jī)械原點(diǎn)的右邊,S的值小于零時(shí)認(rèn)為機(jī)床是在機(jī)械原點(diǎn)左邊,S的值為零時(shí)則處于機(jī)械原點(diǎn)。這樣不斷地進(jìn)行定時(shí)查詢直至機(jī)床停止工作。
主控制器對(duì)計(jì)數(shù)器的值定時(shí)進(jìn)行查取和清零,查取周期的選擇是該方法的一個(gè)關(guān)鍵。查取周期是依據(jù)平臺(tái)運(yùn)動(dòng)最大速度和光柵尺分辨率計(jì)算所得。根據(jù)運(yùn)動(dòng)平臺(tái)設(shè)計(jì)要求,三軸運(yùn)動(dòng)最大速度為30 mm/min,定位精度控制在0.01 mm以內(nèi),三軸的光柵尺分辨率依次為0.5、0.5和0.1 μm。經(jīng)計(jì)算得,在每軸上每毫秒所產(chǎn)生的脈沖邊沿?cái)?shù)分別為:1個(gè)、1個(gè)和5個(gè),對(duì)應(yīng)的位移量均為0.5 μm。若要保證定位精度在0.01 mm以內(nèi),則在每個(gè)查詢周期的運(yùn)動(dòng)位移不超過(guò)0.01 mm,根據(jù)最大速度計(jì)算,主控制器對(duì)計(jì)數(shù)器的查詢周期要小于20 ms,否則,光柵尺不能有效地發(fā)揮反饋?zhàn)饔?。該平臺(tái)選擇的查詢周期是10 ms。
三位移動(dòng)平臺(tái)的的運(yùn)動(dòng)控制系統(tǒng)主要是通過(guò)C語(yǔ)言編程來(lái)實(shí)現(xiàn)的,光柵尺信號(hào)的處理,也是通過(guò)C語(yǔ)言配置微處理器中寄存器完成信號(hào)處理。圖4是計(jì)數(shù)器位數(shù)擴(kuò)展和辨向的主要程序的流程圖。
采用上述設(shè)計(jì)方案對(duì)光柵尺信號(hào)進(jìn)行處理,經(jīng)過(guò)單片機(jī)定量發(fā)出PWM脈沖進(jìn)行實(shí)際測(cè)試,實(shí)驗(yàn)結(jié)果顯示計(jì)數(shù)器計(jì)數(shù)的個(gè)數(shù)與發(fā)出個(gè)數(shù)是一致的。另與數(shù)顯表對(duì)比結(jié)果顯示誤差在1/10 000內(nèi)。通過(guò)這兩個(gè)實(shí)驗(yàn),間接地驗(yàn)證了該方法計(jì)數(shù)準(zhǔn)確。
圖4 計(jì)數(shù)器擴(kuò)展算法部分流程圖
經(jīng)驗(yàn)證,基于STM32微處理器的光柵信號(hào)處理方法簡(jiǎn)單可靠、技術(shù)準(zhǔn)確、靈活性好。滿足三位移動(dòng)平臺(tái)的的定位精度要求,達(dá)到預(yù)期設(shè)計(jì)目的,同時(shí)也為其他數(shù)據(jù)采集模塊設(shè)計(jì)提供了參考。
【1】杜春梅.三維激光掃描技術(shù)的研究[D].西安:陜西科技大學(xué),2010.
【2】徐麗莉.基于ARM9的數(shù)字超聲檢測(cè)系統(tǒng)的研制[D].南京:東南大學(xué)2007.
【3】周贊,周驥平,朱興龍,等.應(yīng)用運(yùn)動(dòng)解耦的三維動(dòng)力平臺(tái)的設(shè)計(jì)與研究[J].現(xiàn)代制造工程,2009(3):115-117.
【4】何麗嬌.宏微結(jié)合精密定位平臺(tái)運(yùn)動(dòng)控制研究[D].廣州:華南理工大學(xué),2008.
【5】李軍.精密定位伺服控制系統(tǒng)的研究與應(yīng)用[D].武漢:湖北工業(yè)大學(xué),2006.
【6】孫中良.光柵檢測(cè)及定位控制技術(shù)的研究[D].南京:東南大學(xué),2005.
【7】趙從福,陳安,胡躍明.基于STM32的點(diǎn)對(duì)點(diǎn)運(yùn)動(dòng)控制器設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2012,20(4):994 -995.
【8】楊雷,激光微加工系統(tǒng)中若干關(guān)鍵技術(shù)的研究[D].鄭州:鄭州大學(xué),2003.
【9】但永平,楊雷.基于 FPGA的光柵尺信號(hào)智能接口模塊[J].國(guó)外電子元器件,2004(12):4-6.
【10】金鋒,盧楊,王文松,等.光柵四倍頻細(xì)分電路模塊的分析與設(shè)計(jì)[J].北京理工大學(xué)學(xué)報(bào),2006,26(12):1703-1076.
【11】吳煥榮.基于msp430單片機(jī)的多功能tig焊控制器[D].北京:北京工業(yè)大學(xué),2005.
【12】李艷,李華,謝鷗.基于ARM的精密內(nèi)圓磨床嵌入式數(shù)控系統(tǒng)結(jié)構(gòu)研究[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2008,21(4):171-173.