Python, Raspberry Pi

使用樹莓派驅動伺服馬達SG-90

樹莓派有一組40pin的輸出入接腳可以用來控制外部的電路,當然對於伺服器的控制也不成問題,只不過,它使用的是模擬PWM的方式進行輸出,所以在控制上比較沒那麼精準,但是就一般的使用上,還算是可用啦。這篇文章就讓我們來看看如何簡單地控制SG-90這個輕巧的伺服馬達。

由於樹莓派在輸出PWM控制伺服馬達時並沒有直接使用角度作為參數的函式可用,所以要把PWM的頻率直接換算成旋轉角度時有一些需要計算的地方,這部份已有其他熱心的老師提供了詳細的說明,有興趣的同學們可以直接前往以下這篇文章參考:

我們在這裡的程式碼的主要換算函式即是出自上述部落格的內容,在此特別聲明。繼續練習以下的程式,請依照前文的說明,把SG-90的3條線(中間的VCC、棕色的GND、橘黃色的信號線)分別接到樹莓派上的5V、GND、以及第11支接腳上。此外,如果還沒有安裝過RPi.GPIO模組的話,也請利用以下的指令安裝:

$ pip install RPi.GPIO

安裝完畢之後,即可編輯以下的程式進行伺服馬達的驅動測試:

import time

CONTROL_PIN = 17
PWM_FREQ = 50
STEP=15

GPIO.setmode(GPIO.BCM)
GPIO.setup(CONTROL_PIN, GPIO.OUT)

pwm = GPIO.PWM(CONTROL_PIN, PWM_FREQ)
pwm.start(0)

def angle_to_duty_cycle(angle=0):
    duty_cycle = (0.05 * PWM_FREQ) + (0.19 * PWM_FREQ * angle / 180)
    return duty_cycle

def switch2deg(deg):
    dc = angle_to_duty_cycle(deg)
    pwm.ChangeDutyCycle(dc)

degrees = [45, 90, 135, 90]

for i in range(5):
    for deg in degrees:
        switch2deg(deg)
        time.sleep(0.5)

pwm.stop()
GPIO.cleanup()

本程式執行時,伺服馬達會在45、90、135之間來回轉動,5遍之後隨即結束程式的執行。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s