使用带Raspberry Pi的PWM时出现伺服问题

时间:2018-06-07 02:52:06

标签: python raspberry-pi servo

我的设置只是伺服JX-PDI-6221MG通过覆盖树pi的PWM通过GPIO库直接激活。伺服是全新的,我跟着this tutorial并将占空比值设置在0到100之间。它所形成的角度没有模式,它似乎从20到50的一个方向,而另一个从60到90。

我决定循环遍历所有可能的占空比(代码在下面)并且我确认变化不平滑且看起来不精确。在尝试再次设置修正值之后,它突然开始在多个方向旋转,即使我没有改变任何东西。甚至GPIO.cleanup()或杀死python相关进程都没有停止。

我的Raspberry Pi是否会出现抖动并且非常不精确或者我是伪造的受害者?

代码:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11,GPIO.OUT)
pwm=GPIO.PWM(11,330) #which is the same as shown in datasheet
pwm.start(0)

for i in range(0,100):
     pwm.ChangeDutyCycle(i)
     time.sleep(0.02)

for i in range(0,100):
     i = 100 - i
     pwm.ChangeDutyCycle(i)
     time.sleep(0.02)`

2 个答案:

答案 0 :(得分:0)

AFAIK,GPIO库只能将GPIO 18用于硬件PWM。尝试将GPIO.OUT更改为此。

还尝试使用Pigpio库,该库允许任何GPIO引脚执行硬件定时PWM。

答案 1 :(得分:0)

Servos通常需要精确的时序,因此在非实时设备(如Raspberry Pi)上,这意味着您需要使用硬件PWM引脚。 RPi.GPIO仅支持软件仿真的PWM,因此您需要使用其他库,例如小猪。