用Raspberry Pi和Python控制连续伺服电机

时间:2017-07-17 18:04:25

标签: python raspberry-pi servo

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

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来控制伺服,它运行良好。

2 个答案:

答案 0 :(得分:1)

如果“随机工作”你的意思是“它移动到大致正确的地方,但是在很多地方摆动”那么问题将出现在Raspberry Pi的软件脉冲宽度调制(PWM)

伺服需要一致的脉冲才能表现出一致,比Pi软件所能提供的更准确。因此脉冲略微不一致,表现为“抖动”(在连续伺服中,这将是围绕正确速度的随机速度变化)

答案 1 :(得分:0)

除了@ JeffUK的上述答案 - 我知道它不是软件的东西,但仍然是germain - 是确保你的伺服(即使你说它&#39) ;由另一个来源驱动)和Pi 共享一个共同的地面连接。浮动地面可能会导致各种不可预测的行为。我们的软件人员在连接外部设备时忘记这一点很常见。