2017年9月15日 星期五

模組介紹 : faya雙軸伺服馬達模組


學習目標 : 認識faya雙軸伺服馬達模組的功能及使用方式
學習時間 : 45min
示範模組 : (1) faya brcickNano
                  (2) faya雙軸伺服馬達模組
                  (3) faya搖桿模組
工具 : (1) 樂高積木(相容) 

====================功能介紹====================
faya雙軸伺服馬達模組利用2顆伺服馬達組合而成,伺服馬達型號SG-90,它將直流馬達、齒輪箱、與控制電路包在一藍色塑膠盒裡,並引出電源、地和控制腳位,只要使用符合規則的控制信號,就能夠操作連接齒輪上方控制柄的角度,範圍可達180度。

 

faya雙軸伺服馬達模組分成3大部分,上方的雲台區、中間的伺服馬達區(2顆)和下方的模組板,由於體積較大,買來後需要自行組裝下方的模組板,大家可以參考隨盒的組裝說明書,或從這邊下載! 比較需要注意的地方就是訊號/電源/的接線部分,分別為橘色/紅色/棕色,請依序和面板上的 M / VCC / GND 相連





faya雙軸伺服馬達模組的面板如下所示,模組擁有兩個輸入埠,YM1和XM2,分別用來控制M1馬達(Y軸)和M2馬達(X軸),輸入埠的訊號格式為PWM訊號,我們會在原理知識介紹。

  • 當輸入符合規則的PWM訊號到YM1埠時,可控制M1上方馬達
  • 當輸入符合規則的PWM訊號到YM1埠時,可控制M2下方馬達


接下來介紹使用指令,Arduino內建了伺服馬達(Servo)的函示庫,透過寫好的函示,只要幾行指令就能夠精準地控制伺服馬達,以下介紹本範例中用到的函示

  • #include<Servo.h>;
        使用Servo界面時,務必指示Servo.h函式

  • Servo 物件名稱; 
        建構Servo物件名稱,以利程式辨別

         (例) 當建構物件名稱為"fayaServoYM1時",需宣告:

            Servo fayaServoYM1;

  • 物件名稱.attach(pin,min,max); 
        此指令指定連接此伺服馬達的控制腳位

       物件名稱: 程式開頭以建構的物件名稱
       pin : 連接此伺服的腳位,一定要指定PWM腳,如3、5、6、9、10、11
       (例) 當指定pin5連接到物件名稱為"fayaServoYM1",需宣告

           fayaServoYM1.attach(5);


  • 物件名稱.write(angle); 
        此指令設定伺服馬達要選轉到的角度 (0~180)

       物件名稱: 程式開頭以建構的物件名稱
       angle : 旋轉角度(0~180)

       (例) 當要設定物件名稱為"fayaServoYM1"旋轉角度為100度時,需宣告

           fayaServoYM1.write(100);

====================原理知識====================
以下解釋提供給有需要知道背後原理的人:

faya雙軸伺服馬達電路圖如下所示,除了外加電容和bead抗電源雜訊,其餘部分剩下電源、地和兩個馬達的訊號線,位於模組上的輸入埠 YM1、XM2。



伺服馬達SG90透過PWM脈波訊號來控制轉動位置,訊號的頻率為50Hz,也就是20ms的脈波寬度,透過脈波寬度的改變,就能改變馬達最後停止位置。


從datasheet可以得知控制角度為180度 (-90 ~ 0 ~ 90),欲從最左邊的-90度到最右邊的90度,相對的脈波寬度約為 (1ms ~1.5ms ~ 2ms)。


大家也許發現到提了這麼多脈衝寬度,但是在函示庫介紹裡面,都沒有脈衝寬度相關的指令,原因就是Arduino把伺服馬達最終控制位置和PWM的關係都寫成函示庫打包好了,使用者只要下位置指令,Arduino就會根據包好的函示,送出該有的PWM,讓馬達停在指定的位置,控制起來非常簡單。 要注意的地方大概就是控制腳位一定要指定到PWM的腳位才能正常運作!

=====================範例實作====================
了解模組功能(原理)後,我們用以下範例來展示模組的功能:

目標:
(1) 左右移動搖桿時,伺服馬達左右擺動
(2) 上下移動搖桿時,伺服馬達逆順轉動

接線:
(1) 電源線連接
     如下圖所示,連接的說明請看這篇文章 簡易版


(2) 訊號線連接
      Arduino_5  ===>  雙軸伺服馬達模組_YM1
      Arduino_6  ===>  串列七段顯示模組_XM2


      Arduino_A5  ===>  搖桿模組_VRX
      Arduino_A4  ===>  搖桿模組_VRY

 

範例程式:

備注:
- L34~L39 : 搖桿的X-Y軸讀取到的電壓值(0~1024),轉化成0~180的角度位置
- L26~L27 : 網路上有些文章在討論SG90伺服馬達的校正,由於Servo函示預設的脈衝寬度範圍是544到2400µs,但SG90是500到2400us,我們可以將此兩行程式修改成以下,再比較結果。

           fayaServoYM1.attach(YM1,500,2400);
           fayaServoXM2.attach(XM2,500,2400);

-L40 : 延遲讓馬達有時間能夠反應,太長的話,反應會不靈敏,太短的話,會反應不過來,大家可試試看!

範例結果:


討論:
faya雙軸伺服馬達模組,搭配了樂高雲台後,可在雲台上安裝不同的faya電子積塊,發揮大家的想像力,例如人體紅外線模組,追蹤人的位置,例如網路攝影機加上無線模組,就能夠做遠端要控和監控了!

有時間時,我們也來做做這些有趣的應用!

歡迎大家到我們的FB留言板討論!
====================================
fayalab 粉絲團
FB本篇留言版


沒有留言:

張貼留言