我的BBB中的PWM编程问题

时间:2013-08-25 18:00:48

标签: pwm beagleboneblack

背景:买了BBB并尝试了一下,设法控制LED和继电器。 问题:伺服无法获得预期的行为,它继续旋转CCW 原因:不知道,乳清我在这里问:)

事实: BBB与Angstrom BBB和伺服均为外部5V DC 伺服:Tower Pro sg90(非常常见的伺服)它正在我的遥控车中试用它。

程序:在网上关注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 我不知道我在做什么wronge(如果我是)或者我错过了什么?

3 个答案:

答案 0 :(得分:0)

我也努力让伺服与Beaglebone Black合作。

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

据我了解,Adafruit_BBIO库的最新版本完全处理了pin muxing的内容,所以你唯一的BBB接口可以通过Python脚本,而不必在你的问题中执行命令行。

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

  • 重启BBB
  • 运行pip install Adafruit_BBIO --upgrade
  • 尝试使用Adafruit教程中的简单Python脚本。

我希望这有帮助!

更新以回应海报的评论:

嗯,很遗憾听到我的步骤不起作用!如果您的代码在50或60Hz时产生13%的占空比,那么我认为代码很好,伺服系统也遇到了麻烦。

我知道你可能已经检查了十几次,但是你要发送给伺服检查的是5v吗?如何,是来自P9_5还是P9_6,来自高电流5v电源?

另外,重新阅读你的问题,你说伺服一直旋转CCW - 如果它没有达到极限并且在某个时刻停止移动,那就是你的问题:连续旋转伺服系统无法达到特定的设置因为他们缺少0-180伺服系统的反馈系统......

答案 1 :(得分:0)

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

答案 2 :(得分:0)

“Tower Pro sg90” 的有效脉冲宽度为500-2400μs,因此“职责”的有效值为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