31

Прошивка для платы управления двигателем RMD-X8 Pro

В рамках создания комплекса экзокисти под управлением нейрокомпьютерного интерфейса написал прошивку для Arduino Mega, которая через CAN-контроллер управляет серводвигателем RMD-X8 Pro, приводящим в движение механизм экзокисти. Модель экзокисти создавали наши студенты, прошивка представляла собой скетч, вырезанный из другого проекта, двигатель мог управляться только с помощью джойстика. Причем джойстик при движении вперед раскручивал двигатель вперед, а при отклонении джойстика в обратную сторону постепенно останавливал его и начинал неконтролируемые движение в обратном направлении. При остановке джойстика движение также не прекращалось. Контроля углов вращения не было.

Прошивка для платы управления двигателем RMD-X8 Pro

Особенность этого двигателя в том, что при вращении вала двигателя на 360 градусов редуктор примерно в четыре раза уменьшает угол поворота, а энкодер двигателя контролирует вращение только на 360 градусов по валу двигателя, что фактически является только четвертью полного оборота. При прохождении отметки в 360 градусов энкодер сбрасывался в ноль и считал данные заново.


Для двигателя есть настроечная программа, которая работает по протоколу serial-232, имеются варианты интерфейса двигателей с RS485 у которого больше возможностей, чем у CAN, который через один датафрейм может передать максимум 8 байт. В тестовой вкладке программы настройки примеры интерфейса управлением двигателя работают не так, как хотелось бы, но зато оказалось, что там есть команды, не описанные в документации. При использовании тестовых режимов программа указывает, какие данные она пересылает в датафрейме, и стало видно, что кроме команд позиционирования А1-А6 также используются команды А7 и А8, и последняя команда как раз подошла для нашей задачи.

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

Энкодер двигателя очень чувствительный – он позволяет позиционировать двигатель с точностью до сотых долей градуса. При команде на остановку двигатель по инерции проходит еще несколько сотых градуса, и без усреднения данных положения энкодер постоянно пытался бы вернуть двигатель точно в заданное положение, опять бы проскакивал его по инерции и т.д., что вызывало бы постоянное дерганье. Усреднил показания позиции, разделил их на 100 и отбросил дробную часть, чтобы сравнивались только целые градусы углов, поскольку точность в 1 градус вполне достаточна, а лишних дерганий удается избежать.


Добавил в прошивку подстраховку, что в случае неисполнения двигателем команды на остановку она будет посылаться снова и снова, пока двигатель не остановится. Кроме того, есть команда на аварийное отключение двигателя, если что-то идет не так.

Также добавил в прошивку работу с внешними интерфейсами через последовательный порт в формате JSON, через которые прошивка будет получать команды от внешней управляющей программы. На Java написана ретранслирующая программа, которая принимает пакеты по протоколу UDP, пересылает их в Ардуино по serial, с последовательного же порта получает ответ от платы и пересылает его обратно в управляющую программу высокого уровня по UDP. Это необходимо для обратной совместимости со сторонним программным обеспечением.

Arduino & Pi

1.5K постов20.9K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

0
Автор поста оценил этот комментарий

Отлично! Тогда на  вашу fablab@cfuv.ru завтра напишу)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Ок
0
Автор поста оценил этот комментарий

@FabLabCFU можно у вас спросить по этому сервоприводу?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Спрашивайте, конечно )
показать ответы
0
Автор поста оценил этот комментарий

Просто проектов куча в открытом доступе, я лишь это пытался донести)  конечно готового для себя ты не найдешь, но поискать и повыдергивать инфу по кусочкам можно )

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Вот наши студенты и повыдёргивали, поэтому всё пришлось переделывать.
показать ответы
0
Автор поста оценил этот комментарий

И это на секунду 2015 год

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это на секунду, совсем другие двигатели, и совсем другое управление (can интерфейс). Если сравнить цену 9хх движка и нашего, то это около 1000 и 35000 р., также питание 5в и 48 вольт, разница, наверное, что-то говорит - о крутящем моменте и т.д., внутри X8 pro 32 arm контроллер, точность позиционирования 0,01 градус, сравнивать их - это сравнивать теплое и мягкое. Так что подобное тут только одно - приставка серво к двигателю, ни о каких кодах с выше указанного проекта и их заимствовании и речи не может быть

показать ответы
0
Автор поста оценил этот комментарий

В сети столько проектов с подробным описанием и кодом, взять тот же банальный манипулятор и на его основе под свои нужды подкрутить. Если поверх ещё интерфейс будет, то задержки будут противные.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Поделитесь ссылкой на банальный манипулятор?
показать ответы
0
Автор поста оценил этот комментарий

Можно взять велосипед который нормально ездит на стороне, а потом уже под свои нужды подгонять, я честно половину не понял зачем)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Если бы было где взять, зачем бы я сам писал?

показать ответы
0
Автор поста оценил этот комментарий

Ну ты товарищ намудрил по жести.. это всё в конечном итоге превратится в велосипед с квадратными колесами, обрастёт костылями, говном и палками)))

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Ну, без костылей не обошлось, конечно, но сроки поджимали. Будет время, доработаю.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества