树莓派伺服不停

时间:2017-06-01 11:33:07

标签: python raspberry-pi pwm

所以我正在尝试使用伺服(Doman s0306d)和pi相机,尝试运行我发现测试电机的脚本,它开始运行但不会停止,除非我手动从面包板上拔下它。< / p>

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 个答案:

答案 0 :(得分:1)

[编辑] 您使用的伺服是一个“连续”伺服 - 因此您需要给它零速或“STOP”设置脉冲宽度1500us(根据网站{{ 3}})。我没有在pi上使用PWM,但如果百分比是50Hz脉冲率(20ms间隔)那么那应该是你的7.5%中心值。在代码退出之前,您需要确保伺服器获得该脉冲。

[原始]退出时将占空比设置为0,这可能意味着伺服不会产生任何脉冲。有些伺服系统会在没有脉冲后停止运行,但有些伺服系统(特别是数字伺服系统,但不是全部)将继续尝试从接收到的最后一个脉冲开始设置。建议你将设置保留在中间范围7.5,你知道伺服可以达到并在清理前延迟一段时间。

相关问题