Наверное многие из тех, кто открыл для себя мир электроники, рано или поздно задумываются о том чтоб создать некого своего робота, либо просто бытовую автоматику или радиоуправляемые модели. Но если с механикой было все более-менее понятно – то разработка программы для управления таким устройством, в котором слажено должны работать большое количество сервоприводов, вызывала не мало сложностей. Программно–аппаратный комплекс ServoStudio 12 как раз позволит управлять таким устройством, управлять одновременно 12 сервоприводами, создавать последовательности движений при помощи визуального редактора. Также данный комплекс станет удобным инструментом при отладке механики устройства и создания своей программы.
При необходимости, созданную последовательность движений можно экспортировать как скетч Arduino IDE, для автономной работы, без ПК. Либо просто как массив значений ключевых точек для дальнейшего использования в своей программе. ServoStudio 12 обладает интуитивно понятным интерфейсом и разобраться в ней может даже новичок. А использование платы Arduino в качестве исполнительного устройства управления – сделало данную систему легко доступной в повторении и изготовлении.
Немного предыстории. Вдохновившись идеей создания удобного тестера сервоприводов от Сергея Грищенко, я решил создать свою систему, которая была б проста в использовании и одновременно удобна и функциональна. В отличии от вышеуказанного тестера сервоприводов, за все управление отвечает программное обеспечение ServoStudio 12, на персональном компьютере, и плата Arduino поддерживает работу до 12 сервоприводов одновременно. Аппаратная часть же являет собой широко распространённую плату Arduino Nano либо Arduino Uno. Так же данное ПО додерживает работу с вышеуказанным тестером сервоприводов.
Изначально планировал создать небольшую программу, в которой бы по очереди воспроизводилась последовательность значений управляющего сигнала сервоприводов, но по ходу разработки у меня появлялись новые идеи, и простая программа переросла в полноценный блок управления механикой робота, с возможностью установки скорости перемещений и воспроизведением движений при помощи горячих клавиш.
Сервопривод – в отличии от коллекторного мотора, позволяет делать поворот на определенный угол. Угол поворота задается шириной импульсов управляющего сигнала. Ширина этих импульсов может меняться в пределах 800 – 2300 мкс.
Для начала работы нам потребуется следующее:
- Плата Arduino Nano/Uno.
- Arduino IDE, чтоб запрограммировать данную плату.
- И ПО ServoStudio 12.
Схема подключения очень проста. Выводы D2-D13 подключаются к управляющим входам сервоприводов. Питание подключается к выводам питания Arduino. При большом потреблении тока сервоприводами- необходимо подключить внешний источник питания.
Первым делом в меню программы ServoStudio 12 необходимо выбрать пункт «Генератор кода» и подпункт «Создать скетч ServoStudio HardWare», сохранить данный скетч на диск и открыть в Arduino IDE и залить в Arduino Nano/Uno. Все, аппаратная часть готова! Данное действие производится всего один раз, с новой платой Arduino.
Для начала работы необходимо создать новый проект (меню Файл / Новый). В диалоговом окне выбрать необходимое количество ШИМ каналов (количество сервоприводов), выбрать тип платы тестера и написать имя своего устройства (для удобства).
Теперь об интерфейсе программы
В нижней части расположены инструменты для создания последовательности ключевых точек. Перемещая ползунки регуляторов для соответствующих каналов задается значение ширины импульсов управляющего сигнала (угол поворота сервопривода) на соответствующем канале. Если установить флажок «управлять в реальном времени»- то при перемещении ползунка регулятора будет двигаться сервопривод, подключённый к данному каналу, что очень удобно, так как сразу наглядно видно положение привода в данной точке. После того как установили управляющий сигнал на всех необходимых каналах, нужно создать следующий «кадр» (следующую ключевую точку), при помощи кнопки «Добавить». И таким же образом, при помощи регуляторов, создать новую ключевую точку, и так сколько необходимо. Время, за которое сервоприводы должны повернуться на данный угол, выставляется для каждого кадра отдельно, в поле «время шага», время задается в миллисекундах. Чем больше данное значение– тем медленнее будет перемещение, чем меньше– тем быстрее. В поле «шаг» отображается текущий кадр последовательности. При необходимости, изменяя номер шага в данном поле, можно отредактировать предыдущие шаги. Для удобства, имена каналов можно менять, кликнув 2 раза на названии канала, слева от регулятора.
В Верхней части, на графике, визуально отображается изменение ширины управляющего сигнала сервоприводов.
И когда создано какое-то законченное движение (например, шаг вперед), можно сохранить текущую последовательность как отдельную законченную последовательность, нажав кнопку «добавить» на панели «Последовательности», в правой части окна программы. Можно на пример создать несколько последовательностей, для движения вперед, назад, влево, вправо, итд. И эти последовательности можно воспроизводить независимо друг от друга, по двойному щелчку мыши, или из контекстного меню, а также из окна «пульт управления» (но об этом позже). Таким образом, воспроизводя эти последовательности, осуществляется управление устройством (роботом). Так же можно добавлять сохраненные последовательности в основную последовательность, создавая одну большую последовательность действий. Это может быть очень полезно для демонстрации работы устройства.
Так же основную последовательность (которая в данный момент открыта в редакторе), можно экспортировать как скетч для Arduino IDE, для автономного воспроизведения платой Arduino, без участия ПК. Для этого в меню «Генератор кода» необходимо выбрать пункт «Экспорт последовательности» и в диалоговом окне нажать кнопку «Генерировать», после чего данный скетч можно скопировать в буфер обмена, либо сохранить как скетч для Arduino IDE. Дальше этот скетч можно залить обычным образом в контроллер платы Arduino.
Есть возможность воспроизводить данную последовательность циклично либо только один раз, установкой или снятием флажка «повторять циклично». Так же есть возможность экспорта в массив ключевых точек, это может быть полезно, если у вас уже есть своя программа для микроконтроллера и Вам необходимо в ней задать движения, при чем опционально можно добавлять в массив значения времени установки позиции, при помощи установки соответствующего флажка. Если, после прошивки данным скетчем, плату Arduino нужно опять использовать с программой ServoStudio 12 то необходимо опять в меню выбрать пункт «Генератор кода» и подпункт «Создать скетч ServoStudio HardWare», сохранить данный скетч на диск и открыть в Arduino IDE и залить в Arduino Nano/Uno.
Окно «пульт управления»
Позволяет использовать горячие клавиши для воспроизведения отдельных последовательностей. Для начала нужно нажать кнопку «Назначить клавиши», выбрать из выпадающего списка необходимую последовательность и назначить ей горячую клавишу. Когда все установлено- необходимо нажать кнопку «Запомнить». Теперь, пока открыто это окно, при нажатии на горячую клавишу будет воспроизводится назначенная ей последовательность.
Не маловажным есть пункт меню «Исходная позиция» — это положение сервоприводов при включении, либо просто «нормальное положение» для угла поворота сервоприводов. Другими словами, если не хотите, чтоб вашего робота перекосило при включении нужно регуляторами выбрать для него оптимальное положение и выбрать пункт меню «Записать текущий кадр в EEPROM Arduino как исходную позицию», данная функция доступна только для плат Arduino. Так же есть пункты «Записать текущий кадр как исходную позицию» и «Вставить исходную позицию в текущий кадр», это будет очень полезно, если нужно начать новую последовательность и исходной точки. Исходная позиция сохраняется в файле проекта и доступна при открытии файла, так что её не нужно будет заново подбирать.
В программе есть так же возможность ассоциировать файлы проекта с ServoStudio 12. Для этого ее нужно 1 раз запустить с правами администратора. ServoStudio 12 – полностью Portable, состоит из 1 файла (при закрытии программы еще создается файл последнего открытого проекта) и не требует установки.
Более подробно о работе можно посмотреть в видео.
Ссылка на скачивание ПО ServoStudio 12
Немного о планах на будущее:
- Хочу создать приложение для Android, которое могла б открывать файл проекта и можно б было использовать телефон для управления роботом. Управление осуществлять по BlueTooth или WiFi через TCP-UART переходник.
- Так же хочу создать версию на большее количество каналов, для управления более сложными устройствами.
- Добавить обработку сигналов с подключённых датчиков (на пример если впереди препятствие- обойти его).
- Добавить возможность управления цифровыми выходами (на пример для включения светодиодов или чего-то другого)
Но останутся ли эти планы только планами либо выйдут в следующем релизе программы – на прямую зависит от интереса к данному комплексу.
Комментарии (23)
lingvo
28.03.2017 11:31+1Добавить обработку сигналов с подключённых датчиков (на пример если впереди препятствие- обойти его).
Добавить возможность управления цифровыми выходами (на пример для включения светодиодов или чего-то другого)
Не знаю. Если это хобби, то делайте. Если это что-то для работы, то есть уже достаточно много программных пакетов, которые позволяют разрабатывать сложные программы управления автоматикой и роботами, тоже не написав ни одной строчки кода. Ну и естественно они работают как с Ардуино так и с другими контроллерами — как по навороченней, так и попроще.PashaZV
28.03.2017 11:46Программа не коммерческая, разрабатывалась для себя и друзей, вот решил поделится. Это пока что только планы. Большим приоритетом стоит разработка ПО, для управления с мобильного телефона.
mickvav
28.03.2017 12:33Запилите сплайны в управляющие траектории вместо кусочно-линейных интерполяций — получите гладкие траектории и уменьшите износ железок.
DrPass
28.03.2017 12:01+1Но если с механикой было все более-менее понятно – то разработка программы для управления таким устройством, в котором слажено должны работать большое количество сервоприводов, вызывала не мало сложностей
Как только в алгоритме появятся различные условные ветвления, «если сработал такой-то датчик, то сделать поворот на Х градусов, повторить N раз», немало сложностей уже будет вызывать наоборот, борьба с визуальным редактором.PashaZV
28.03.2017 12:48В данном случае, если необходимо обрабатывать сигналы с датчиков, то нужно уже писать свой код и данная система может послужить иструментом для отладки движений.
maxstar
28.03.2017 14:09Очень нужный и полезный софт, но вот вопрос — в статье сказано что Arduino Uno и Arduino Nano позволяют одновременно управлять 12 серовприводами, что круто. Однако в документации на сайте ардуино сказано, что Uno и Nano имеют всего шесть PWM выводов. Как удается сделать работу с PWM у тех выводов, которые ее не поддерживают?
PashaZV
28.03.2017 14:14Здесь используется программный ШИМ, при помощи таймеров, для этого нужен просто цифровой выход. Стандартная библиотека ардуино поддерживает до 12 выходов управляющего ШИМ сигнала на платах Nano/Uno.
vyacheslavteplyakov
28.03.2017 15:39+1Безотносительно вашего проекта, просто сразу вспомнилось это видео как прочитал заголовок.
crezd
можна можна