将 PWM 与 Raspberry Pi 一起使用时出现伺服问题

Servo Issues while using PWM with Raspberry Pi

我的设置只是通过 GPIO 库用 raspberry pi 的 PWM 直接激活伺服 JX-PDI-6221MG。伺服是全新的,我遵循 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)`

据我所知,GPIO 库只能将 GPIO 18 用于硬件 PWM。尝试将 GPIO.OUT 更改为那个。

也可以尝试使用允许任何 GPIO 引脚执行硬件定时 PWM 的 pigpio 库。

Servos 通常需要精确计时,因此在像 Raspberry Pi 这样的非实时设备上,这意味着您需要使用硬件 PWM 引脚。 RPi.GPIO 只支持软件模拟 PWM,所以你需要使用其他库,例如小猪.