本發(fā)明應(yīng)用于儀器面板的旋鈕中,尤其涉及一種微調(diào)編碼器,旨在為儀器使用者提供操作更為現(xiàn)代化、使用壽命更長、可靠性更高的微調(diào)組件。
背景技術(shù):
現(xiàn)代儀器設(shè)備通常都會提供給用戶一個(gè)微調(diào)組件(如旋鈕和滾輪)方便用戶進(jìn)行精密操作,傳統(tǒng)的滾輪方案包括滾輪和與其相連的小金屬。
當(dāng)滾輪滾動時(shí),滾輪帶動與其相連的小金屬滾輪一起滾動,過程中金屬滾輪與其外殼內(nèi)壁的金屬滑道摩擦,在滑道上預(yù)留有相位相差90°的輸出端,這樣便產(chǎn)生了相位相差90°的兩相的脈沖信號,對產(chǎn)生的兩相脈沖信號分析和處理便可以使設(shè)備做出精準(zhǔn)的響應(yīng)。
但事實(shí)上這種方案中,金屬滾輪與其外殼內(nèi)壁的滑道總是存在直接接觸,隨著時(shí)間推移,金屬極易氧化從而降低滾輪的靈敏度,甚至直接導(dǎo)致滾輪失效。雖然目前已經(jīng)有基于光電編碼器的微調(diào)組件應(yīng)用于市場,但其包含光耦、前面板旋鈕、光電碼盤等等,多樣的元件類型和復(fù)雜的結(jié)構(gòu)組合為設(shè)備的裝配帶來了很多困難。。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種本發(fā)明采用光耦作為基本傳感器,將光耦在電路板上排成環(huán)形陣列實(shí)現(xiàn)對手指運(yùn)動的檢測,整個(gè)方案不需要旋鈕或滾輪等實(shí)物,僅需用手指做簡單的運(yùn)動就可以實(shí)現(xiàn)微調(diào)操作的全部要求。
具體而言本發(fā)明提供一種用于儀器面板的微調(diào)編碼器,其特征在于:包括在電路板上設(shè)置的觸摸區(qū)和設(shè)置在觸摸區(qū)周圍的多個(gè)光電傳感器,每個(gè)所述光電傳感器包括紅外發(fā)射管和紅外接收管。
進(jìn)一步地,其特征在于:所述觸摸區(qū)為一圓形凹蓋結(jié)構(gòu)。
進(jìn)一步地,其特征在于:所述電路板上的光電檢測電路為,光電傳感器的發(fā)射管通過限流電阻r串聯(lián)到電源,傳感器的接收管與第二電阻ro串聯(lián)到電源,然后將接收管與電阻ro的連接端接入比較器,與參考電壓對比得到輸出信號。
進(jìn)一步地,其特征在于:每只光電傳感器的紅外接收管能從對側(cè)的光電傳感器的發(fā)射管發(fā)射的紅外光接收到微弱部分,此時(shí)接收管呈高阻態(tài);而當(dāng)接收到本光電傳感器的發(fā)射管發(fā)射的光碰到障礙物后反射回來的光時(shí),呈低阻態(tài)。
進(jìn)一步地,其特征在于:所述光電傳感器有6個(gè)或以上,呈左右對稱布置。
進(jìn)一步地,其特征在于:對所述傳感器進(jìn)行編碼,高阻為1,低租狀態(tài)為0,則可對多個(gè)傳感器建立編碼表,不同編碼賦予不同的數(shù)值,則通過障礙物動作前后,編碼對應(yīng)數(shù)值的增減來判斷順時(shí)針還是逆時(shí)針移動。
本發(fā)明還提供一種用于儀器面板的微調(diào)編碼器系統(tǒng),其特征在于:包括在電路板上設(shè)置的觸摸區(qū)和設(shè)置在觸摸區(qū)周圍的多個(gè)光電傳感器,每個(gè)所述光電傳感器包括紅外發(fā)射管和紅外接收管,其中每只光電傳感器的紅外接收管能從對側(cè)的光電傳感器的發(fā)射管發(fā)射的紅外光接收到微弱部分,此時(shí)接收管呈高阻態(tài);而當(dāng)接收到本光電傳感器的發(fā)射管發(fā)射的光碰到障礙物后反射回來的光時(shí),呈低阻態(tài)。
其中,所述光電傳感器為多個(gè),且一半分布在觸摸區(qū)左邊,一半分布在觸摸區(qū)右邊,并對所述傳感器進(jìn)行編碼,高阻為1,低租狀態(tài)為0,則可對多個(gè)傳感器建立編碼表,不同編碼賦予不同的數(shù)值,則通過障礙物動作前后,編碼對應(yīng)數(shù)值的增減來判斷順時(shí)針還是逆時(shí)針移動。
進(jìn)一步地,其特征在于:所述傳感器為6個(gè),傳感器的編碼總共有六種,分別是011111、101111、110111、111011、111101、111110,建立如下編碼匹配數(shù)表,
編碼狀態(tài)值是取三位二進(jìn)制數(shù)的十進(jìn)制值,左右狀態(tài)lr=1表示觸發(fā)管在左側(cè),反之表示觸發(fā)管在右側(cè),判斷時(shí)先判斷l(xiāng)r是否有變化,如果沒有變化,則直接將讀取到的上升沿前后的編碼狀態(tài)值作差,為正則為順時(shí)針方向,反之為逆時(shí)針方向,如果lr狀態(tài)發(fā)生改變,則將編碼狀態(tài)前后差值取反,以最終結(jié)果的正負(fù)來判斷旋轉(zhuǎn)的方向。
進(jìn)一步地,本發(fā)明還提供一種用于儀器面板的微調(diào)編碼器系統(tǒng),其特征在于:包括在電路板上設(shè)置的觸摸區(qū)和設(shè)置在觸摸區(qū)周圍的多個(gè)光電傳感器,每個(gè)所述光電傳感器包括紅外發(fā)射管和紅外接收管,其中每只光電傳感器的紅外接收管能從對側(cè)的光電傳感器的發(fā)射管發(fā)射的紅外光接收到微弱部分,此時(shí)接收管呈高阻態(tài);而當(dāng)接收到本光電傳感器的發(fā)射管發(fā)射的光碰到障礙物后反射回來的光時(shí),呈低阻態(tài);
其中,所述光電傳感器為6個(gè),且對其進(jìn)行順序編號,某一光電傳感器為低阻態(tài)時(shí)整體的編碼器設(shè)定為一數(shù)值,例如0到5,并在障礙物跨越不超過半圈時(shí),根據(jù)觸摸時(shí),起始狀態(tài)對應(yīng)的數(shù)值so和終點(diǎn)狀態(tài)對應(yīng)的數(shù)值差值判斷旋轉(zhuǎn)方案的具體方法如下:
記e=s1-s0,顯然e滿足:-5<=e<=5,如果e為0或者±3,則不做任何處理,如果e<-3則e=e+6,如果e>3則e=e-6,此時(shí)依據(jù)最終的e的數(shù)值判斷方向,為正則為順時(shí)針,反之則為逆時(shí)針。
本發(fā)明還提供一種面板動作識別方法,其特征在于采用權(quán)利要求7-9任一項(xiàng)所述的微調(diào)編碼器系統(tǒng)進(jìn)行識別。
本發(fā)明的方案結(jié)構(gòu)簡單,且可有效檢測手指的觸摸動作,實(shí)際應(yīng)用前景廣泛。
附圖說明:
圖1是本發(fā)明光電編碼器結(jié)構(gòu)示意圖。
圖2是本發(fā)明中光信號檢測電路圖。
圖3是無阻擋時(shí)編碼器示意圖。
圖4是有阻擋時(shí)編碼器示意圖。
圖5是實(shí)施例1的工作流程圖。
圖6是實(shí)施例2的原理圖。
圖7是實(shí)施例2檢測算法流程圖。
圖8是實(shí)施例3的流程示意圖。
具體實(shí)施方式:
參見圖2,本發(fā)明的光電編碼器結(jié)構(gòu),為在一電路板上形成一接觸區(qū),接觸區(qū)優(yōu)選為圓形凹蓋結(jié)構(gòu),在所述接觸區(qū)外側(cè)設(shè)置多只光電傳感器,圖中,傳感器的數(shù)量為6只,左右各三只,對稱設(shè)置,但實(shí)際中并不限于6只,也可以更少或更多。布置方式也可以靈活多樣,對稱與否皆可。
其中優(yōu)選地,所述傳感器的布置數(shù)量按照如下方式和數(shù)量布置,光電編碼器的分辨率為θ度,如果傳感器均勻分布在圓周上,則該編碼器的數(shù)量為大于360°/θ。如果非均勻布置,則至少將相鄰兩個(gè)傳感器中軸線的夾角設(shè)置小于θ。
參見圖3,示出了每只光電傳感器連接的光電檢測電路,其中光電傳感器的發(fā)射管通過限流電阻r串聯(lián)到電源(限流電阻較大,發(fā)射出的紅外光較弱),傳感器的接收管與另一個(gè)電阻ro串聯(lián)到電源,然后將接收管與電阻ro的連接端接入比較器與參考電壓對比得到輸出。
參見圖4,當(dāng)接觸區(qū)不存在障礙物時(shí),例如手指,每只光電傳感器的紅外發(fā)射管發(fā)出的紅外光射向?qū)Ψ剑捎谙蘖麟娮栎^大,發(fā)出的而對方的紅外接受管僅能接受到微弱的紅外光,此時(shí),接受管呈高阻態(tài),vin的電壓值較高。
參見圖5,當(dāng)手指近光電傳感器時(shí),相關(guān)光電傳感器的紅外發(fā)射管發(fā)出的紅外光,由于手指的阻擋和反射,返回到該光電傳感器的接受管上,即在光電傳感器的紅外接受管上能夠接受到較強(qiáng)的紅外光照產(chǎn)生較大光電流,使得vin1的電壓值被拉低。
這樣,結(jié)合圖3的電路可知,該路電路就能夠準(zhǔn)確地將手指是否擋住光耦這一邏輯問題轉(zhuǎn)化為可以為控制器識別的數(shù)字信號0和1——高電平為1,低電平為0。監(jiān)測這6路輸出,沒有人為操作時(shí),6路檢測輸出均為高電平。當(dāng)手指接觸時(shí),某幾路光耦接收管為低電平。優(yōu)選的,通過設(shè)置傳感器的位置,使得避免出現(xiàn)同時(shí)兩個(gè)傳感器被擋住的情況。
假設(shè)從左下側(cè)第一個(gè)傳感器順時(shí)針到右下側(cè)最后一個(gè)傳感器的序號分別為a、b、c、。d、e、f,則圖4中的傳感器c為高電平,其他為低電平,則六只傳感器的編碼為110111。則傳感器的編碼總共有六種,分別是011111、101111、110111、111011、111101、111110。
在在判斷脈沖數(shù)和旋轉(zhuǎn)方向時(shí),根據(jù)六種編碼狀態(tài),并引入光電狀態(tài)變量code_state,建立如下編碼匹配數(shù)表,
其中用2個(gè)變量來描述紅外對管的狀態(tài)——code_state和lr,上述的數(shù)表實(shí)際是二進(jìn)制轉(zhuǎn)化10進(jìn)制的計(jì)算程序,lr=1表示觸發(fā)管在左側(cè),反之表示觸發(fā)管在右側(cè)。
程序以讀取到下降沿觸發(fā)為中斷,將檢測到下降沿的該路光耦狀態(tài)置0,讀取此時(shí)所有的光電檢測的狀態(tài),并將此時(shí)的光路檢測的結(jié)果記錄在變量code_state中。
先判斷l(xiāng)r是否有變化,如果沒有變化,則直接將讀取到的上升沿前后的code_state值作差,為正則為順時(shí)針方向,反之為逆時(shí)針方向,如果lr狀態(tài)發(fā)生改變,則將code_state前后差值取反,以最終結(jié)果的正負(fù)來判斷旋轉(zhuǎn)的方向。具體流程圖見圖5。
實(shí)施例2:
本發(fā)明的第二個(gè)實(shí)施例中,電路結(jié)構(gòu)與實(shí)施例1相同,但是動作識別方法不同。參見圖5-6示出了實(shí)施例2的原理圖。
下面說明一下本發(fā)明旋轉(zhuǎn)方向的識別原理:
首先是旋轉(zhuǎn)方向的規(guī)定:從此6個(gè)位置中的一個(gè)位置運(yùn)動到另一個(gè)位置的時(shí)候,如果僅能獲知初始位置和最終位置(如圖5所示),則理論上可以認(rèn)為是順時(shí)針移動5個(gè)位置或是逆時(shí)針移動1個(gè)位置,假定每個(gè)光電傳感器發(fā)生故障的概率為p,則對應(yīng)著逆時(shí)針移動1個(gè)位置的情況的概率為:
p(逆時(shí)針1個(gè)位置)=(1-p)
而對應(yīng)著順時(shí)針移動5個(gè)位置的情況為,從1到4的4組傳感器全部故障,此時(shí)的概率為:
p(順時(shí)針5個(gè)位置)=p4
通常傳感器故障概率p很小,所以(1-p)>>p4,即對應(yīng)此種位置變動情況應(yīng)該取逆時(shí)針旋轉(zhuǎn)1個(gè)位置。同樣的,對于其他情況下的位置變動,應(yīng)當(dāng)認(rèn)為移動位置數(shù)小的方式為用戶的實(shí)際方式,這也意味著一次只能夠得到3以內(nèi)的脈沖數(shù)變化。
其次是如何對這些數(shù)字得變動判斷出具體的運(yùn)動方向。本發(fā)明方案所選用的判斷方案基于計(jì)算機(jī)編碼中的補(bǔ)碼的思想——將圓周運(yùn)動與進(jìn)制數(shù)結(jié)合,將本問題抽象為六進(jìn)制數(shù)問題。此種解決方案的核心思想在于可以0作為六進(jìn)制中的10或-10來參與運(yùn)算(10=1x6+0=6;-10=-1x6+0=-6),即所有對位置的記錄為對一個(gè)六進(jìn)制數(shù)的最后一位的記錄。
對于六進(jìn)制數(shù)而言,兩個(gè)六進(jìn)制數(shù)a、b作差得到數(shù)n=a-b,對6的余數(shù)必然是0至6的整數(shù):
r1=nmod6∈{0,1,2,3,4,5}
為了便于算法判斷旋轉(zhuǎn)方向,并與前面規(guī)定的3以內(nèi)個(gè)數(shù)的移動相對應(yīng),將上述計(jì)算其結(jié)果用-3至3的數(shù)來表示:
r2=f(r1)∈{-3,-2,-1,0,1,2,3}
得益于每次對位置的記錄僅為對六進(jìn)制數(shù)的最后一位的記錄,每次計(jì)算的結(jié)果最多只會產(chǎn)生高位±1個(gè)進(jìn)位,所以僅需要將0作為6和-6參與運(yùn)算便可以得到正確數(shù)值。即將上述算得的n作如下處理:
由于計(jì)算機(jī)并不能直接計(jì)算余數(shù),而本實(shí)例所涉及的余數(shù)計(jì)算最多產(chǎn)生±1位的進(jìn)位,所以對兩個(gè)六進(jìn)制數(shù)的差值直接作如下運(yùn)算便可以得到最終結(jié)果:
以r的值便可以判斷具體旋轉(zhuǎn)方向與旋轉(zhuǎn)數(shù)。
如圖所示,六個(gè)傳感器分別標(biāo)示為0,1,2,3,4,5共六個(gè)位置圍成一個(gè)圓形,現(xiàn)在手指從一個(gè)位置運(yùn)動到另一個(gè)位置,需要判斷手指是順時(shí)針運(yùn)動還是逆時(shí)針運(yùn)動,此時(shí)對于手指的滑動不嚴(yán)格,可以中間漏掉一些光電編碼器,但是要求手指遮擋的光電編碼器(或者其他原因漏掉的脈沖)中至少有一對相鄰的編碼器跨越不超過半周(不能跨越3個(gè)傳感器及以上,當(dāng)然在圓周上有其他數(shù)量編碼器的情況下,該數(shù)量不同,總之是不跨越半周即可),如果手指只在初始位置和結(jié)束位置放一下,則這兩個(gè)位置要求不跨越3個(gè)編碼器。
具體方法是,用兩次的位置數(shù)值做一次減法,對求得的差做進(jìn)一步處理從而給出判斷,其中規(guī)定絕對值小于(不取等于)3格的操作為欲識別的操作,如果大于3則減去6,如果小于-3則加上六。在圖中情況下,從0位置到5位置,兩次的減法值為5(雖然可以理解為順時(shí)針5格也可以理解為逆時(shí)針1格)。這里5>3,所以將得到的結(jié)果減6(類似與補(bǔ)碼)為-1,即認(rèn)定為逆時(shí)針1格。
下面結(jié)合圖7說明實(shí)施例2的工作方法:
其中先設(shè)定,將a,b,c,d,e,f這6相信號傳輸?shù)教幚砥?,每一路信號均為上升下降沿觸發(fā),定義整個(gè)過程中標(biāo)志位變量——flag(默認(rèn)為0)。當(dāng)處理器檢測到上升沿信號時(shí),將flag置為1,并記錄對應(yīng)傳感器位置編號,當(dāng)處理器檢測到下降沿信號時(shí),根據(jù)flag的值作出不同的判斷,如果flag=1,說明之前已經(jīng)接收到了上升沿,則記錄此時(shí)的檢測到的傳感器的位置編號,據(jù)此判斷方向,然后將flag至0,否則不做任何處理。本實(shí)施例中設(shè)置flag主要目的在于更加準(zhǔn)確識別用戶操作,其設(shè)定為只有檢測到一個(gè)上升沿之后,后續(xù)的下降沿才被認(rèn)為是有效脈沖信號,之后將這個(gè)狀態(tài)重置(也就是將flag重置),不斷地重置和讀取。這樣做可以避免很多問題,比如說,比采用定時(shí)器延時(shí)來重置的方法更加準(zhǔn)確。
具體工作流程為:系統(tǒng)啟動上電后,首先進(jìn)行初始化和自檢(主要檢測各路傳感器是否可以正常工作),如果有錯(cuò)則顯示在顯示屏上提示用戶。之后對flag變量賦默認(rèn)值0。之后處理器對6路信號進(jìn)行監(jiān)測,如果監(jiān)測到某路信號產(chǎn)生上升沿,則將該路信號的位置記錄下來為s0,將flag置1,然后程序進(jìn)入持續(xù)檢測階段。如果檢測到下降沿,則依據(jù)flag的數(shù)值做如下操作:為0則不做任何操作返回檢測狀態(tài);為1則記錄此時(shí)觸發(fā)信號的位置s1,將s0與s1按照最開始提到的減法規(guī)則進(jìn)行計(jì)算,從而判斷旋轉(zhuǎn)方向然后將flag的值重新歸零。(s0、s1為全局變量,新的觸發(fā)信號會復(fù)寫這兩個(gè)變量)。
根據(jù)s1與s0的差值判斷旋轉(zhuǎn)方案的具體方法如下:
記e=s1-s0,顯然e滿足:-5<=e<=5,如果e為0或者±3,則不做任何處理,如果e<-3則e=e+6,如果e>3則e=e-6,此時(shí)依據(jù)最終的e的數(shù)值判斷方向,為正則為順時(shí)針,反之則為逆時(shí)針。
優(yōu)選地,某個(gè)光電傳感器不夠穩(wěn)定,信號一直在0和1之間變動,即在同一個(gè)位置不斷接收到上升沿與下降沿,此時(shí)由于s1-s0為0,故而處理器不做響應(yīng),避免了誤動作。
本實(shí)施例采用的方法,將s1-s0最終處理為-3至0或者0至3之間的數(shù),也就是說可以正確識別2個(gè)光電位置的跨度,因而只要不是超過兩個(gè)連續(xù)的光電傳感器故障,系統(tǒng)都能夠正確運(yùn)行。
采用本方案的方法,即使過程中由于某些因素導(dǎo)致丟失了一個(gè)、兩個(gè)脈沖,編碼器也能夠正確的判斷出方向,這也是可靠性的保證。
對于手指或其他障礙物寬度較粗,可能同時(shí)擋住2個(gè)光電傳感器的情形,采用本實(shí)施例的方案也可以正確地識別,因?yàn)檫@種情況下并不會使s1與s0的差值出現(xiàn)2以上的偏差。例如,初始狀態(tài)為001111,移動過程中先變?yōu)?01111,再變?yōu)?00111,即上升沿的觸發(fā)位置與下降沿的觸發(fā)位置相隔為2,相當(dāng)于有一個(gè)傳感器沒有工作,此時(shí)系統(tǒng)也能夠正常工作。
實(shí)施例3:
實(shí)施例3的方案相比于之前的方案主要增加了自校準(zhǔn)功能,本發(fā)明主要用于儀器面板,屬于一類人機(jī)交互的方式,很多故障會導(dǎo)致實(shí)際編碼效果出現(xiàn)偏差,由于本發(fā)明硬件上使用了6組光電傳感器,而理論上3組光電傳感器即可以實(shí)現(xiàn)最基本的有效脈沖發(fā)生功能。這意味著本發(fā)明實(shí)例所使用的方案在即使有3組光電編碼器均故障的場合,通過內(nèi)部算法的調(diào)整(自動校準(zhǔn))可以在用戶維修困難的場合做應(yīng)急使用。
首先自校準(zhǔn)需要找出存在故障的光電編碼器組:程序進(jìn)入自校準(zhǔn)模式后,可以請用戶按照提示進(jìn)行3次滿圓周操作,如果連續(xù)3次所記錄下的有效脈沖數(shù)不為同一個(gè)數(shù)值,提示用戶重新進(jìn)行校準(zhǔn);反之則記錄下3次記錄的脈沖數(shù)n1,提示用戶進(jìn)入下一步。分別提出6次請求,要求用戶在前面板的6條刻度線前用手指分別單獨(dú)嘗試觸發(fā)傳感器,將能夠成功讀取到上升沿和下降沿的光電傳感器組標(biāo)記為有效組并記錄下總數(shù)n2,反之為無效組;反復(fù)進(jìn)行三次,若n1=n2>2,則提示用戶校準(zhǔn)成功,等待機(jī)器內(nèi)部程序進(jìn)行調(diào)整。若n1不等于n2,提示用戶校準(zhǔn)失敗,重新嘗試。
針對實(shí)施例1的方案,在獲得故障編碼器組的位置和數(shù)量后,按照向上取整的規(guī)則對剩下的有效傳感器數(shù)n1重新分為邏輯左組和邏輯右組。以3組傳感器故障的情況為例,向上取整分為邏輯左2組、邏輯右1組(此時(shí)可以不必關(guān)心傳感器的實(shí)際位置),可以建立新的編碼數(shù)表:
在此新的編碼數(shù)表的基礎(chǔ)上,按照實(shí)例1所提出的算法繼續(xù)進(jìn)行判斷便可以實(shí)現(xiàn)基本功能,但是此時(shí)的編碼器的有效傳感器從6組減少到3組,再有傳感器故障或其他不利因素影響本系統(tǒng),有一定可能會造成丟失脈沖或者脈沖錯(cuò)誤的情況,應(yīng)提示用戶。
針對實(shí)施例2的方案,在用戶自校準(zhǔn)已經(jīng)找到故障傳感器的前提下,原設(shè)定的六進(jìn)制運(yùn)算變?yōu)閚1進(jìn)制運(yùn)算(n1為剩下的有效傳感器組數(shù)),僅僅需要對剩余的n1組傳感器依次進(jìn)行編碼得到新的編碼值,在此基礎(chǔ)上繼續(xù)實(shí)例2所使用的算法便可以順利完成所需功能,重新具體流程圖如圖8所示:從第0組傳感器開始至第5組傳感器,根據(jù)校準(zhǔn)過程中獲得的傳感器故障信息,依次判斷第i組傳感器是否故障。如果正常則對應(yīng)的編碼值加1,反之則跳過。如此便可以將剩余的n1組有效傳感器全部正確編碼(即圖中的m值),完成六進(jìn)制到n1進(jìn)制的變換。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。此外,盡管本說明書中使用了一些特定的術(shù)語,但這些術(shù)語僅僅是為了方便說明,并不對本發(fā)明構(gòu)成任何限制。