家電小知識:絕對式光電編碼器

導讀新時代發展越來越快相信很多小伙伴對家電知識這方面很朦朧吧,正好小編對家電方面頗有研究,現在就跟小伙伴們聊聊一篇關于絕對式光電編碼器

新時代發展越來越快相信很多小伙伴對家電知識這方面很朦朧吧,正好小編對家電方面頗有研究,現在就跟小伙伴們聊聊一篇關于絕對式光電編碼器,相信很多小伙伴們都會感興趣,那么小編也收集到了有關絕對式光電編碼器信息,希望小伙伴們看了有所幫助。

絕對式光電編碼器基本構造及特點

用增量式光電編碼器有可能由于外界的干擾產生計數錯誤,并且在停電或故障停車后無法找到事故前執行部件的正確位置。采用絕對式光電編碼器可以避免上述缺點。絕對式光電編碼器的基本原理及組成部件與增量式光電編碼器基本相同,也是由光源、碼盤、檢測光柵、光電檢測器件和轉換電路組成。與增量式光電編碼器不同的是,絕對式光電編碼器用不同的數碼來分別指示每個不同的增量位置,它是一種直接輸出數字量的傳感器。在它的圓形碼盤上沿徑向有若干同心碼道,每條上由透光和不透光的扇形區相間組成,相鄰碼道的扇區數目是雙倍關系,碼盤上的碼道數就是它的二進制數碼的位數,在碼盤的一側是光源,另一側對應每一碼道有一光敏元件;當碼盤處于不同位置時,各光敏元件根據受光照與否轉換出相應的電平信號,形成二進制數。這種編碼器的特點是不要計數器,在轉軸的任意位置都可讀出一個固定的與位置相對應的數字碼。顯然,碼道越多,分辨率就越高,對于一個具有 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://bbs.elecfans.com/dispbbs_54_113406.html

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!