絕對(duì)式光電編碼器基本構(gòu)造及特點(diǎn)
用增量式光電編碼器有可能由于外界的干擾產(chǎn)生計(jì)數(shù)錯(cuò)誤,并且在停電或故障停車(chē)后無(wú)
法找到事故前執(zhí)行部件的正確位置。采用絕對(duì)式光電編碼器可以避免上述缺點(diǎn)。絕對(duì)式光電
編碼器的基本原理及組成部件與增量式光電編碼器基本相同,也是由光源、碼盤(pán)、檢測(cè)光柵、
光電檢測(cè)器件和轉(zhuǎn)換電路組成。與增量式光電編碼器不同的是,絕對(duì)式光電編碼器用不同的
數(shù)碼來(lái)分別指示每個(gè)不同的增量位置,它是一種直接輸出數(shù)字量的傳感器。在它的圓形碼盤(pán)
上沿徑向有若干同心碼道,每條上由透光和不透光的扇形區(qū)相間組成,相鄰碼道的扇區(qū)數(shù)目
是雙倍關(guān)系,碼盤(pán)上的碼道數(shù)就是它的二進(jìn)制數(shù)碼的位數(shù),在碼盤(pán)的一側(cè)是光源,另一側(cè)對(duì)
應(yīng)每一碼道有一光敏元件;當(dāng)碼盤(pán)處于不同位置時(shí),各光敏元件根據(jù)受光照與否轉(zhuǎn)換出相應(yīng)
的電平信號(hào),形成二進(jìn)制數(shù)。這種編碼器的特點(diǎn)是不要計(jì)數(shù)器,在轉(zhuǎn)軸的任意位置都可讀出
一個(gè)固定的與位置相對(duì)應(yīng)的數(shù)字碼。顯然,碼道越多,分辨率就越高,對(duì)于一個(gè)具有 N 位
二進(jìn)制分辨率的編碼器,其碼盤(pán)必須有N 條碼道。絕對(duì)式光電編碼器原理如圖1-8 所示。
絕對(duì)式光電編碼器是利用自然二進(jìn)制、循環(huán)二進(jìn)制(格雷碼)、二-十進(jìn)制等方式進(jìn)行光
電轉(zhuǎn)換的。絕對(duì)式光電編碼器與增量式光電編碼器不同之處在于圓盤(pán)上透光、不透光的線條
圖形,絕對(duì)光電編碼器可有若干編碼,根據(jù)讀出碼盤(pán)上的編碼,檢測(cè)絕對(duì)位置。它的特點(diǎn)是:
可以直接讀出角度坐標(biāo)的絕對(duì)值;沒(méi)有累積誤差;電源切除后位置信息不會(huì)丟失;編碼器的
精度取決于位數(shù);最高運(yùn)轉(zhuǎn)速度比增量式光電編碼器高。
圖1-8 絕對(duì)式光電編碼器原理
1.3.2 碼制與碼盤(pán)
絕對(duì)式光電編碼器的碼盤(pán)按照其所用的碼制可以分為:二進(jìn)制碼、循環(huán)碼(格雷碼)、
十進(jìn)制碼、六十進(jìn)制碼(度、分、秒進(jìn)制)碼盤(pán)等。四位二元碼盤(pán)(二進(jìn)制、格雷碼)如圖
1-9 所示。圖中黑、白色分別表示透光、不透光區(qū)域。
圖 1-9 四位二元碼盤(pán)
圖 1-9(a)是一個(gè)四位二進(jìn)制碼盤(pán),它的最里圈碼道為第一碼道,半圈透光半圈不透光,
對(duì)應(yīng)于最高位C1,最外圈為第n 碼道,共分成2n 個(gè)亮暗間隔,對(duì)應(yīng)于最低位Cn,n 位二元
碼盤(pán)最小分辨率為:
二進(jìn)制馬盤(pán)的缺點(diǎn)是:每個(gè)碼道的黑白分界線總有一半與相鄰內(nèi)圈碼道的黑白分界線是
對(duì)齊的,這樣就會(huì)因黑白分界線刻畫(huà)不精確造成粗誤差。采用其他的有權(quán)編碼時(shí)也存在類(lèi)似
的問(wèn)題。圖1-10 是一個(gè)四位二進(jìn)制碼盤(pán)展開(kāi)圖,圖中aa 為最高位碼道黑白分界線的理想位
置,它與其他三位碼道的黑白分界線正好對(duì)齊,當(dāng)碼盤(pán)轉(zhuǎn)動(dòng),光束掃過(guò)這一區(qū)域時(shí),輸出數(shù)
碼從0111 變?yōu)?000 不會(huì)出現(xiàn)錯(cuò)誤。如果C1 道黑白分界線刻偏到a’a’,當(dāng)碼盤(pán)轉(zhuǎn)動(dòng)時(shí),輸
出數(shù)碼就會(huì)從0111 變?yōu)?111 再變到1000,中途出現(xiàn)了錯(cuò)誤數(shù)碼1111。反之C1 道黑白分界
線刻偏到a’’a’’,當(dāng)碼盤(pán)轉(zhuǎn)動(dòng)時(shí),輸出數(shù)碼就會(huì)從0111 變?yōu)?000 再變到1000,中途出現(xiàn)了
錯(cuò)誤數(shù)碼0000。為了消除這種粗誤差,可以采用循環(huán)碼盤(pán)(格雷碼盤(pán))。
圖 1-9(b)是一個(gè)四位循環(huán)碼盤(pán),它與二進(jìn)制碼盤(pán)相同的是,碼道數(shù)也等于數(shù)碼位數(shù),
因此最小分辨率也是式(1-2)求得,最內(nèi)圈也是半圈透光半圈不透光,對(duì)應(yīng)R1 位,最外圈
是第n 碼道對(duì)于Rn 位。與二進(jìn)制碼盤(pán)不同的是:第二碼道也是一半透光一半不透光,第i
碼道分為2i-1個(gè)黑白間隔,第i 碼道的黑白分界線與第i-1 碼道的黑白分界線錯(cuò)開(kāi)360° / 2i。
循環(huán)碼盤(pán)轉(zhuǎn)到相鄰區(qū)域時(shí),編碼中只有一位發(fā)生變化。只要適當(dāng)限制各碼道的制作誤差和安
裝誤差,就不會(huì)產(chǎn)生粗誤差。由于這一原理,使得循環(huán)碼盤(pán)獲得廣泛的應(yīng)用。
1.3.3 二進(jìn)制碼與循環(huán)碼的轉(zhuǎn)換
絕對(duì)式光電編碼器是利用自然二進(jìn)制或循環(huán)二進(jìn)制(格雷碼)方式進(jìn)行光電轉(zhuǎn)換的,編
碼的設(shè)計(jì)一般是采用自然二進(jìn)制碼、循環(huán)二進(jìn)制碼、二進(jìn)制補(bǔ)碼等。特點(diǎn)是不要計(jì)數(shù)器,在
轉(zhuǎn)軸的任意位置都可讀出一個(gè)固定的與位置相對(duì)應(yīng)的數(shù)字碼;抗干擾能力強(qiáng),沒(méi)用累積誤差;
電源切斷后位置信息不會(huì)丟失,但分辨率是由二進(jìn)制的位數(shù)決定的,根據(jù)不同的精度要求,
可以選擇不同的分辨率即位數(shù)。目前有10 位、11 位、12 位、13 位、14 位或更高位等多種。
其中采用循環(huán)二進(jìn)制編碼的絕對(duì)式編碼器,其輸出信號(hào)是一種數(shù)字排序,不是權(quán)重碼,
每一位沒(méi)有確定的大小,不能直接進(jìn)行比較大小和算術(shù)運(yùn)算,也不能直接轉(zhuǎn)換成其他信號(hào),
要經(jīng)過(guò)一次碼變換,變成自然二進(jìn)制碼,再由上位機(jī)讀取以實(shí)現(xiàn)相應(yīng)的控制。而在碼制變換
中有不同的處理方式,本文著重介紹二進(jìn)制格雷碼與自然二進(jìn)制碼的互換。
(1)格雷碼(又叫循環(huán)二進(jìn)制碼或反射二進(jìn)制碼)介紹
在數(shù)字系統(tǒng)中只能識(shí)別 0 和1,各種數(shù)據(jù)要轉(zhuǎn)換為二進(jìn)制代碼才能進(jìn)行處理,格雷碼是
一種無(wú)權(quán)碼,采用絕對(duì)編碼方式,典型格雷碼是一種具有反射特性和循環(huán)特性的單步自補(bǔ)碼,
它的循環(huán)、單步特性消除了隨機(jī)取數(shù)時(shí)出現(xiàn)重大誤差的可能,它的反射、自補(bǔ)特性使得求反
非常方便。格雷碼屬于可靠性編碼,是一種錯(cuò)誤最小化的編碼方式,因?yàn)椋匀欢M(jìn)制碼可
以直接由數(shù)/模轉(zhuǎn)換器轉(zhuǎn)換成模擬信號(hào),但某些情況,例如從十進(jìn)制的3 轉(zhuǎn)換成4 時(shí)二進(jìn)制
碼的每一位都要變,使數(shù)字電路產(chǎn)生很大的尖峰電流脈沖。而格雷碼則沒(méi)有這一缺點(diǎn),它是
一種數(shù)字排序系統(tǒng),其中的所有相鄰整數(shù)在它們的數(shù)字表示中只有一個(gè)數(shù)字不同。它在任意
兩個(gè)相鄰的數(shù)之間轉(zhuǎn)換時(shí),只有一個(gè)數(shù)位發(fā)生變化。它大大地減少了由一個(gè)狀態(tài)到下一個(gè)狀
態(tài)時(shí)邏輯的混淆。另外由于最大數(shù)與最小數(shù)之間也僅一個(gè)數(shù)不同,故通常又叫葛萊反射碼或
循環(huán)碼。表1-1 為幾種自然二進(jìn)制碼與格雷碼的對(duì)照表:
表 1-1 幾種自然二進(jìn)制碼與格雷碼的對(duì)照表
從表 1-1 種可以得出,十進(jìn)制數(shù)N 與n 位二進(jìn)制碼滿(mǎn)足以下關(guān)系:
可見(jiàn),二進(jìn)制碼由于是有權(quán)碼,滿(mǎn)足(1-4)的關(guān)系,而格雷碼是無(wú)權(quán)碼,不滿(mǎn)足(1-4)
的關(guān)系。它與所對(duì)應(yīng)的角度不存在類(lèi)似(1-3)的關(guān)系,因此必須找出循環(huán)碼和二進(jìn)制碼之
間的對(duì)應(yīng)關(guān)系和相互轉(zhuǎn)換規(guī)則。
(2)二進(jìn)制碼轉(zhuǎn)換成制格雷碼
二進(jìn)制碼轉(zhuǎn)換成制格雷碼,其法則是保留二進(jìn)制碼的最高位作為格雷碼的最高位,而次
高位格雷碼為二進(jìn)制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類(lèi)似。
圖1-11 所示為二進(jìn)制碼轉(zhuǎn)換成格雷碼。
圖 1-11 自然二進(jìn)制碼轉(zhuǎn)換成二進(jìn)制格雷碼
圖 1-12 為將二進(jìn)制碼轉(zhuǎn)換為格雷碼的電路圖,其中圖(a)為并行轉(zhuǎn)換電路,圖(b)
為串行轉(zhuǎn)換電路。當(dāng)采用串行電路時(shí),工作之前先將D 觸發(fā)器D1 置0,Q=0,在Ci 端送入
C1,異或門(mén)D2 輸出R1=C1○+ 0=C1,隨后加CP 脈沖,使Q=C1;在Ci 端加入C2,D 輸出R2=C2○+
C1,以后重復(fù)上述過(guò)程,可以依次獲得R1,R2,……,Rn。
(3)格雷碼轉(zhuǎn)換為二進(jìn)制碼
格雷碼轉(zhuǎn)換成二進(jìn)制碼,則是保留格雷碼的最高位作為二進(jìn)制碼的最高位,而次高位二
進(jìn)制碼為高位二進(jìn)制碼與次高位格雷碼相異或,而二進(jìn)制碼的其余各位與次高位二進(jìn)制碼的
求法相類(lèi)似。圖1-13 為將格雷碼轉(zhuǎn)換為二進(jìn)制碼的電路,其中圖(a)為并行轉(zhuǎn)換電路,圖
(b)為串行轉(zhuǎn)換電路。當(dāng)采用串行電路時(shí),工作之前先將JK 觸發(fā)器D 置0,Q=0,將R1
同時(shí)加到J、K 端,再加入CP 脈沖后,Q=C1= R1。以后若Q 端為Ci-1 在J、K 端加入Ri。
根據(jù)JK觸發(fā)器的特性,若J、K為“1”則加入CP脈沖后, i 1 Q C ? = ;若J、K 為“0”則
加入CP 脈沖后保持Q=Ci-1。這一邏輯關(guān)系可以寫(xiě)成:
圖 1-13 格雷碼轉(zhuǎn)換為二進(jìn)制碼的電路
格雷碼是無(wú)權(quán)碼,采用格雷碼盤(pán)獲得的格雷碼R1,R2,……,Rn 必須按圖1-11 轉(zhuǎn)換為
對(duì)應(yīng)的二進(jìn)制碼C1,C2,……,Cn 后,才能代入(1-3)式確定與之對(duì)應(yīng)的角度。
(4)格雷碼與二進(jìn)制碼互換的軟件實(shí)現(xiàn)方法
(a)二進(jìn)制碼轉(zhuǎn)換成格雷碼的軟件實(shí)現(xiàn)法
根據(jù)自然二進(jìn)制轉(zhuǎn)換成格雷碼的法則,可以得到以下的代碼:
static unsigned int DecimaltoGray(unsigned int x)
{
return x^(x>>1);
}
//以上代碼實(shí)現(xiàn)了unsigned int 型數(shù)據(jù)到格雷碼的轉(zhuǎn)換,最高可轉(zhuǎn)換32 位自然二進(jìn)
制碼,超出32 位將溢出。
static int DecimaltoGray( int x)
{
return x^(x>>1);
}
//以上代碼實(shí)現(xiàn)了 int 型數(shù)據(jù)到格雷碼的轉(zhuǎn)換,最高可轉(zhuǎn)換31 位自然二進(jìn)制碼,超
出 31 位將溢出。
上述代碼即可用于 VC 控制程序中,也可以用于單片機(jī)控制程序中。在單片機(jī)程序設(shè)計(jì)
時(shí),若采用匯編語(yǔ)言編程,可以按相同的原理設(shè)計(jì)程序;若采用C 語(yǔ)言編程,則可以直接
利用上述代碼,但建議用unsigned int 函數(shù)。
(b)軟件實(shí)現(xiàn)法(參見(jiàn)示例工程中的 Gray to Binary )
根據(jù)二進(jìn)制格雷碼轉(zhuǎn)換成自然二進(jìn)制碼的法則,可以得到以下的三種代碼方式:
static unsigned int GraytoDecimal(unsigned int x)
{
unsigned int y = x;
while(x>>=1)
y ^= x;
return y;
}
static unsigned int GraytoDecimal(unsigned int x){
x^=x>>16;
x^=x>>8;
x^=x>>4;
x^=X>>2;
x^=x^1;
return x;
}
static unsigned int GraytoDecimal(unsigned int x)
{
int i;
for(i=0;(1<{
x^=x>>(1<}
return x;
}
//以上代碼實(shí)現(xiàn)了unsigned int 型數(shù)據(jù)到自然二進(jìn)制碼的轉(zhuǎn)換,最高可轉(zhuǎn)換32 位格雷碼,
超出32 位將溢出。將數(shù)據(jù)類(lèi)型改為int 型即可實(shí)現(xiàn)31 位格雷碼轉(zhuǎn)換。
上述代碼即可用于 VC 控制程序中,也可以用于單片機(jī)控制程序中。在單片機(jī)程序設(shè)計(jì)
時(shí),若采用匯編語(yǔ)言編程,可以按相同的原理設(shè)計(jì)程序;若采用C 語(yǔ)言編程,則可以直接
利用上述代碼,但建議用unsigned int 函數(shù)。
更詳細(xì)請(qǐng)查看: http://bbs.elecfans.com/dispbbs_54_113406.html