Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: независимое управление 3 сервомашинками
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Валероша
здравствуйте, помогите девушке, которая не особо разбирается в программировании wacko.gif sad.gif sad.gif
надо запрограммировать в AVR сервомашинки.
у нас есть 3сервопривода. на микроконтроллере АТМега необходима создать независимое управление ими. У нас должна быть отдельная подпрограмма, в которую мы вводим координаты в которые должна прийти машинка, они пересчитываются на углы, серваки поворачиваются и выдают из подпрограммы обратно координаты на которые повернулись
Как это осуществить - не представляю...sad.gif
Alex11
Так в чем проблема? Как пересчитать координаты в углы? Или как передать их в сервомашинки и получить обратно результат? В первом случае нужно знать коэффициент между углом и координатой, который определяется Вашей механикой и должен быть Вам известен. Во втором - рассказывайте как подключены машинки, какого типа они и еще кучу информации. Не стесняйтесь писать много. А то у нас, как всегда, телепаты все в отпуске.
garlands
Вот. Да и вообще весь раздел к изучению раз
Цитата
Как это осуществить - не представляю...
Валероша
Цитата(Alex11 @ Apr 8 2014, 07:56) *
Так в чем проблема? Как пересчитать координаты в углы? Или как передать их в сервомашинки и получить обратно результат? В первом случае нужно знать коэффициент между углом и координатой, который определяется Вашей механикой и должен быть Вам известен. Во втором - рассказывайте как подключены машинки, какого типа они и еще кучу информации. Не стесняйтесь писать много. А то у нас, как всегда, телепаты все в отпуске.

Используем МК Atmega32a.
надо сделать функцию(-ии) для работы с сервомашинками. Оформить ее надо как файл *.h или просто кусок кода для вставки в основную программу.
С хорошими подробными комментариями и предваряющей инструкцией по использованию в пару строк.
Эта функция должна решать задачу формирования сигналов на машинки. Для этого она может использовать один таймер. При этом она должна уметь управлять 4-5 пронумерованными сервомашинками.
Работа с функцией должна быть удобной. Например, что бы обращаться к ней так servo_set(%номер_машинки%, %угол_в_градусах/радианах%)
Так же нужно иметь возможность настраивать крайние положения машинок например так servo_min(%номер_машинки%, %значение_угла_в_градусах/радианах%, %соответствующая_длина_импульса_в_мкс%). Или аналогично через дефайны.
Хорошо бы иметь возможность менять дискрету угла поворота (хотя бы два-три варианта: грубо/тонко/средне) и скорость поворота. пусть даже для всех машинок сразу.
+ Надо учесть, что раз функция пользуется таймером, в этот кусок программы надо впихнуть настройку таймера и функцию прерывания.
Ну и естественно нужно иметь возможность задавать через дефайны пины, к которым подключены машинки.

как-то так надо, как это осуществить - не поняла еще, пока читаю информацию в интернете, но ее много и написана громоздко
Сергей Борщ
Цитата(Валероша @ Apr 9 2014, 17:01) *
Для этого она может использовать один таймер.
....
Ну и естественно нужно иметь возможность задавать через дефайны пины, к которым подключены машинки.
Эти два требования несколько противоречивы. Либо вы используете по одному модулю сравнения (Output Compare) таймера на каждую сервомашинку и подключаете все сервомашинки к ногам, к которым этои модули прибиты гвоздями (вам потребуется минимум два таймера, ибо таймер 0 и 2 имеют по одному такому модулю), либо вы задаете любую ногу и управляете машинкой методом програмного ногодрыга, но при этом отказыватесь от точности позиционирования - сформированный программно сигнал обязательно будет дрожать и вслед за ним будут дрожать и сервомашинки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.