1

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

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 来控制伺服并且它工作得很好。

4

2 回答 2

1

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

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

于 2017-07-17T19:20:15.177 回答
0

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

于 2017-07-18T01:47:19.880 回答