背景:买了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(如果我是)或者我错过了什么?
答案 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天内发生了重大变化,因此值得按顺序执行以下步骤:
pip install Adafruit_BBIO --upgrade
我希望这有帮助!
更新以回应海报的评论:
嗯,很遗憾听到我的步骤不起作用!如果您的代码在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