旋转编码器详解(主要讨论增量式编码器与绝对式编码器)
參考資料:旋轉編碼器的原理是什么?增量式編碼器和絕對式編碼器有什么區別?
0. 前言
我們在選電機時,非常注重電機的扭矩和尺寸,因為這直接決定了電機是否能按規定的運動模式拖動負載,能不能很好地布置在有限的空間之中。
但在精密機械設計中,其實還有一個和扭矩及尺寸同等重要的參數,那就是分辨率。
說起分辨率,很多時候,在電機參數中,可以看到一組數據,例如2000Count/Turn=2000脈沖/圈,和17bit/33bit等。
對旋轉電機有所了解的朋友都知道,2000C/T,這其實是說,這個電機帶有一個增量式編碼器,轉一圈對應著2000個脈沖,所以該編碼器的分辨率是360/2000=0.18度。
由于相對式編碼器通??梢宰?倍頻(后面我會解釋為什么),所以2000C/T的分辨率可以變成0.18°/4=0.045度。
而17bit/33bit則是在說,這個電機帶有一個17位的多圈絕對編碼器。
那么問題來了,絕對式編碼器和增量式編碼器原理上有什么區別?應用上有什么區別?絕對式編碼器為什么用二進制表示分辨率?單圈和多圈絕對式編碼器有什么區別?
我想,弄清楚這幾個問題,對于電機或者需要用到旋轉編碼器的地方,心里就不會像過去那樣模模糊糊,而是會清晰明了地,直接選擇合適的編碼器。
1. 旋轉編碼器的類型和優缺點
現在市面上通常有三種編碼器:光學編碼器(Optical Encoder),磁編碼器(Magnetic Encoder),和電容式編碼器(Capacitive Encoder)。
-
光學編碼器:在光學編碼器中,黑色線條會擋住光線;透明窗口使光線穿過碼盤(或者在碼盤上反射)到達傳感器。當傳感器接收到光時,輸出高電平,而當光被阻擋時,輸出低電平。
-
磁編碼器:磁編碼器的內部有一系列磁極交替排列的旋轉磁鐵,還有一個檢測磁場位置的傳感器。
-
電容式編碼器:電容式編碼器內部,包含一個發射高頻信號的發射器,一個對信號進行調制的轉子,以及一個將信號轉換并發送給運動控制器的接收器。
光學編碼器是最常用,也是精度最高的一種,但同時其價格也最高。
光學編碼器相對磁和電容編碼器來說,更容易受到環境的影響,比如在低溫下使用光學編碼器,如果環境溫度急劇上升,可能在光學碼盤上形成凝霧,這會導致讀不到信號或者信號扭曲。
磁編碼器就不那么容易受到環境的影響,但是由于其天然的非線性,磁編碼器不如光學編碼器的精度高。它們通常用于灰塵,蒸汽,振動和其他可能干擾光學編碼器性能的環境中。
同時在各種液體環境下,磁編碼器也可以工作,磁編碼器使用的功耗也比光學編碼器少。
電容編碼器是工業自動化相對較新的事物,這種編碼器與磁編碼器一樣耐環境,但也無法實現光學編碼器的高分辨率和準確性。
接下來以用得最多的光學編碼器為例來介紹增量式編碼器和絕對式編碼器。
2. 增量式編碼器
2.1 增量式編碼器的原理
下圖為增量式光學編碼器的構成圖。該系統包含一個碼盤,以及位于碼盤一側的LED光源,和位于其另外一側的光電探測器芯片Detector Chip。
碼盤上有一系列的黑色標線和透明窗口,黑色標線不透光,而窗口是可以透光的。
LED光經過透鏡(Lens)后,形成平行光,打在碼盤上,光線在黑色刻線處被阻擋,而在透明窗口處穿過碼盤,照射到下面的感應器感應區域。
感應器上有兩個區域是可以感應信號的,一個是Index Sensor Area,也就是起始零位感應區域,一個是位置信號變化感應區域A/B Sensor Area。
零位感應也叫Home,有的地方也叫Zero,把它探測所產生的信號叫Z信號。
并不是所有的增量式編碼器都有參考零位,比如有些傳送帶上的應用就不需要,而有的增量式編碼器有不止一個參考零位,
LED光線通過碼盤窗口,透射到另外一側的感應器感應區域。碼盤旋轉,固定的感應器便可以讀取到光的這種交替變化模式,進而將位置信息報告回機械系統。
感應器所產生的波形如下圖,是重復的方波(有的編碼器傳送正弦波或者余弦波),且高電平和低電平占用時間相同,因為碼盤上的不透明刻線和透明窗口間隔的角度相同,一個黑線和一個透明扇區域構成一個周期,對應著波形圖中的一個低電平和一個高電平,也就是一個360度電周期。
為什么波形圖中有兩個通道,一個A,一個B?用來干什么?
首先說明,A/B Sensor Area就是產生兩個通道信號的原因。接下來給出增量式光學編碼器的細節圖,從下面這張圖中可以看出,光電感應器A和感應器B并沒有在同一半徑方向上,而是有一個角度錯位,錯位多少呢,剛好是一個刻線所占據角度的一半,也就是1/4物理周期。
我們知道,如果只有一個感應器A,那么當觸發零位后,感應器A就開始計數了,每經過一個黑線和一個透明線,波形就形成一個低電平和一個高電平,也就是一個周期,但是它并不知道碼盤的旋轉方向,可能是逆時針旋轉,也可能是順時針旋轉。
所以,感應器B加入的目的就很明顯了:和感應器A配合,用于判斷碼盤的旋轉方向。
因為A和B錯位1/4物理周期,(也就是相差90度電脈沖周期,所以也叫做正交脈沖,英文是Quadrature,我們常聽到的A-Quad-B就是從這兒來的),所以光線會先后透射過透明窗口,打在感應器A和B上,形成1/4個周期差。
例如,如果順時針旋轉,A領先于B四分之一周期,那么逆時針旋轉,A必然滯后于B四分之一周期。從而可以根據A領先于B,還是滯后于B來判斷旋轉方向。
OK,到這里,我們理解了增量式編碼器的工作原理:通過Index找到零位,通過脈沖數目計算旋轉角度,通過AB通道的相對滯后性判斷旋轉方向,通過波形所占據的時間,或者波的脈沖頻率來判斷速度。
再仔細想一下,AB通道相差1/4周期,還可以用來干什么?
或許你已經猜到,就是我在一開始就說到的4倍頻(倍乘)分辨率。
怎么實現呢?
2.2 4倍頻(倍乘)分辨率的實現
接下來,將通過如下波形圖來講解實現原理。
這里,以每圈100個物理周期碼盤來舉例。
- 一倍乘X1:碼盤旋轉時,如果我們計算通道A脈沖的每個上升沿(由0變成5V),則每轉將獲得100個脈沖。
- 2倍乘X2:碼盤旋轉時,如果我們計算通道A的每個上升沿和每個下降沿(由5V變成0),則每個周期將獲得2個脈沖,每轉總計200個脈沖。
- 4倍乘X4:如果我們計算通道A和通道B的每個上升沿和下降沿,則每個物理周期將獲得4個脈沖,每轉總計400個脈沖。
因為增量式編碼器的物理刻線相距角度一樣,本質上來說,它是通過計算脈沖數量,來計算旋轉角度的。
同樣的一圈,不同的倍頻法得到的每圈脈沖數不同,顯然4倍頻得到的分辨率最高。
這就是分辨率4倍頻的原理。
所以2000C/T的分辨率可以變成0.18°/4=0.045度。
但是需要明白的是,這個4倍乘,并沒有改變碼盤的物理刻線之間的角度,僅僅是電脈沖數量的變化,而且這個倍乘通常是在控制器或者計數器中完成的,信號質量好,可靠。
3. 絕對式編碼器
3.1 絕對式編碼器的原理
絕對式編碼器的工作原理和增量式有所不同。這里通過絕對式旋轉編碼器的細節圖來說明。
下圖是一個4位絕對式編碼器細節示意圖。整圈被分成了16份,也就是有16個扇區。它和增量式編碼器的圖相似,但是又有一點不一樣:在半徑方向上,每一個扇區又被分成了4份。
LED光從碼盤一側照射下來,相應地,在碼盤另外一側有一個探測芯片,探測芯片有4個感應區,每個感應區,可以獲取同一個扇區每一份的狀態。
透明的窗口,光線穿過去,感應區感應到信號,不透明的區域,光線無法穿過,感應區無法感應到。
如果把有感應和無感應看成是兩種狀態,分別用1和0表示,那么每一個感應區可以表示2種狀態。
進而,同一個扇區中這4份(4位),可以表示2^4=16種狀態,這也是為什么這個碼盤在圓周方向上被分為了16份,其實相當于對每一個位置進行了編碼,每個編碼對應著一個特定的位置。
比如下面這幅圖,從左到右可以分別表示0001, 0101, 1100,用十進制表示就是第1, 第5,第12個位置。
到這里,我們基本上明白了絕對式編碼器的原理:對每一個位置,給定一個唯一的編碼,再用傳感器去識別每個位置的編碼,輸出與之相對應的唯一信號,用來表示特定的位置。
如果要獲得更高的分辨率,那么就需要更多的編碼位數,也就是需要在圓周方向上,刻上更多的特定編碼(這通常都會加大碼盤)。
比如需要17位,也就是2^17=131072個位置,那么就需要131072個不同的編碼,這時的分辨率是360/131072=0.00275°。
當然,并不是每個廠家的編碼方法,都和上面這個例子一樣。有的廠家不在半徑方向上劃分,只在圓周方向上劃分,但是基本理念是一樣的,就是用唯一的編碼表示唯一的位置。
這就是絕對式編碼器的核心思想。
光學絕對編碼器的輸出波形如下圖所示。這里使用的是脈沖帶寬調制(PWM=Pulse Width Modulation)。
一個10位絕對編碼器可以輸出2^10=1024個獨特編碼,在圖中怎么表示每一個特定的位置呢?
用脈沖寬度來表示。
例如,起始零位,用一個最小的脈沖寬度1微秒來表示這個位置。在180°,用512微秒的脈沖帶寬來表示。
類似地,對于其他的位置,用不同的脈沖寬度來表示,當碼盤旋轉,越來越長的脈沖帶寬被傳遞。
3.2 絕對式單圈和多圈編碼器有何不同
絕對式編碼器又分為單圈和多圈,即Single-Turn Absolute Encoder和Multi-Turn Absolute Encoder。
單圈很好理解,就像鐘表中只有分針,一圈一圈地不停轉,60分鐘之后,表重置,并不記錄旋轉的圈數,在這里,也就是不知道是幾個小時。
多圈,就像是鐘表中即有分針,還有時針。在任何時刻,分鐘和小時數都可以被讀取。
所以多圈編碼器可以記錄很多很多圈。
實際的多圈編碼器,常用3種方法來實現圈數記錄。
- 第一種,就像上面那張圖一樣,在編碼器內部,用機械齒輪耦合多個軸,用來計算總的圈數,這種方法,因為用到了機械齒輪,所以會帶來磨損,使得精度降低,同時機械齒輪會占用很多空間,所以編碼器尺寸偏大。
- 第二種,就是用電子計數器和電容器,來計算總共轉過的圈數,但是代價是需要在編碼器內部安裝電池,而且需要定期檢查電池。
- 第三種,在一些磁編碼器中,采用韋根金線(Wiegand wire),并利用韋根效應來計數(Wiegand effect)。這種編碼器沒有太多機械結構件,可以做得很小。
當然,單圈編碼器也可以通過信號重復的次數,來計算旋轉的圈數,但是就沒有多圈編碼器那么直接。
單圈編碼器,如果轉了超過一圈,斷電重啟后,不知道轉了幾圈,也就是說,不知道絕對位置的。
這個特性,決定了單圈絕對編碼器只適用于開機需要絕對位置,但是在運轉過程中,旋轉不滿一圈的應用中。
而多圈編碼器,是有圈數物理絕對位置記錄的,所以,多圈相對于單圈可以獲得更長更遠的絕對位置。
對于多圈編碼器,當旋轉的圈數超過了它的總記錄容量時,圈數會溢出。
這時,要么重新計數,要么驅動器和控制器提供一種特殊的位置跟蹤,稱為“模數定位”,它可以存儲任何溢出運動,即超出記錄圈數的旋轉部分,并使用此信息提供準確的定位。
到此,我們重新理解了單圈和多圈編碼器的區別:單圈只能記錄一圈之內的運動,多圈可以記錄很長的旋轉或者直線位移。
3.3 電機參數中17bit/33bit的含義
17bit/33bit的含義是:17bit就是說每轉一圈有2^17=131072個脈沖,而33bit表示總共的脈沖位數是2^33=2^17*2^16,那么這個多圈編碼器可以記錄33-17=16bit=2^16=65536圈。
這里計算分辨率要注意,它的分辨率只和一圈的脈沖數有關,而和總的圈數無關,也就是說這個編碼器的分辨率是360/131072=0.00275度。
如果一個馬達使用了這個編碼器,用此馬達驅動滾珠絲杠,運動一圈前進5毫米,那么理論上的分辨率就是:5mm/131072cnt=0.038um/cnt。
當然,實際分辨率肯定要比這個低,畢竟滾珠絲杠系統也是有間隙的,而且大多數時候,機械系統的間隙才是整個系統的短板。
4. 增量式編碼器和絕對式編碼器的區別
4.1 技術角度
通過上面的解釋,我們理解了增量和絕對式兩種旋轉編碼器的工作原理。
絕對式旋轉編碼器的原理和增量式的原理類似,都是通過傳感器來讀取碼盤上明暗相間的刻線獲得脈沖,根據脈沖數目來表示位置。
不同的是,絕對式編碼器,斷電可以記住當前位置,即使斷電后有機械移位,通電后也知道移動到哪里去了,因為絕對式編碼器對每一個位置,有一個唯一的編碼。
而增量式編碼器不同,它沒有記憶,斷電后重啟,需要找到參考點后,才能找回需要的位置。
增量式編碼器很適合用于確定速度,距離或運動方向。
如果需要在斷電重啟時就知道位置,那么就需要絕對式編碼器了。
例如,如果你要設計機械臂,在斷電后可能沒有足夠的空間或靈活性,使其無法移動到原始位置,在這種情況下,需要使用絕對編碼器。
4.2 成本與應用角度
5. 如何選擇編碼器
選擇編碼器時,至少需要考慮以下幾點:
當然,實際選擇時,如果有不太確定的地方,一定有一個辦法可以幫你解決問題。
那就是聯系你的供應商,說出你的問題,畢竟他們是專業的,很多時候,他們可以給你一些很好的選擇建議,這個時候,往往也是很好的學習機會。
關于編碼器,如果要深挖的話,還有很多話題的,比如噪聲的來源,如何控制噪聲等。
總結
以上是生活随笔為你收集整理的旋转编码器详解(主要讨论增量式编码器与绝对式编码器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt android 悬浮窗,Qt 自定
- 下一篇: GitHub开源协议详解及常用协议介绍