我的设置只是伺服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)`
答案 0 :(得分:0)
AFAIK,GPIO库只能将GPIO 18用于硬件PWM。尝试将GPIO.OUT更改为此。
还尝试使用Pigpio库,该库允许任何GPIO引脚执行硬件定时PWM。
答案 1 :(得分:0)
Servos通常需要精确的时序,因此在非实时设备(如Raspberry Pi)上,这意味着您需要使用硬件PWM引脚。 RPi.GPIO仅支持软件仿真的PWM,因此您需要使用其他库,例如小猪。