伺服馬達

最後更新日期:2022-03-24 10:34:43

透過伺服馬達執行一定角度的動作,例如:智慧小屋的開關門、雲台攝影機的旋轉腳座。其電子零件樣貌如下圖,其腳位線路依顏色區分為:紅色(VCC)、棕色(GND)及橘色(控制信號),旋轉角度理論值為0 ~ 180度,但實際控制範圍可能略小於此範圍。

伺服馬達元件

通常伺服馬達的配件會有三種不同樣式的軸柄,依據實際應用面來採用。並附有三顆螺絲,其中兩顆較長且帶尖端的螺絲,可用來將伺服馬達固定於基座上;另一顆平底較短的螺絲,是用來鎖軸柄與伺服馬達的轉軸。

伺服馬達的轉動角度控制方式,是對橘色線輸入一個特定週期的脈波,以脈波佔據週期的比例(Duty Cycle、或稱工作週期),來實現旋轉角度的控制。下圖是控制伺服馬達的訊號,當工作週期為7.5%時,伺服馬達將旋轉至90度的位置。

伺服馬達控制信號與旋轉角度說明

# 實作步驟

  • 學習使用
  • 設計電路圖
  • 連接電路
  • 搭建積木程式 & 執行

# 學習使用

學習使用伺服馬達對應的積木,讓其旋轉至90度位置,並維持在該角度。(觀看下方的影片,發現伺服馬達一直有微動,原因稍後會說明。)

# 設計電路圖

電路圖設計如下:(注意連接的線路顏色)

伺服馬達電路圖

# 連接電路

實際線路如下圖,建議連接步驟如下,若您要移除電路時,請使用相反的順序進行即可。

  1. 於麵包板上連接相關元件
  2. 資料、控制腳位連接上樹莓派
  3. GND腳位連接上樹莓派
  4. VCC(5V or 3.3V)腳位連接上樹莓派

伺服馬達電路連接

# 搭建積木程式 & 執行

開啟積木程式畫面如下,若您已經下載代理程式,並且完成「rp_agent」設定,可以將首次使用須知下方的框框,勾選「不再顯示此訊息」,並按下「確定」按鈕。

PS. cwBlockly頁面請於樹莓派中執行。

積木程式首次使用須知

初始畫面如下。

積木程式初始畫面

控制伺服馬達的積木位於「馬達元件」→「伺服馬達」。

伺服馬達

拖曳「伺服馬達定義積木」至RPi預設積木中,並將腳位編號改為12。

伺服馬達定義積木

要控制伺服馬達的旋轉角度,需要透過角度設定積木。請再次打開「伺服馬達」積木區,拖曳並放置「角度設定積木」積木。

拖曳角度設定積木

放置角度設定積木

點擊角度設定的空白輸入框,會顯示一個圓餅圖,讓您透過滑鼠游標來設定角度。

透過滑鼠游標來設定角度

因控制伺服馬達的方式,需要不斷的產生脈波,所以不能讓程式結束,故需要加上一個迴圈。(迴圈內有延遲時間,來避免過度佔用CPU資源。)

完成積木程式

「執行」程式,請點擊右上方紅色Play按鈕。

執行積木程式

此時就會發現伺服馬達雖然旋轉至90度的位置,但卻有晃動的現象。其原因是產生脈波的PWM,是以軟體的方式來輸出特定脈波,因樹莓派的作業系統是多工分時,所以程序運行在CPU的時間,不固定且會不停的切換,造成輸出的脈波工作週期,無法保證都是Duty Cycle 7.5%,就會讓伺服馬達轉到其他的角度,所以晃動的原因就是轉動的角度,在90度與其他的角度之間來來回回。

下載本範例積木程式 Servo_Motor_01.rpb

是否有改善的方式呢?既然有軟體的方法,當然也有硬體的方案。樹莓派內含兩組硬體PWM的控制,第1組硬體PWM同時輸出至實際腳位12(GPIO 18)及32(GPIO 12),第2組的實際腳位為33(GPIO 13)及35(GPIO 19)。

我們只需要將「伺服馬達定義積木」,從原本的軟體PWM積木,換成硬體PWM積木即可。開啟「伺服馬達」積木區,拖曳並放置「硬體PWM伺服馬達定義積木」於程式積木中。

拖曳硬體PWM伺服馬達積木

放置硬體PWM伺服馬達積木

點一下腳位GPIO輸入框,下拉選擇「18(12)」,此處的意思是讓控制腳位為實際板上接腳編號12,且對應的GPIO編號為18,也就是第1組硬體PWM。

調整控制腳位

在原伺服馬達定義積木,按下滑鼠右鍵,選擇「刪除」選項。

刪除原伺服馬達定義積木

修改後的積木程式

再次執行程式,效果如下片段。(因不會產生晃動,怕看不出差異,所以影片一開始讓伺服馬達停留在非90度的位置。)

下載本範例積木程式 Servo_Motor_02.rpb

當然除了固定角度之外,也可以讓伺服馬達週期性的作動,底下提供一個來回轉動的範例。

週期性變更角度的伺服馬達

下載本範例積木程式 Servo_Motor_03.rpb


若您對基礎電子套件有興趣,可至蝦皮賣場購買,若是學校團體亦可來信訂購,謝謝。

若對本篇教學文章有任何建議或問題,歡迎您來信:chipwaygo@gmail.com,謝謝。