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 запрещен)

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

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

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества

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

Теги

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

Сообщества