周祥才
(常州工學(xué)院光電工程學(xué)院,江蘇 常州 213002)
光電編碼器內(nèi)部是一組碼盤結(jié)構(gòu),一旦受到外部的振動(dòng)或抖動(dòng)干擾,A、B通道輸出信號(hào)有可能出現(xiàn)干擾的窄脈沖信號(hào),引起正反向錯(cuò)誤計(jì)數(shù)[1],出現(xiàn)誤碼現(xiàn)象。減少或消除誤碼的方法很多,如通過辨向和電子細(xì)分電路設(shè)計(jì)[2],讓干擾引起的正反計(jì)數(shù)相抵消,減少誤碼的影響,但干擾不具備對(duì)稱性,計(jì)數(shù)不受控,實(shí)際上不能完全消除誤碼;利用A、B通道信號(hào)出現(xiàn)的有限狀態(tài)機(jī)設(shè)計(jì)硬件電路[3],通過數(shù)據(jù)儲(chǔ)存器(RAM)固定地址的有序狀態(tài)輸出和軟件判別排除誤碼,該方法有較好的效果,但不具備四倍頻功能,另外RAM數(shù)據(jù)地址固定不變,干擾脈沖的存在會(huì)引起RAM數(shù)據(jù)地址復(fù)位,出現(xiàn)漏計(jì)數(shù)。
針對(duì)四倍頻電路的計(jì)數(shù)脈沖輸出,設(shè)計(jì)了相應(yīng)計(jì)數(shù)脈沖的狀態(tài)電路,并通過軟件對(duì)計(jì)數(shù)狀態(tài)的識(shí)別,甄別每個(gè)正反計(jì)數(shù)脈沖,從根本上消除誤碼計(jì)數(shù)。
圖1為采用邏輯門電路獲得的四細(xì)分辨向電路[4]。RC積分電路和與門組成單穩(wěn)態(tài)窄脈沖信號(hào)產(chǎn)生電路,在A、B信號(hào)跳變處產(chǎn)生四路相位依次相差的窄脈沖,后經(jīng)四與或門實(shí)現(xiàn)信號(hào)四倍頻電子細(xì)分和辨向。正向旋轉(zhuǎn)時(shí),u01為脈沖信號(hào),u02為高電平,電路各點(diǎn)的信號(hào)狀態(tài)和輸出波形如圖2所示。當(dāng)反向旋轉(zhuǎn)時(shí),u01為高電平,u02為脈沖信號(hào)。為實(shí)現(xiàn)統(tǒng)一計(jì)數(shù)和方向識(shí)別,將輸出信號(hào)u01、u02接入與門U5,獲得正反向的計(jì)數(shù)脈沖,并連接至單片機(jī)的端,實(shí)現(xiàn)邊沿觸發(fā)中斷計(jì)數(shù)[4],同時(shí)將 u01、u02分別接入 P1.4、P1.5,用于正反向方向識(shí)別。
圖1 電子四細(xì)分及辨向電路圖
圖2 四倍頻脈沖輸出狀態(tài)波形圖
在碼盤正反轉(zhuǎn)變化的一個(gè)周期內(nèi),正反轉(zhuǎn)各有4個(gè)脈沖輸出,為表征每一個(gè)計(jì)數(shù)脈沖,需要8種狀態(tài)對(duì)應(yīng)于正反轉(zhuǎn)的8個(gè)計(jì)數(shù)脈沖,顯然僅用A、B信號(hào)變化狀態(tài)是不夠的。本文采用4個(gè)D觸發(fā)器組成計(jì)數(shù)脈沖到來時(shí)相對(duì)應(yīng)的時(shí)序狀態(tài)信號(hào)產(chǎn)生電路,如圖3所示。
圖3 計(jì)數(shù)脈沖輸出狀態(tài)電路圖
D觸發(fā)器兩兩串聯(lián),同相端信號(hào)輸出的特性方程為:
D觸發(fā)器同相端信號(hào)輸出狀態(tài) Q4、Q3、Q2、Q1剛好對(duì)應(yīng)正反轉(zhuǎn)的計(jì)數(shù)脈沖,正向轉(zhuǎn)動(dòng)時(shí)的狀態(tài)波形如圖4所示。
圖4 計(jì)數(shù)脈沖狀態(tài)波形圖
當(dāng)供給D觸發(fā)器的時(shí)鐘信號(hào)足夠高時(shí),一般取A、B通道信號(hào)最高頻率的8倍以上,則在正反轉(zhuǎn)時(shí),A、B 通道信號(hào)跳變處的狀態(tài)由 Q4、Q3、Q2、Q1表示,狀態(tài)固定且有序。例如,正轉(zhuǎn)時(shí),A信號(hào)超前于B信號(hào),脈沖計(jì)數(shù)狀態(tài)分別為0001、0111、1110、1000,由于 Q4、Q3、Q2、Q1輸出信號(hào)接入單片機(jī)的 P1 口的 P1.3~ P1.0,若屏蔽 P1 口的高4位,則狀態(tài)可分別記為01H、07H、0EH、08H。同理,當(dāng)反轉(zhuǎn)時(shí),脈沖計(jì)數(shù)狀態(tài)分別為0100、1101、1011、0010,狀態(tài)分別為04H、0DH、0BH、02H。
當(dāng)U5輸出的計(jì)數(shù)脈沖到來時(shí),引起端下降沿觸發(fā)中斷。在中斷程序中,脈沖能否被計(jì)數(shù)需要判定以下條件:①讀取 P1.4、P1.5值,判定是否是正反轉(zhuǎn)方向;②讀取 P1.3~ P1.0值,判定是否是正轉(zhuǎn)或反轉(zhuǎn)時(shí)允許出現(xiàn)的正常狀態(tài);③如果是計(jì)數(shù)狀態(tài),還需要判定是否與上一個(gè)脈沖計(jì)數(shù)狀態(tài)不相同。因?yàn)樵谡^D(zhuǎn)動(dòng)時(shí),Q4、Q3、Q2、Q1的狀態(tài)是按時(shí)序變化的,若干擾脈沖產(chǎn)生時(shí),有可能出現(xiàn)連續(xù)多個(gè)允許計(jì)數(shù)狀態(tài),如果不加判斷,則有可能產(chǎn)生誤計(jì)數(shù)。如圖5是在正向轉(zhuǎn)動(dòng)時(shí),由于抖動(dòng)在A通道出現(xiàn)干擾脈沖時(shí)的狀態(tài)波形圖。Q4、Q3、Q2、Q1依次出現(xiàn)了 01H、07H、0EH、0DH、0EH、08H多個(gè)狀態(tài),第一、第二、第三和第六個(gè)狀態(tài)是正常計(jì)數(shù)狀態(tài),第四個(gè)狀態(tài)0DH是非計(jì)數(shù)狀態(tài),第五個(gè)狀態(tài)0EH雖是計(jì)數(shù)狀態(tài),但由于與前一個(gè)計(jì)數(shù)狀態(tài)相同,不能被計(jì)數(shù)。
圖5 干擾時(shí)脈沖計(jì)數(shù)狀態(tài)波形圖
檢測(cè)角位移和角速度的計(jì)數(shù)方法略有不同,前者只需連續(xù)計(jì)數(shù),而后者則需要獲取單位時(shí)間內(nèi)的計(jì)數(shù),一般通過T0定時(shí)中斷程序設(shè)置中斷時(shí)間,獲得單位時(shí)間的脈沖計(jì)數(shù)。角位移的脈沖計(jì)數(shù)中斷程序主要包括:P1口的取值;判斷 P1.4、P1.5的電平,確認(rèn)是加數(shù)還是減數(shù);判斷P1的低4位是否是計(jì)數(shù)狀態(tài);判斷加減狀態(tài)是否是上次計(jì)數(shù)狀態(tài);完成加減數(shù);保存本次計(jì)數(shù)狀態(tài),具體流程圖如圖6所示。
圖6 中斷程序流程圖
通過識(shí)別計(jì)數(shù)脈沖狀態(tài),提高了光電編碼器系統(tǒng)的計(jì)數(shù)準(zhǔn)確性,有效地防止了誤碼被計(jì)數(shù)。但由于每次計(jì)數(shù)需要單片機(jī)的中斷響應(yīng)和狀態(tài)判斷,限制了計(jì)數(shù)脈沖頻率上限。因此,采用這種方法時(shí),需要根據(jù)運(yùn)動(dòng)部件的轉(zhuǎn)速和選用的光電編碼器的每轉(zhuǎn)脈沖數(shù)估算通道的輸出脈沖的最高頻率,恰當(dāng)?shù)剡x取單片機(jī)的工作頻率,確保相鄰兩計(jì)數(shù)脈沖到來時(shí),系統(tǒng)能夠響應(yīng)計(jì)數(shù)中斷,以免漏計(jì)數(shù)。
[1]李紅果.一種光電編碼器位置檢測(cè)系統(tǒng)研究與應(yīng)用[J].微計(jì)算機(jī)信息,2008,24(2):88 -89.
[2]劉玉鳳,劉學(xué)軍.基于增量式光電編碼盤的電機(jī)測(cè)速研究[J].機(jī)械與電子,2010(2):45-47.
[3]蔣晶,蔣東方,高航.高可靠性增量式光電編碼接口電路設(shè)計(jì)[J].測(cè)控技術(shù),2009,28(2):1-4.
[4]張國(guó)雄,金篆芷.測(cè)控電路[M].北京:機(jī)械工業(yè)出版社,2000.