无法控制360连续伺服电机FS5106R

时间:2021-06-03 10:55:23

标签: python raspberry-pi gpio servo

我正在做一个项目来创建一个自动猫喷雾器,它会转动伺服电机以喷出水雾,让它们远离某些地方。

但是,我无法让伺服电机转动。有问题的伺服电机是“FS5106R”,我找到了一些有关此规格的数据 (https://www.pololu.com/file/0J1433/FS5106R-specs.pdf)

该伺服电机为360度连续伺服电机,停止位置为1500(±5)微秒,旋转方向为:

  • CW(当 1500~700 微秒时)

  • CCW(1500~2300 µsec时)

我找不到工作频率,但我假设为 50Hz,因为这似乎是默认值。

我为伺服器施加了 5V 电压,这些电缆正在工作,因为我还在不同的 180 度伺服器上测试了它们,我能够通过控制 3 - 12 的占空比来控制它们。

舵机无法工作,舵机的 5v 和接地引脚连接到 USB 电缆,而控制的橙色电缆连接到我的 pi 的 BCM 引脚 17。

我尝试通过执行脉冲宽度/周期的公式来计算我的占空比,我假设它是顺时针的,例如 0.0007(微秒)/ 0.02(频率?)=> 例如 0.115 顺时针转动。

>

然而,这似乎没有任何作用。我尝试了许多价值观,但都没有导致任何运动,而且我不知道我做错了什么。伺服器看起来没有死机,因为如果我取下 5V 并重新打开,它会旋转一点并立即停止。

我试图运行的代码如下:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.OUT)
servo1 = GPIO.PWM(17,50) # pin 11 for servo1, pulse 50Hz

servo1.start(0)

try:
    while True:
        servo1.ChangeDutyCycle(0.035)
        time.sleep(1)
        servo1.ChangeDutyCycle(0.115)


finally:
    #Clean things up at the end
    servo1.stop()
    GPIO.cleanup()
    print("Goodbye!")

如果我不使用 while true 循环,而只执行servo1.start(0),我会听到一些轻微的嗡嗡声,这意味着至少必须有某种形式的通信。 我已经检查以确保我使用的是正确的引脚,因为它们正在另一个伺服电机上工作。

0 个答案:

没有答案