【機械自動化】旋轉編碼器

參考文章:https://en.wikipedia.org/wiki/Rotary_encoder

旋轉編碼器有兩種:增量式編碼器絕對值編碼器

1、增量式編碼器

所謂增量式,就是指編碼器輸出的信號是相對上一次的位置的一個變化量(德爾塔值),因此當前位置是由上一次位置的值加上本次讀取到的值。增量式正交光電編碼器外觀:

以Broadcom公司的HEDS-973x Series光學編碼器爲例,參考鏈接:https://www.broadcom.com/products/motion-control-encoders/incremental-encoders/transmissive-encoders/heds-9731b50 ,其內部原理爲:

碼盤與紅外對管的擺放方式:

 

將圓盤展開得到的原理示意圖:

 

STM32定時器的編碼器模式(編程參考手冊):

計數原理分析如下:

在旋轉的脈衝頻率較低的情況下,這種計數原理完全可以使用兩個GPIO加上雙邊沿中斷進行計數,抖動的情況都能夠被屏蔽掉,和使用定時器的效果是一樣的,只是最大支持頻率不如定時器。

另一種正交編碼盤原理如下:

將圓形編碼盤展開成線性展示:

上面的展開示意圖中,假設編碼器中的有光通過光柵到光電開關時,輸出信號爲高電平,沒有光通過光柵時輸出信號爲低電平。可以看到A相和B相的信號之間相差了π/2。逆時針轉動時(線性圖左移),A相領先B相π/2,順時針轉動時(線性圖右移),B相領先A相π/2。換一個更容易理解的方式說就是,當A相接收到一個上升沿脈衝的時候,如果B相爲低電平,則編碼器爲逆時針轉動,否則爲順時針轉動。

如果編碼器先逆時針轉動,然後變成順時針轉動的話,AB相波形圖如下:

改變轉動方向其實是就是以改變轉動方向的時間點做時間軸的垂線,然後以該垂線做波形的軸對稱,即得到改變轉動方向後的波形圖。但是需要注意改變方向的時間點可能在一個週期的任意位置,上面的示意圖是在A相波形的前半個週期中改變轉動方向的,如果是在A相的後半個週期改變方向的話,波形是不一樣的。另外,雖然可以按照以A相產生上升沿時,B相的電平狀態來進行脈衝計數,但是由於轉動方向改變的時間點可能處於A相的一個週期中的任意一個位置,不同位置會產生不同的計數結果,例如上圖中的計數結果爲:1-2-3-2-1,但是如果轉動方向改變的時間點在A相週期的後半個週期時,計數結果則是:1-2-3-2-1-0,因爲這時候A相會多一個上升沿。所以想要精確的進行計數,還需要對B相的脈衝進行判斷。

下圖是飛思卡爾K60芯片的數據手冊中提到的芯片內部定時器對正交信號的解碼過程:

下圖是STM32定時器的編碼器接口模式時的解碼過程:

STM32處理器的定時器的編碼器模式的設置可以參考文章:https://blog.csdn.net/qq_34071268/article/details/78499407

 

2、絕對值編碼器

還有一種編碼器是絕對值式的編碼器,絕對值式的編碼器也有兩種,一種是格雷碼式的編碼器,另一種是基於霍爾傳感器的編碼器。絕對值編碼器相比較增量式編碼器最大的卻別就是其在360°的範圍內的每個位置都有一個對應的量,以一張格雷碼式編碼器的碼盤圖片爲例(圖片資源來自Wikipedia):

該碼盤被均分成了8份,每一份佔用的範圍爲45°,那麼需要碼盤上的8份區域需要3位位二進制數,將碼盤中的白色當做0,黑色當做1,X軸所在的全白的區域對應的絕對值位置爲000(忽略最內圈),逆時針旋轉碼盤,X軸經過每個區域的絕對值位置依次爲爲001、010、011、100、101、110、111,在X軸處放置一個傳感器,可以讀取X軸所處的區域的絕對值,那麼我們可以在碼盤轉動到任何位置的時候都能知道X軸指向的位置處對應區域的角度。爲了可以提高編碼器的精度,可以將碼盤分割成更多的份,例如均分成 2^10 份,那麼碼盤被分爲了1024份,相當於這個碼盤的精度爲1024線。絕對值編碼器的優點明顯,可以在系統啓動的時候就知道電機的狀態,但是其結構複雜,控制不方便,例如(圖片資源來自Wikipedia):(可以清楚地看到碼盤上的格雷碼,以及控制板上的一個大約是CMOS傳感器的IC,用於探測當前位置對應的碼)

另一種基於霍爾傳感器的編碼器,使用一個霍爾元件和一個永磁鐵,永磁鐵的N極和S極連線和霍爾元器件處於平行狀態,但是沒有接觸,這時候永磁鐵旋轉到不同角度的時候會在霍爾元器件中產生相對應的電壓信號,根據這個電壓信號可以計算出永磁鐵相對於霍爾元器件的旋轉角度,因此該種編碼器也是一種絕對值式的編碼器。以AS5600絕對值旋轉編碼器爲例,該芯片12bit的分辨率,相當於擁有12個軌道的格雷碼式絕對值編碼器,碼盤被均分成了 2^12 份。AS5600模塊傳感器如下圖:

該模塊一般安裝在被測速電機的軸尾部,與軸垂直,電機軸上會有一個永磁鐵,用於產生旋轉的磁場信號,磁鐵和AS5600芯片之間會有若干毫米的間隔,這種無接觸的方式大大提高了編碼器的可靠性和使用壽命。AS5600的IIC接口用於配置AS5600的參數以及讀取位置信息,同時還有PWM和模擬信號輸出。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章