跳轉到內容

機器人/反饋感測器/編碼器

來自華夏公益教科書

在機器人中,無論是手臂或機械臂軸運動還是驅動輪速度,都需要有關旋轉的資訊,這並不罕見。旋轉編碼器有多種型別,最常見的是機械式或使用光電探測器。在機械式編碼器中,電觸點週期性地連線,通常用於驅動終端高電平或低電平。然後,這些電脈衝用於獲取資訊。光電探測器編碼器可以做得更小,執行速度更快。通常,反射式感測器會照射到標記的反射表面上,或者光中斷器會穿過帶有透明和不透明部分的圓盤,以便接收到的光的幅度會在接收器中產生高電平和低電平的電脈衝。然後,這些脈衝由外部電路解碼。

根據所需資訊型別和可靠性,旋轉編碼器上的圖案會越來越複雜。如果只需要轉速,則可以使用簡單的交替模式,但如果需要速度和方向,則需要更多編碼資訊。位置編碼本身會產生有關速度和方向的資訊,因為比較位置變化的方向將給出旋轉方向,其中位置相對於時間的變化(根據定義)將指示速度。特定型別的位置編碼將取決於所需的精度以及可靠性:在應用中,由於讀編碼資訊時出錯而導致的測量旋轉位置的誤差有多大是可以接受的。

測量轉速

[編輯 | 編輯原始碼]
簡單的速度檢測旋轉編碼器示例

對於某些應用,只需要考慮轉速。如果要測量機械上限制為單向旋轉的齒輪,則方向已知,只剩下速度。也許正在為機器人的驅動速度開發一個反饋系統,並且車軸上的編碼器將使控制器能夠透過改變 PWM 值來校準速度;如果控制器使電機以特定方向旋轉,它只需要旋轉速度。測量速度所需的一切就是一個單一的交替模式,導致探測器發出脈衝串。脈衝速率將與轉速成正比;測量連續上升(或下降)沿之間的時間,並將該時間除以一個脈衝代表的旋轉角度,將得出旋轉速率。

如果速率在測量時間內發生變化,則計算出的速率將是近似瞬時速率的平均值。這就是精度發揮作用的地方 - 每轉脈衝越多,測量之間的時間就越短,近似值就越接近正確值。任何熟悉微積分的人都會認識到位置相對於時間的變化率是導數,導數的定義指出,隨著用於近似測量的時步接近零,結果等於該時間的導數。






測量連續脈衝的計算速度差,也可以近似得到旋轉加速度。

測量方向

[edit | edit source]
雙排編碼器用於查詢速度和方向

假設一臺機器正在調整其用於驅動車輪的 PWM 程式。控制器顯然需要知道車輪的旋轉速度,以便它可以確定給定佔空比的速度輸出。但是如果機器放在山坡上呢?它開始向後滾動,控制器發現沒有輸入的情況下有相當大的旋轉速度,這會弄亂整個校準過程。如果控制器能夠確定車輪正在向後旋轉,它就會知道忽略速度資訊。為了使用旋轉編碼器確定方向,光碟上必須至少有兩個圖案,以便有一個方向變化的參考。實現這一點的最簡單方法是使用兩個交替的圖案,它們彼此相位差半個脈衝。

如果光碟以特定方向旋轉(在本例中,圖案向左滑動),則通道 A 的上升(或下降)沿將在通道 B 的上升沿之前被檢測到;如果旋轉方向相反,則通道 B 的上升沿將首先被檢測到。透過測試哪個圖案的邊沿首先被檢測到,可以確定旋轉方向。可以測量單個通道的脈衝之間的時間來近似旋轉速度。但是,組合來自兩個通道的檢測會使有效脈衝速率是單個通道的兩倍,這將測量時間減半並將精度提高一倍。還有一種方法可以使用單個通道測量速度和方向。在單個通道上放置兩個接收器,它們之間的距離為半個脈衝寬度,因此當光碟旋轉時,一個感測器處於狀態,而另一個感測器則過渡。兩個感測器過渡到狀態的順序取決於光碟的旋轉方向。

測量位置

[edit | edit source]
簡單的二進位制編碼器示例
簡單的格雷碼編碼器示例

確定旋轉編碼器上角度位置的最簡單方法是將光碟分成多個部分,並在每個部分上印上獨特的圖案。光碟分割成的部分越多,在特定時間知道位置的精度就越高(每個部分將覆蓋一定角度範圍,因此會存在不確定性,但更多的部分會使每個部分的度數更少)。但是,更多的部分需要更多唯一的識別符號,這意味著更復雜的方案。本討論僅限於數字訊號編碼器,其中任何給定通道的可能輸出僅限於 0 或 1。這有利於二進位制編碼方案,其中每個部分都印有唯一的二進位制數字。所需的唯一 ID 數量取決於部分數量;通道數量等於 log2(n),其中 n 是部分數量。一個有 8 個部分的光碟的解析度為 360° / 8 = 45° 每個部分,需要 log2(8) = 3 個單獨的通道。對於部分數量的兩倍,精度翻倍,但只增加一個模式通道。

可靠性

[edit | edit source]

使用二進位制編碼方案的一個問題是檢測器誤差。無法保證所有通道都將在同一時間轉換,這會導致對段 ID 的誤讀。如果檢測器下方的磁碟部分正在從一個段轉換到下一個段,解碼器可能會短暫地只正確讀取一部分位。假設一個標準的八段二進位制編碼方案,其中段從 0 到 8 按順序編號:如果從段 000 到段 001 的轉換沒有正確讀取上升沿,則讀取結果會偏移一個位置,暫時來說可以忽略。然而,如果它正在從段 011 轉換到段 100,並且最低有效位首先被讀取,則控制器會短暫地認為它已經轉換到 010,方向完全相反。如果最高有效位首先被讀取,它會認為它從 011 跳到 111,位於輪子的完全相反的一側。當單個位發生變化時,轉換錯誤通常可以忽略不計,因為計算位置的誤差為 1。來自多位轉換的錯誤可能是災難性的。

格雷碼

[編輯 | 編輯原始碼]
4 位格雷碼
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000

格雷碼是一種特殊的二進位制模式,其中從一個元素到下一個元素的轉換過程中只有一位發生變化。作為一種二進位制模式,格雷碼使用相同數量的通道來表示相同數量的特定模式,只是它們的順序不同。二進位制使用數字順序的模式;格雷碼則不是。使用這種方法對位置進行編碼將需要額外的軟體或硬體來解碼 ID(因為簡單的二進位制轉換不會產生按順序排列的段集),但硬體可靠性的優勢是巨大的——由於在每次轉換中只有一位發生變化,因此檢測位置模式接收錯誤時的最大誤差為 1 段。格雷碼可以像二進位制一樣按位寫出。在二進位制中,最低有效位每一步都從 0 變化到 1;下一個位每兩步變化一次,下一個每四步變化一次,依此類推。在格雷碼中,每一位都包含一個 0-1-1-0 的模式;最低位每一步都保持一個元素;下一個位每兩步保持一個元素,下一個每四步保持一個元素,依此類推。可以注意到,二通道格雷碼與用於查詢旋轉方向的二通道模式相同。

華夏公益教科書