在上一篇文章中,我們利用 Raspberry Pi 軟體模擬式的 PWM 功能來控制伺服馬達 SG90。在這篇文章中,我們將利用 Raspberry Pi 的硬體式 PWM 功能搭配 Python 程式來控制伺服馬達 SG90,並比較與軟體模擬方式之間的不同。

虛擬環境配置

因為這個範例一樣需要支援硬體 PWM 功能的 pigpio 模組,所以準備工作與 在 Raspberry Pi 3 Model B 利用硬體 PWM 控制 LED 亮度 一致。如果你還沒有完成相關的準備,請務必先行完成再繼續進行後面的工作。

線路圖

Raspberry Pi 與 SG90 伺服馬達,採用硬體式 PWM

Raspberry Pi 與 SG90 伺服馬達,採用硬體式 PWM

說明如下:

  1. 在這個範例中我們將使用硬體式的 PWM 功能,所以控制接腳 (橘色) 必須連結至支援硬體 PWM 功能的腳位,這個範例中我們使用實體編號 12 的腳位 (其 BCM 編號為 18)。
  2. SG90 的工作電壓為 +4.8V 以上,所以我們必須連結至 Raspberry Pi +5V 的腳位,在此我們將 SG90 電源輸入接腳 (紅色) 連結至實體編號 2 的腳位。
  3. 接地接腳 (棕色) 必須接地,所以連結至 Raspberry Pi 的實體編號 6 的腳位。
  4. 腳位對應關係整理如下:
    SG90 伺服馬達接腳Raspberry Pi GPIO 腳位
    橘色 (控制訊號)實體編號 12 (BCM 編號 18)
    紅色 (電源輸入)實體編號 6 (接地)
    棕色 (接地)實體編號 2 (+5V)
  5. 如之前所提,伺服馬達的啟動或運作電流可能會過大而造成運作不正常、甚至損毀 Raspberry Pi,因此如果你手邊的伺服馬達並沒有註明型號,也沒有相關規格,請避免直接連結至 Raspberry Pi。

程式代碼

利用文字編輯器 (如 nano) 新增 Python 程式 hardware_pwm_sg90.py

內容如下

程式說明如下:

  1. 第 1 行引入 pigpio 套件,在這個範例中我們將透過這個套件使用 Raspberry Pi 的硬體 PWM 功能。
  2. 第 4 行定義控制接腳所連結之 Raspberry Pi 腳位,我們連結的是實體編號 12 的腳位,其 BCM 編號為 18。
  3. 第 5 行定義 PWM 所使用的頻率。
  4. 第 6 行定義每次旋轉的角度。
  5. 第 8 行宣告 pigpio 控制物件。
  6. 第 10~12 行定義角度與工作週期的對應關係,也就是這篇文章中的公式三。不過因為 RPi.GPIO 所使用的工作週期參數範圍為 0 ~ 100,而 pigpio 的 hardware_PWM 函式所使用的工作週期參數範圍為 0 ~ 1000000,所以須將原公式乘以 10000。
  7. 第 16~25 行透過兩個 for 迴圈將 SG90 由 0 度逐次旋轉至 180 度,之後再逐次轉回 0 度。
  8. 第 26 行將 SG90 軸心旋轉至 90 度。
  9. 第 27~28 行執行無任何功能的迴圈,其目的是讓 SG90 的軸心停在 90 度的位置。
  10. 第 32 行確定程式結束後程式中所使用的腳位會回到預設狀態。

程式完成後,輸入下列指令執行程式

順利的話,就可以看到 SG90 的軸心開始每隔兩秒移動 15 度,並在畫面上印出目前的旋轉角度。而當來回移動一次後,SG90 的軸心回到 90 度的中央位置不再轉動。如下方影片中所示。

在這個範例中,我們看到了如何利用 Raspberry Pi 的硬體 PWM 功能來控制伺服馬達 (SG90)。與軟體模擬式的 PWM 結果相比,當程式最後將 SG90 軸心停在 90 度的固定位置時,幾乎不會出現抖動的現象。即使在 50Hz 這樣的低頻率之下,硬體式 PWM 仍明顯比軟體模擬式 PWM 擁有更高的穩定度。當頻率更高時,兩者的差異應當會更加明顯。儘管如此,畢竟 Raspberry Pi 支援硬體 PWM 的腳位不算多,再加上電源輸出的的考量,因此當需要控制多個伺服馬達時還是應考慮使用專用 HAT 或其他更合適的控制板。

如果對文章的內容有任何疑問或建議,歡迎與我聯絡。

Facebook 留言
Print Friendly, PDF & Email
Summary
Raspberry Pi 3 Mobel B 利用硬體 PWM 控制伺服馬達
Article Name
Raspberry Pi 3 Mobel B 利用硬體 PWM 控制伺服馬達
Description
在這篇文章中,我們將利用 Raspberry Pi 的硬體式 PWM 功能搭配 Python 程式來控制伺服馬達 SG90,並比較與軟體模擬方式之間的不同。
Author
Publisher Name
Everlearn Studio
Publisher Logo