【问题标题】:Control continuous servo motor with Raspberry Pi and Python使用 Raspberry Pi 和 Python 控制连续伺服电机
【发布时间】:2020-01-07 04:01:40
【问题描述】:

我正在尝试使用此代码控制我的连续伺服电机:

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
p = GPIO.PWM(17, 50)
p.start(7.5)
try:
        while True:
                p.ChangeDutyCycle(7.5)
                time.sleep(1)
                p.ChangeDutyCycle(12.5)
                time.sleep(1)
                p.ChangeDutyCycle(2.5)
                time.sleep(1)

except KeyboardInterrupt:
        GPIO.cleanup()

伺服有时会像代码一样正确运行,而其他代码则随机运行相同的代码。我为电机使用了另一个电源。

我认为电机没有损坏,因为我使用 Arduino 控制伺服并且它工作正常。

【问题讨论】:

    标签: python raspberry-pi servo


    【解决方案1】:

    如果“随机工作”是指“它移动到大致正确的位置,但摆动幅度很大”,那么问题出在 Raspberry Pi 的软件脉冲宽度调制 (PWM)

    伺服需要一致的脉冲才能保持一致,比 Pi 的软件可以提供的更准确。所以脉冲略有不一致,表现为“抖动”(在连续伺服中,这将是正确速度附近的随机速度变化)

    【讨论】:

      【解决方案2】:

      除了上面@JeffUK 的回答——我知道这不是软件问题,但仍然是日耳曼——确保你的伺服(即使你说它是由另一个来源提供动力)和 Pi em> 共用一个接地连接。浮地会导致各种不可预知的行为。对于我们软件开发人员来说,在连接外部设备时忘记这一点是很常见的 :) 小细节。

      【讨论】:

      • 谢谢。我通过在我使用的每个循环中使用 gpio.cleanup() 解决了问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多