王真旭,萬在紅,熊文華,蔣樂云,楊超然
(南昌航空大學信息工程學院,南昌 330000)
光電編碼器是一種通過光電轉(zhuǎn)換技術(shù)將輸入的角度信息轉(zhuǎn)換為相應的數(shù)字脈沖的傳感器,其具有體積小、精確度高、操作方便等優(yōu)點。在過去幾十年中,已經(jīng)發(fā)展為一種成熟的多規(guī)格、高性能的系列工業(yè)產(chǎn)品,主要用于檢測角度位置,也可以通過機械聯(lián)動裝置測量直線位移。因為光電編碼器測量速度、角速度和位移都很簡單,相關(guān)的文獻也有很多,但缺少實際的硬件制作和軟件設計,所以本文基于STC89C52 單片機和光電旋轉(zhuǎn)編碼器設計一個位移測量系統(tǒng),希望能提供一些光電編碼器的硬件使用方法和測量位移的軟件設計思路[1-3]。另一方面,在工業(yè)生產(chǎn)中,流水線上的貨物往往需要精確的位移控制才能被送到相應處理的環(huán)節(jié),為了提高物體傳送的精確性,降低操作人員的失誤率,本文采用增量型光電旋轉(zhuǎn)編碼器對物體進行位移實時顯示,并且通過警報燈和蜂鳴器來提醒操作人員進行做出相應的措施[4-5]。本文首先介紹光電旋轉(zhuǎn)編碼器的工作原理,然后介紹硬件系統(tǒng)的組成和部分重要模塊的實現(xiàn),最后再講解軟件的流程圖,比如如何將采集到的編碼器數(shù)據(jù)轉(zhuǎn)化為位移量。本文只是對編碼器的使用,并未考慮一些誤差,比如電機減速時由于慣性導致多運動一段的誤差距離,關(guān)于光電編碼器的誤差分析可以參考其他文獻[6-8]。
光電編碼器分為增量型、絕對型以及混合型等,本文只簡單介紹增量型光電編碼器。增量型光電編碼器通過光電轉(zhuǎn)化技術(shù),把轉(zhuǎn)軸的幾何位移量轉(zhuǎn)化為等寬脈沖進行輸出,即把連續(xù)的位移量離散化為一個個的等大的脈沖,而且產(chǎn)生的脈沖與位移大小一一對應,因此一個脈沖對應的位移量越小則越精確,記錄的脈沖之和就對應了位移之和。通常情況下,增量型光電編碼器輸出兩個相差90°的脈沖信號(記為A 相、B 相)和每旋轉(zhuǎn)一圈就產(chǎn)生一個的Z 脈沖信號。通過分析A 相和B 相的相位關(guān)系可以方便地判斷出旋轉(zhuǎn)方向,Z 相可以用來減少累計誤差。增量型光電編碼器由光源、碼盤、檢測光柵、光電檢測器件和轉(zhuǎn)換電路等組成,如圖1所示。
圖1 增量型光電編碼器的組成
碼盤上有很多個的透光縫隙,相鄰兩個透光縫隙間距大小相同,并且代表一個周期。檢測光柵上有兩組間距相差剛好1/4 間距的透光縫隙,檢測光柵的透光縫隙和碼盤的透光縫隙間距相同。增量型光電編碼器正常工作時,檢測光柵固定不動,而碼盤被轉(zhuǎn)軸帶動旋轉(zhuǎn),此時由編碼器內(nèi)部光源發(fā)出的光線周期性地穿過碼盤和檢測光柵并且照射到光電檢測器件上時,光電檢測器件將會輸出兩個相位相差90°的正弦信號。緊接著這兩個正弦信號通過轉(zhuǎn)換電路轉(zhuǎn)化為方波,即A 相脈沖和B 相脈沖。增量型光電編碼器輸出信號的波形如圖2所示。
圖2 增量型光電編碼器輸出的波形
增量型光電編碼器的具有體積小、精度高、操作方便等特點,而且既可以用來測量角位移,又可以通過加上聯(lián)軸器來測量直線位移。其缺點是:因為測量直線位移時必須安裝聯(lián)軸器,所以需要考慮由機械摩擦產(chǎn)生的誤差。
準確地計算產(chǎn)生的脈沖個數(shù)是使用增量型光電編碼器測量位移的關(guān)鍵。計算光電編碼器輸出的脈沖個數(shù)主要分為以下兩個步驟:因為在實際操作過程中,電機既能正向旋轉(zhuǎn),又能反向旋轉(zhuǎn)轉(zhuǎn),所以首先對編碼器輸出的A、B 相脈沖進行方向判別,即判斷電機此時是正向旋轉(zhuǎn)還是反向旋轉(zhuǎn);然后根據(jù)正反轉(zhuǎn)得出計數(shù)器是加一還是減一,如果是正轉(zhuǎn)則計數(shù)器加一,如果是反轉(zhuǎn)那么計數(shù)器減一。如圖3所示,當編碼器正轉(zhuǎn)時,A 相超前B相90°,A 相的每一次上升沿處B 相都正好為低電平;當編碼器反轉(zhuǎn)時,A 相滯后B 相90°,A 相的每一次上升沿處B 相都正好為高電平。如果A 相以下降沿為判斷依據(jù),B相的電平相反即可[9-10]。
圖3 編碼器正反轉(zhuǎn)示意圖
相應的計數(shù)方式主要有軟件方式和硬件方式兩種方式。硬件計數(shù)方式是在外部接上由多個可加可減的雙時鐘計數(shù)器(如74LS193 芯片)級聯(lián)而成的加減計數(shù)電路,優(yōu)點是執(zhí)行速度快;軟件方式是將A 相脈沖接單片機INT0 引腳,B 相接單片機P1.0 引腳,設置外部中斷0 為下降沿觸發(fā),當A 相出現(xiàn)下降沿時,進入外部中斷0,判斷B 相電平高低,若為高電平則為正轉(zhuǎn),脈沖數(shù)數(shù)加一,為低電平則相反。軟件方式在光電編碼器脈沖方向判別以及系統(tǒng)控制方面的實時性不及硬件方式,而且編碼器的數(shù)量與系統(tǒng)的可靠性成反比。但是因為它的電路設計相對于硬件方式更簡單,而且本次只使用了一個編碼器,所以本文選用軟件計數(shù)方式。
系統(tǒng)硬件主要包含以下部分[11-13]:(1)單片機最小系統(tǒng)板,選用STC89C52 作為控制核心;(2)編碼器模塊,將位移轉(zhuǎn)化為脈沖輸出;(3)報警模塊,當位移超過某些值時產(chǎn)生相應的報警;(4)報警值存儲模塊,當單片機突然掉電,設置的報警值也不會丟失;(5)液晶顯示模塊,采用1602顯示當前位移和,3個報警值;(6)按鍵模塊,可以根據(jù)需求設置不同的報警值;(7)模擬工業(yè)位移測量模塊,用直流電機帶動齒輪和皮帶旋轉(zhuǎn),模擬工業(yè)中機器運轉(zhuǎn);(8)光電檢測模塊:判斷系統(tǒng)開始測位移和結(jié)束測位移,這樣可以計算出開始和結(jié)束之間的位移。系統(tǒng)總體框架如圖4所示。
圖4 機械位移測量系統(tǒng)總體框架
整體原理圖如圖5所示。
圖5 系統(tǒng)原理
用一個紅外發(fā)光二極管和一個紅外接收管組成一個電路,用來檢測是否有物體通過,當沒有物體通過時輸出低電壓,當有物體時則輸出高電壓。這個信號轉(zhuǎn)到單片機中進行判斷開始或者停止計算位移。將START 端口與單片機的P2.2 引腳相連,END 端口與單片機的P2.4 引腳相連,當光電檢測裝置檢測到高電平時,單片機啟動位移測量模塊。硬件原理圖如圖6所示。
圖6 光帶檢測裝置
為了真實模擬電機帶動編碼器進行測距,選用了一個聯(lián)軸器把編碼器和電機連接在一起,并且選用的是雙出軸直流電機,在電機的另一側(cè)接上孔徑一致的齒輪,齒輪上加一根皮帶,當電機旋轉(zhuǎn)時,一端帶動編碼器測距,另一端帶動皮帶向前轉(zhuǎn)動,它們都是和直流電機同軸旋轉(zhuǎn),同軸旋轉(zhuǎn)距離與半徑成正比,所以進行位移測量的時候,要乘上齒輪半徑與編碼器半徑之比。
電機的選擇:因為測量的是兩個光電開關(guān)的距離,當經(jīng)過第一個開始光電開關(guān)時,單片機開始測距,當?shù)竭_第二個光電開關(guān)時結(jié)束測距,與電機的減速過程沒有關(guān)系,所以選擇最簡單控制的直流電機,直流電機的轉(zhuǎn)速與輸入的電壓有關(guān),考慮到電機轉(zhuǎn)速太快,將電機輸入電壓減小到1 V 以下,以方便測量。模擬工業(yè)電機實物如圖7所示。
圖7 模擬工業(yè)電機實物
本次選用的編碼器的分辨率是600 個脈沖每圈,電源電壓為5 V,孔徑6 mm,有4 根不同顏色的線,不同顏色有特定的作用,綠色的線代表A 相脈沖輸出,白色的線代表B 相脈沖輸出,紅色的線接5 V 電源,黑色的線接地。編碼器輸出的A 相脈沖接到單片機的外部中斷P3.2 引腳,B 相脈沖接到I/O 端口P3.3 口(雖然P3.3引腳有外部中斷功能,但不使用此功能)。當位移測量系統(tǒng)啟動時,首先將INT0 端口設置為下降沿觸發(fā)方式,然后打開相應的中斷。 當INT0 引腳出現(xiàn)下降沿時,單片機程序觸發(fā)外部中斷0,執(zhí)行外部中斷0 的處理程序,此時判別P3.3 引腳是低電平還是高電平。 若該引腳是高電平,則說明此時編碼器正轉(zhuǎn),脈沖個數(shù)加一;若該引腳是低電平,則說明此時編碼器反轉(zhuǎn),脈沖個數(shù)減一。
如果位移記錄采用一般的存儲器,在突然掉電時必須使用備用電池來供電,并且需要在硬件上加入一個檢測掉電的電路,但會出現(xiàn)電池不可靠等特點,為了防止突然掉電導致位移信息丟失的情況發(fā)生。此次使用AT24C02 存儲芯片,它是由Atmel 公司生產(chǎn)的一款CMOS型的存儲器,具有2 kbit 的存儲容量,存儲的數(shù)據(jù)不易丟失,并且能夠反復擦寫很多次,通常能擦寫10 000 次以上。硬件連接圖如圖8所示。
圖8 AT24C02硬件
系統(tǒng)的軟件設計主要包括:數(shù)據(jù)采集和處理程序、報警程序、LCD1602 顯示程序、鍵盤掃描程序、外部存貯和讀取程序。整體流程如圖9~11所示。
圖9 主程序流程
圖10 定時器T0流程
圖11 外部中斷0流程
本文將光電旋轉(zhuǎn)編碼器與單片機結(jié)合起來設計了一個機械位移測量系統(tǒng),該系統(tǒng)通過電機帶動皮帶工作模擬了工業(yè)旋轉(zhuǎn)設備的正常運行,具有體積小、精度高、既能夠測量角位移又可以通過機械轉(zhuǎn)換裝置測量直線位移的特點,成功實現(xiàn)了實時數(shù)據(jù)顯示和報警等功能。本文也簡單介紹編碼器的工作原理并且提供了一些簡單的硬件和軟件使用方法,但是本文并沒有考慮聯(lián)軸器與編碼器機械摩擦產(chǎn)生的誤差,相關(guān)的分析可參考其他論文介紹??傮w來說,該系統(tǒng)提高了位移測量的準確度,有效減少了測量誤差。