【问题标题】:Raspberry pi servo doesn't stop树莓派伺服不会停止
【发布时间】:2017-06-02 18:23:49
【问题描述】:

所以我尝试在 pi 相机上使用伺服 (Doman 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()

有什么想法吗?谢谢。

【问题讨论】:

    标签: python raspberry-pi pwm


    【解决方案1】:

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

    [Original] 您在退出时将占空比设置为 0,这可能意味着伺服系统没有收到任何脉冲。一些舵机在没有收到脉冲后会停止一段时间,但一些舵机(特别是数字舵机,但不是全部)会继续尝试从它们收到的最后一个脉冲实现设置。建议您将设置保持在您知道伺服可以达到的中间范围 7.5 并延迟一段时间再清理。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 2015-02-11
    相关资源
    最近更新 更多