树莓派伺服不会停止(Raspberry pi servo doesn't stop)

2019-09-27 07:03发布

所以我试图用一个伺服(杜曼s0306d)与PI摄像头,尝试运行此脚本,我发现测试电机,它开始运行,但不会停止,除非我手动从线路板拔出。

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()

有任何想法吗 ? 谢谢。

Answer 1:

[编辑]您所使用的伺服是一个“连续的”伺服-所以你需要给它的零速或“STOP”设定1500us的脉冲宽度(根据网站http://www.domanrchobby.com/content/ ?150.html )。 我还没有使用的PI PWM但如果百分数都是50Hz的脉冲率(20毫秒间隔)的则应该是你7.5%中心值。 你需要确保伺服获取脉冲代码退出之前。

[原创]你的占空比,当您退出,这可能意味着伺服没有得到任何脉冲数设定为0。 有些伺服系统会停止一段时间后,他们没有得到脉冲,但有些舵机(特别是数字伺服系统,但不是全部)将继续努力实现从他们收到的最后一个脉冲的设置。 建议你离开设置在中档7.5您知道该伺服可以达到和延迟了一小会儿才清理。



文章来源: Raspberry pi servo doesn't stop