0

背景:买了一个BBB并进行了一些实验,设法控制了LED和继电器。问题:无法从伺服中获得预期的行为,它一直在逆时针旋转原因:不知道,我在这里问的是什么:)

事实:BBB 与 Angstrom 外部 5V DC 连接到 BBB 和伺服伺服:Tower Pro sg90(非常常见的伺服)并且它正在工作,因为我在我的 RC 汽车中尝试过它。

程序:按照网络上的 som 教程(并使用 Adafruit_BBIO 库),我正在尝试使我的伺服工作,例如转 0、90、180 等,所以这就是我正在做的事情:

echo am33xx_pwm > /sys/devices/bone_capemgr.8/slots
echo bone_pwm_P8_13 > /sys/devices/bone_capemgr.8/slots
echo 20000000 > /sys/devices/ocp.2/pwm_test_P8_13.15/period (this is 50Hz,also tried 60Hz)
echo 10000000 > /sys/devices/ocp.2/pwm_test_P8_13.15/duty
echo 1 > /sys/devices/ocp.2/pwm_test_P8_13.15/run

执行上述操作,伺服系统会不停地旋转 CCW。我可以读取 50Hz (60Hz) 和 1.66V 甚至尝试使用电平转换器所以我得到〜 2.5V 我不知道我在做什么错(如果我是的话)或者我错过了什么?

4

3 回答 3

0

pinuots 的电压是 3.3v(ADC 0-1.8V 范围除外(不要超过!))而不是 5v,所以正确读取 1.66v 占空比为 50%。

于 2013-12-12T21:10:22.147 回答
0

“Tower Pro sg90”的有效脉冲宽度为µs 500-2400,因此“duty”的有效值为500000-2400000.

这应该将您的伺服转向 CW 方向:

// On my BBB, polarity is inverted by default
echo 0 > /sys/devices/ocp.2/pwm_test_P8_13.15/polarity

echo 20000000 > /sys/devices/ocp.2/pwm_test_P8_13.15/period 
echo 500000 > /sys/devices/ocp.2/pwm_test_P8_13.15/duty
echo 1 > /sys/devices/ocp.2/pwm_test_P8_13.15/run 
于 2014-03-21T11:42:09.817 回答
0

我还努力让伺服器与 Beaglebone Black 一起工作。

最终,我完全按照本教程获得了良好的结果:http ://learn.adafruit.com/controlling-a-servo-with-a-beaglebone-black?view=all

据我了解,Adafruit_BBIO 库的最新版本完全处理引脚复用的东西,所以你唯一的 BBB 接口可以通过 Python 脚本,而不是在你的问题中做命令行的东西。

Adafruit_BBIO 库在过去 30 天内发生了显着变化,因此值得按顺序执行以下步骤:

  • 重启 BBB
  • pip install Adafruit_BBIO --upgrade
  • 尝试一个简单的 Python 脚本,例如 Adafruit 教程中的那个。

我希望这有帮助!

更新以回应海报的评论:

嗯,很遗憾听到我的步骤不起作用!如果您的代码在 50 或 60Hz 下导致 13% 的占空比,那让我认为代码很好,并且伺服系统有问题。

我知道您可能已经检查了十几次,但是您发送到伺服的 5v 是否在检查?如,它来自大电流 5v 电源的 P9_5 还是 P9_6?

另外,重新阅读您的问题,您说伺服系统一直在逆时针旋转-如果它没有达到极限并在某个点停止移动,那么您的问题是:连续旋转伺服系统无法达到特定的设定点,因为它们缺少0-180舵机所具备的反馈系统……

于 2013-08-26T14:11:10.393 回答