2013-08-25 13 views
0

Справочная информация. Купил BBB и немного экспериментировал, смог управлять светодиодами и реле. Проблема: не может получить ожидаемое поведение от сервопривода, он продолжает вращаться против часовой стрелки Причина: не знаю, сывороточный я спрашиваю здесь :)Проблема программирования PWM в моем BBB

Факты: BBB с Ангстрем внешнего 5V DC для обоих BBB и сервопривод Серво: Tower Pro sg90 (очень распространенный серво) И он работает, когда я пробовал его в своем RC-автомобиле.

Процедура: после нескольких учебных пособий в Интернете (и использовалась библиотека 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 

Doing выше сервопривод вращается против часовой стрелки, без остановки. Я могу читать 50 Гц (60 Гц) и 1,66 В и даже пытаюсь использовать переключатель уровня, поэтому я получаю ~ 2.5V Я не знаю, что я делаю в Wronge (если есть), или я что-то упускаю?

ответ

0

Я также попытался получить сервопривод, работающий с Beaglebone Black.

В конце концов, я был в состоянии получить хорошие результаты, точно следуя учебник: http://learn.adafruit.com/controlling-a-servo-with-a-beaglebone-black?view=all

Как я понимаю, самые последние версии библиотеки Adafruit_BBIO обрабатывать контактный мультиплексирования материал полностью, поэтому ваш единственный интерфейс к BBB может быть через скрипт Python, вместо того, чтобы делать материал командной строки в вашем вопросе.

Библиотека Adafruit_BBIO значительно изменилась за последние 30 дней, так что стоит делать эти шаги, чтобы:

  • перезагрузки В
  • запустить pip install Adafruit_BBIO --upgrade
  • Попробуйте простой сценарий Python, как в учебник от Adafruit.

Надеюсь, это поможет!

Обновление в ответ на комментарий плаката:

Ммм, жаль слышать, что мои шаги не работают! Если ваш код дает 13% -ный рабочий цикл при 50 или 60 Гц, это заставляет меня думать, что код в порядке, и у сервопривода возникают проблемы.

Я знаю, что вы, вероятно, проверили его дюжину раз, но это 5v, которое вы отправляете на сервоконтроль? Как и в, идет ли он от P9_5 или P9_6, которые от высоковольтного питания 5 В?

Кроме того, перечитывая свой вопрос, вы говорите, что серво продолжает вращаться CCW - если он не достигает предела и перестает двигаться в какой-то момент, возникает ваша проблема: сервоприводы непрерывного вращения не могут достичь конкретных поскольку у них отсутствует система обратной связи, у которой 0-180 сервоприводов есть ...

+0

не Пытались, что один, а, по-прежнему не повезло. Что действительно странно, я могу читать 50 или 60 Гц (в зависимости от того, какую частоту я программирую) от сигнального штыря, и я могу читать 13% -ный рабочий цикл (в зависимости от того, какое значение я программирую). Но все равно ничего! это немного расстраивает: - | – user2715922

0

напряжение для pinuots составляет 3,3 В (кроме АЦП 0-1,8 В диапазона (не превышать!)), а не 5В, так что правильно читать 1.66v с рабочим циклом 50%.

0

Действительно ширина импульса для «Tower Pro sg90» является 500-2400 мкс, так что допустимые значения для «долга» являются 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 

 Смежные вопросы

  • Нет связанных вопросов^_^