реклама на сайте
подробности

 
 
> независимое управление 3 сервомашинками, помогите девушке
Валероша
сообщение Apr 8 2014, 03:38
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 8-04-14
Пользователь №: 81 276



здравствуйте, помогите девушке, которая не особо разбирается в программировании wacko.gif sad.gif sad.gif
надо запрограммировать в AVR сервомашинки.
у нас есть 3сервопривода. на микроконтроллере АТМега необходима создать независимое управление ими. У нас должна быть отдельная подпрограмма, в которую мы вводим координаты в которые должна прийти машинка, они пересчитываются на углы, серваки поворачиваются и выдают из подпрограммы обратно координаты на которые повернулись
Как это осуществить - не представляю...sad.gif

Сообщение отредактировал Валероша - Apr 8 2014, 03:39
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Alex11
сообщение Apr 8 2014, 03:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Так в чем проблема? Как пересчитать координаты в углы? Или как передать их в сервомашинки и получить обратно результат? В первом случае нужно знать коэффициент между углом и координатой, который определяется Вашей механикой и должен быть Вам известен. Во втором - рассказывайте как подключены машинки, какого типа они и еще кучу информации. Не стесняйтесь писать много. А то у нас, как всегда, телепаты все в отпуске.
Go to the top of the page
 
+Quote Post
garlands
сообщение Apr 8 2014, 03:58
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 364
Регистрация: 15-04-08
Из: UA
Пользователь №: 36 798



Вот. Да и вообще весь раздел к изучению раз
Цитата
Как это осуществить - не представляю...
Go to the top of the page
 
+Quote Post
Валероша
сообщение Apr 9 2014, 15:01
Сообщение #4





Группа: Новичок
Сообщений: 2
Регистрация: 8-04-14
Пользователь №: 81 276



Цитата(Alex11 @ Apr 8 2014, 07:56) *
Так в чем проблема? Как пересчитать координаты в углы? Или как передать их в сервомашинки и получить обратно результат? В первом случае нужно знать коэффициент между углом и координатой, который определяется Вашей механикой и должен быть Вам известен. Во втором - рассказывайте как подключены машинки, какого типа они и еще кучу информации. Не стесняйтесь писать много. А то у нас, как всегда, телепаты все в отпуске.

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

как-то так надо, как это осуществить - не поняла еще, пока читаю информацию в интернете, но ее много и написана громоздко
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 10 2014, 03:14
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 01:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016