用增量式光電編碼器有可能由於外界的幹擾產生計數錯誤,並且在停電或故障停車後無
法找到事故前執行部件的正確位置。采用絕對式光電編碼器可以避免上述缺點。絕對式光電
編碼器的基本原理及組成部件與增量式光電編碼器基本相同,也是由光源、碼盤、檢測光柵、
光電檢測器件和轉換電路組成。與增量式光電編碼器不同的是,絕對式光電編碼器用不同的
數位來分別指示每個不同的增量位置,它是一種直接輸出數字量的傳感器。在它的圓形碼盤
上沿徑向有若幹同心碼道,每條上由透光和不透光的扇形區相間組成,相鄰碼道的扇區數目
是雙倍關系,碼盤上的碼道數就是它的二進制數位的位數,在碼盤的一側是光源,另一側對
應每一碼道有一光敏元件;當碼盤處於不同位置時,各光敏元件根據受光照與否轉換出相應
的電平信號,形成二進制數。這種編碼器的特點是不要計數器,在轉軸的任意位置都可讀出
一個固定的與位置相對應的數字碼。顯然,碼道越多,分辨率就越高,對於一個具有N位
二進制分辨率的編碼器,其碼盤必須有N條碼道。絕對式光電編碼器原理如圖1-8所示。
絕對式光電編碼器是利用自然二進制、循環二進制(格雷碼)、二-十進制等方式進行光
電轉換的。絕對式光電編碼器與增量式光電編碼器不同之處在於圓盤上透光、不透光的線條
圖形,絕對光電編碼器可有若幹編碼,根據讀出碼盤上的編碼,檢測絕對位置。它的特點是:
可以直接讀出角度坐標的絕對值;沒有累積誤差;電源切除後位置信息不會丟失;編碼器的
精度取決於位數;最高運轉速度比增量式光電編碼器高。
圖1-8絕對式光電編碼器原理
1.3.2碼制與碼盤
絕對式光電編碼器的碼盤按照其所用的碼制可以分為:二進制碼、循環碼(格雷碼)、
十進制碼、六十進制碼(度、分、秒進制)碼盤等。四位二元碼盤(二進制、格雷碼)如圖
1-9所示。圖中黑、白色分別表示透光、不透光區域。
圖1-9四位二元碼盤
圖1-9(a)是一個四位二進制碼盤,它的最裡圈碼道為第一碼道,半圈透光半圈不透光,
對應於最高位C1,最外圈為第n碼道,共分成2n個亮暗間隔,對應於最低位Cn,n位二元
碼盤最小分辨率為:
二進制馬盤的缺點是:每個碼道的黑白分界線總有一半與相鄰內圈碼道的黑白分界線是
對齊的,這樣就會因黑白分界線刻畫不精確造成粗誤差。采用其他的有權編碼時也存在類似
的問題。圖1-10是一個四位二進制碼盤展開圖,圖中aa為最高位碼道黑白分界線的理想位
置,它與其他三位碼道的黑白分界線正好對齊,當碼盤轉動,光束掃過這一區域時,輸出數
碼從0111變為1000不會出現錯誤。如果C1道黑白分界線刻偏到a’a’,當碼盤轉動時,輸
出數位就會從0111變為1111再變到1000,中途出現瞭錯誤數位1111。反之C1道黑白分界
線刻偏到a’’a’’,當碼盤轉動時,輸出數位就會從0111變為0000再變到1000,中途出現瞭
錯誤數位0000。為瞭消除這種粗誤差,可以采用循環碼盤(格雷碼盤)。
圖1-9(b)是一個四位循環碼盤,它與二進制碼盤相同的是,碼道數也等於數位位數,
因此最小分辨率也是式(1-2)求得,最內圈也是半圈透光半圈不透光,對應R1位,最外圈
是第n碼道對於Rn位。與二進制碼盤不同的是:第二碼道也是一半透光一半不透光,第i
碼道分為2i-1個黑白間隔,第i碼道的黑白分界線與第i-1碼道的黑白分界線錯開360° / 2i。
循環碼盤轉到相鄰區域時,編碼中隻有一位發生變化。隻要適當限制各碼道的制作誤差和安
裝誤差,就不會產生粗誤差。由於這一原理,使得循環碼盤獲得廣泛的應用。
1.3.3二進制碼與循環碼的轉換
絕對式光電編碼器是利用自然二進制或循環二進制(格雷碼)方式進行光電轉換的,編
碼的設計一般是采用自然二進制碼、循環二進制碼、二進制補碼等。特點是不要計數器,在
轉軸的任意位置都可讀出一個固定的與位置相對應的數字碼;抗幹擾能力強,沒用累積誤差;
電源切斷後位置信息不會丟失,但分辨率是由二進制的位數決定的,根據不同的精度要求,
可以選擇不同的分辨率即位數。目前有10位、11位、12位、13位、14位或更高位等多種。
其中采用循環二進制編碼的絕對式編碼器,其輸出信號是一種數字排序,不是權重碼,
每一位沒有確定的大小,不能直接進行比較大小和算術運算,也不能直接轉換成其他信號,
要經過一次碼變換,變成自然二進制碼,再由上位機讀取以實現相應的控制。而在碼制變換
中有不同的處理方式,本文著重介紹二進制格雷碼與自然二進制碼的互換。
(1)格雷碼(又叫循環二進制碼或反射二進制碼)介紹
在數字系統中隻能識別0和1,各種數據要轉換為二進制代碼才能進行處理,格雷碼是
一種無權碼,采用絕對編碼方式,典型格雷碼是一種具有反射特性和循環特性的單步自補碼,
它的循環、單步特性消除瞭隨機取數時出現重大誤差的可能,它的反射、自補特性使得求反
非常方便。格雷碼屬於可靠性編碼,是一種錯誤最小化的編碼方式,因為,自然二進制碼可
以直接由數/模轉換器轉換成模擬信號,但某些情況,例如從十進制的3轉換成4時二進制
碼的每一位都要變,使數字電路產生很大的尖峰電流脈沖。而格雷碼則沒有這一缺點,它是
一種數字排序系統,其中的所有相鄰整數在它們的數字表示中隻有一個數字不同。它在任意
兩個相鄰的數之間轉換時,隻有一個數位發生變化。它大大地減少瞭由一個狀態到下一個狀
態時邏輯的混淆。另外由於最大數與最小數之間也僅一個數不同,故通常又叫葛萊反射碼或
循環碼。表1-1為幾種自然二進制碼與格雷碼的對照表:
表1-1幾種自然二進制碼與格雷碼的對照表
從表1-1種可以得出,十進制數N與n位二進制碼滿足以下關系:
可見,二進制碼由於是有權碼,滿足(1-4)的關系,而格雷碼是無權碼,不滿足(1-4)
的關系。它與所對應的角度不存在類似(1-3)的關系,因此必須找出循環碼和二進制碼之
間的對應關系和相互轉換規則。
(2)二進制碼轉換成制格雷碼
二進制碼轉換成制格雷碼,其法則是保留二進制碼的最高位作為格雷碼的最高位,而次
高位格雷碼為二進制碼的高位與次高位相異或,而格雷碼其餘各位與次高位的求法相類似。
圖1-11所示為二進制碼轉換成格雷碼。
圖1-11自然二進制碼轉換成二進制格雷碼
圖1-12為將二進制碼轉換為格雷碼的電路圖,其中圖(a)為並行轉換電路,圖(b)
為串行轉換電路。當采用串行電路時,工作之前先將D觸發器D1置0,Q=0,在Ci端送入
C1,異或門D2輸出R1=C1○+ 0=C1,隨後加CP脈沖,使Q=C1;在Ci端加入C2,D輸出R2=C2○+
C1,以後重復上述過程,可以依次獲得R1,R2,……,Rn。
(3)格雷碼轉換為二進制碼
格雷碼轉換成二進制碼,則是保留格雷碼的最高位作為二進制碼的最高位,而次高位二
進制碼為高位二進制碼與次高位格雷碼相異或,而二進制碼的其餘各位與次高位二進制碼的
求法相類似。圖1-13為將格雷碼轉換為二進制碼的電路,其中圖(a)為並行轉換電路,圖
(b)為串行轉換電路。當采用串行電路時,工作之前先將JK觸發器D置0,Q=0,將R1
同時加到J、K端,再加入CP脈沖後,Q=C1= R1。以後若Q端為Ci-1在J、K端加入Ri。
根據JK觸發器的特性,若J、K為“1”則加入CP脈沖後,i 1 Q C−=;若J、K為“0”則
加入CP脈沖後保持Q=Ci-1。這一邏輯關系可以寫成:
圖1-13格雷碼轉換為二進制碼的電路
格雷碼是無權碼,采用格雷碼盤獲得的格雷碼R1,R2,……,Rn必須按圖1-11轉換為
對應的二進制碼C1,C2,……,Cn後,才能代入(1-3)式確定與之對應的角度。
(4)格雷碼與二進制碼互換的軟件實現方法
(a)二進制碼轉換成格雷碼的軟件實現法
根據自然二進制轉換成格雷碼的法則,可以得到以下的代碼:
static unsigned int DecimaltoGray(unsigned int x)
{
return x^(x>>1);
}
//以上代碼實現瞭unsigned int型數據到格雷碼的轉換,最高可轉換32位自然二進
制碼,超出32位將溢出。
static int DecimaltoGray( int x)
{
return x^(x>>1);
}
//以上代碼實現瞭int型數據到格雷碼的轉換,最高可轉換31位自然二進制碼,超
出31位將溢出。
上述代碼即可用於VC控制程序中,也可以用於單片機控制程序中。在單片機程序設計
時,若采用匯編語言編程,可以按相同的原理設計程序;若采用C語言編程,則可以直接
利用上述代碼,但建議用unsigned int函數。
(b)軟件實現法(參見示例工程中的Gray to Binary )
根據二進制格雷碼轉換成自然二進制碼的法則,可以得到以下的三種代碼方式:
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<<i)<sizeof(x)*8;i++)
{
x^=x>>(1<<i);
}
return x;
}
//以上代碼實現瞭unsigned int型數據到自然二進制碼的轉換,最高可轉換32位格雷碼,
超出32位將溢出。將數據類型改為int型即可實現31位格雷碼轉換。
上述代碼即可用於VC控制程序中,也可以用於單片機控制程序中。在單片機程序設計
時,若采用匯編語言編程,可以按相同的原理設計程序;若采用C語言編程,則可以直接
利用上述代碼,但建議用unsigned int函數。
![絕對式光電編碼盤_光電器件_電子元器件_貨源_批發一路發](http://www.marketplace.com.tw/skin/en/image/step.jpg)
![](/skin/en/image/note.jpg)
批發市場僅提供代購諮詢服務,商品內容為廠商自行維護,若有發現不實、不合適或不正確內容,再請告知我們,查實即會請廠商修改或立即下架,謝謝。