2017-06-01 30 views
1

所以我試圖用pi相機使用伺服(杜曼s0306d),試圖運行這個腳本,我發現測試電機,它開始運行,但不會停止,除非我手動從麪包板上拔下它。樹莓派伺服不停止

import RPi.GPIO as IO  # calling for header file for GPIO’s of PI 
import time       # calling for time to provide delays in program 
IO.setwarnings(False)   # do not show any warnings 
IO.setmode (IO.BCM)   # programming the GPIO by BCM pin numbers. (like PIN29 as‘GPIO5’) 
IO.setup(19,IO.OUT)    # initialize GPIO19 as an output 
p = IO.PWM(19,50)    # GPIO19 as PWM output, with 50Hz frequency 
p.start(7.5)        # generate PWM signal with 7.5% duty cycle 
time.sleep(4) 
for x in range(0,5):              # execute loop forever          
     p.ChangeDutyCycle(7.5)     # change duty cycle for getting the servo position to 90º 
     time.sleep(1)          # sleep for 1 second 
     p.ChangeDutyCycle(12.5)     # change duty cycle for getting the servo position to 180º 
     time.sleep(1)          # sleep for 1 second 
     p.ChangeDutyCycle(2.5)     # change duty cycle for getting the servo position to 0º 
     time.sleep(1)         # sleep for 1 second 
p.ChangeDutyCycle(0) 
p.stop() 
IO.cleanup() 

任何想法?謝謝。

回答

1

[編輯]您所使用的伺服是一個「連續的」伺服 - 所以你需要給它的零速或「STOP」設定的1500us脈衝寬度(根據網站http://www.domanrchobby.com/content/?150.html)。我沒有在pi上使用PWM,但是如果百分比是50Hz脈率(20ms間隔),那麼這應該是你的7.5%中心值。您需要確保伺服器在您的代碼退出前獲取該脈衝。

[原創]您在退出時將佔空比設置爲0,這可能意味着伺服器不會獲得任何脈衝。一些舵機在沒有達到脈衝之後會停止,但有些舵機(尤其是數字舵機,但不是全部)將繼續嘗試從他們收到的最後一個脈衝中獲得設置。建議您將設置保留在中等範圍7.5,您知道伺服可以達到並延遲一段時間,然後再進行清理。

+0

好的謝謝,會試試看! – Dawzer

+0

查看編輯,查看製造商數據表http://www.domanrchobby.com/content/?150.html – barny