我正在尝试使用以下代码来控制我的连续伺服电机:
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来控制伺服,它工作得很好。
发布于 2017-07-18 03:20:15
如果“随机工作”的意思是“它大致移动到正确的位置,但摆动很多”,那么问题就出在树莓派的软件脉宽调制(PWM)上。
伺服需要一致的脉冲才能表现一致,比Pi的软件所能提供的更精确。因此,脉冲略有不一致,表现为“抖动”(在连续伺服中,这是在正确速度附近随机改变速度)。
发布于 2017-07-18 09:47:20
除了@JeffUK上面的回答--我知道这不是软件的问题,但仍然是germain --确保你的伺服系统(即使你说它由另一个电源供电)和Pi 共享一个公共的接地连接。浮动的地面会导致各种不可预知的行为。对于我们软件人员来说,忘记这一点是很常见的:)在连接外部设备时没有太多细节。
https://stackoverflow.com/questions/45150825
复制相似问题