AS5600磁編碼器電路與3D列印測試旋鈕(一)

超圖解ESP32深度實作》第2章介紹了偵測磁場變化的霍爾感測器及其用途,並展示ESP32內建的霍爾感測器的操作範例,《超圖解ESP32深度實作》範例檔更新說明這篇貼文提到,新版開發工具已不支援讀取霍爾感測值的hallRread()函式。

霍爾電流感測器

因此,《超圖解ESP32應用實作》第5章說明如何使用霍爾感測器檢測馬達轉速與移動距離。

霍爾感測器

本文將使用另一種「磁編碼器」來實驗霍爾感測器應用。市面上有多種不同型號的非接觸式磁性旋轉位置感測器,例如,AS5040, AS5600, MT6701, MT6816, MT6826S, … 等。下圖左是AS5600(I2C介面),右邊是MT6816(SPI介面)。

磁編碼器

這兩個模組都能檢測位於IC上方的磁石的絕對旋轉角度,而透過連續偵測旋轉角度,程式也能計算出磁石的每分鐘旋轉數(RPM)。MT6816模組的價格大約比AS5600貴一倍,若要偵測馬達的轉速,MT6816比較合適,其轉速偵測上限約25000RPM;在普通I2C通訊速率(100KHz)下,AS5600轉速偵測上限約3000 ~4000 RPM。

AS5600可取代傳統(機械式)的角度偵測器,例如,可變電阻和旋轉編碼器,用於偵測旋鈕以及機械手臂的轉動角度,其主要特點:

  • 具備數位與類比資料輸出介面:I2C, PWM與類比。
  • 12位元解析度,也就是0~360度分別對應到0~4095數值,或者,在類比輸出腳,每旋轉增加1度,類比輸出電壓上升VDD/4096 V。

AS5600 IC正面中心,內部有4個霍爾感測器,如下圖左所示;下圖右是AS5600模組的主要電路,可用5V或3.3V供電,I2C接腳各連接一個10KΩ上拉電阻。

AS5600模組電路

底下列舉AS5600的主要接腳定義,詳細說明請參閱AS5600原廠資料手冊

  • SDA:I2C資料,I2C的位址是0x36。
  • SCL:I2C時脈
  • OUT:PWM或類比訊號輸出,類比訊號電壓介於0~VDD,與偵測角度值成正比。
  • DIR:旋轉方向(direction),預設(IC內部接地)為磁石往順時針方向旋轉時,輸出值增大;DIR腳接VDD(高電位),則是逆時針旋轉,輸出值增大。

下圖顯示磁石轉動角度和AS5600的輸出值變化。

磁石轉動角度和AS5600的輸出值變化

  • GPO:程式設置模式(program option)。若程式不需要偵測完整的0~360角度範圍,可透過程式設定實際使用的範圍來提升輸出解析度,設置範圍介於18~360度。此模組的GPO腳接地,代表透過OUT接腳設定偵測的角度範圍。

磁石的類型與擺設方式

筆者購買的AS5600和MT6816模組都有附帶直徑4mm的小磁石,按照磁化(充磁)方向,磁石可分成平面和垂直兩種,「磁編碼器」採用的是「平面充磁」類型。

磁石的類型

AS5600原廠技術文件有提到,磁石與IC的典型距離為0.5~3mm。

磁石與IC的典型距離為0.5~3mm

3D列印不需要螺絲即可組裝的磁編碼器旋鈕

我用3D製圖軟體繪製了一個旋鈕,正反面外觀如下,其內部軸心底下做了一個可塞入磁鐵的凹槽。為了讓這個旋鈕跟放置磁感測器模組的底部相連,不要用螺絲或黏膠,我在旋鈕的內部刻劃了30個半圓形的凹槽。

3D列印磁編碼器旋鈕

這是旋鈕底座的模樣,中間的方形開孔,是為了露出磁感測器模組的IC(以及突出PCB板的焊接排針),左下圖的環狀結構外圍有4個小凸點,用於嵌入旋鈕內側的凹槽,環狀的缺口是為了讓它保有彈性,方便塞入或取出旋鈕。

3D列印磁編碼器旋鈕底座

旋鈕和底座組合起來的樣子:

3D列印磁編碼器旋鈕

用3D列印機列印的成品外觀,磁石已經塞入旋鈕軸心。實際操作組合好的旋鈕時,轉動到某些點會感覺到不滑順,畢竟這個旋鈕的尺寸不大,直徑30mm,普通0.4mm噴嘴的FDM型3D列印機,無法精密打印出其內部30個細小、平滑的凹槽。此外,底部環型上面有4個凸點,若減少成兩個,應該能讓轉動變得滑順。

3D列印磁編碼器旋鈕

建立3D模型時,需要先測量感測器模組的尺寸。這個電路板的兩邊並不等長,約差0.5mm,四個圓孔對應電路板中心點的距離也不一樣。「PID循跡自走車PCB電路板說明」貼文有提到,即便是相同尺寸的OLED顯示器,以及循跡紅外線感測器模組,它們的連接孔位不見得一樣。

仔細觀察你手邊的電子模組的PCB板,你會發現有些板子周圍會留下一點切除的毛邊,甚至不平整的切痕,所以這個底座當中,嵌入PCB板的凹槽,我刻意預留多一點空間。

3D列印磁編碼器旋鈕底座

實際在此模組焊接排針,並插入麵包板,可看到這個PCB板的排針焊接孔跟兩側沒有平行,所以整體是歪斜的。當然,這不影響使用。

AS5600模組

我已經把.stl和.step格式的旋鈕和底座的3D模型檔上傳到創想雲的這個網址,任何人都能下載、自由修改。

AS5600磁感測器的麵包板接線

若採用I2C介面連接控制板,只需要接4條線。Arduino UNO R3或R4開發板的I2C有固定的腳位,跟其他I2C模組的接法一樣。像ESP32-S3這種,沒有固定的I2C腳位,則由開發板的編譯環境決定,以《超圖解ESP32應用實作》第11章採用的樂鑫ESP32-S3-DevKit開發板為例,SDA和SCL腳分別設定在腳8和9,因此接線如下:

AS5600磁感測器的麵包板接線

當然,我們也可以把SDA和SCL接在其他腳位,下一篇貼文再一併說明。

Posts created 529

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top