Вконтакте Facebook Twitter Лента RSS

Настольная робо-рука манипулятор из оргстекла на сервоприводах своими руками. «Ручное» управление OWI-манипулятором Сначала была паранойя

Всем привет!
Пару лет назад на kickstarter появился очень занятный проект от uFactory - настольная робо-рука uArm . Они обещали со временем сделать проект открытым, но я не мог ждать и занялся реверс-инжинирингом по фотографиям.
За эти годы я сделал четыре версии своего виденья этого манипулятора и в итоге разработал вот такую конструкцию:
Это робо-рука с интегрированным контроллером, приводимая в движение пятью сервпоприводами. Основное ее достоинство в том, что все детали либо можно купить, либо дешево и быстро вырязать из оргстекла лазером.
Так как в качестве источника вдохновения я брал open sorce - проект, то всеми своими результатми делюсь полностью. Вы сможете скачать все исходники по ссылкам в конце статьи и, при желании, собрать такую же (все ссылки в конце статьи).

Но проще один раз показать ее в работе, чем долго рассказывать что она из себя представляет:

Итак, перейдем к описанию.
Технические характеристики

  1. Высота: 300мм.
  2. Рабочая зона (при полностью вытянутом манипуляторе): от 140мм до 300мм вокруг основания
  3. Максимальная грузоподъемность на вытянутой руке, не менее: 200г
  4. Потребляемый ток, не более: 6А
Также мне хочется отметить некоторые особенности конструкции:
  1. Подшипники во всех подвижных частях манипулятора. Всего их одинадцать: 10 штук на вал 3мм и один на вал 30мм.
  2. Простота сборки. Я очень много внимания уделил тому, чтобы была такая последовательность сборки манипулятора при которой все детали прикручивать предельно удобно. Особенно сложно было сделать это для узлов мощных сервоприводов в основании.
  3. Все мощные сервоприводы расположены в основании. То есть "нижние" сервоприводы не таскают "верхние".
  4. За счет параллельных шарниров инструмент всегда остается параллелен или перпендикулярен земле.
  5. Положение манипулятора можно менять на 90 градусов.
  6. Готовое Arduino-совместимое программное обеспечение. Правильно собранная рука может управляться мышкой, а по примерам кода можно составить свои алгоритмы движения
Описание конструкции
Все детали манипулятора режутся из оргстекла толщиной 3 и 5мм:

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

Манипулятор с установленым плечом и локтем показан на фотографии ниже. К нему еще только предстоит добавить клешню и тяги для нее:

Клешня тоже устанавливается на подшипниках. Она может сжиматься и поворачиваться вокруг своей оси:
Клешню можно установить как вертикально, так и горизонтально:

Управляется все Arduino-совместимой платой и шилдом для нее:

Сборка
Чтобы собрать манипулятор потребуется около двух часов и куча крепежа. Сам процесс сборки я офмил в виде инструкции в фотографиях (осторожно, траффик!) с подробными комментариями по каждой операции. Также я сделал подробную 3D-модель в простой и бесплатной программе SketchUp. Так что всегда можно повертеть ее перед глазами и посмотреть непонятные места:


Электроника и программирование
Я сделал целый шилд, на котором установил, помимо разъемов сервоприводов и питания, переменные резисторы. Для удобства отладки. На самом деле достаточно при помощи макетки подвести сигналы к двигателям. Но у меня в итоге получился вот такой шилд, который (так уж сложилось) я заказал на заводе:

Вообще я сделал три разные программы под Arduino. Одна для управления с компьютера, одна для работы в демо-режиме и одна для управления кнопками и переменными резисторами. Самая интересная из них, конечно, первая. Я не буду приводить здесь код целиком - он доступен в онлайн .
Для управления необходимо скачать программу для компьютера. После ее запуска мышь переходит в режим управления рукой. Движение отвечает за перемещение по XY, колесико изменяет высоту, ЛКМ/ПКМ - захват, ПКМ+колесико - поворот манипулятора. И это на самом деле удобно. Это было на видео в начале статьи.
Исходники проекта

Данный проект представляет собой многоуровневую модульную задачу. Первый этап проекта – сборка модуля роботизованной руки-манипулятора, поставляемой в виде набора деталей. Вторым этапом задачи будет сборка интерфейса IBM PC также из набора деталей. Наконец, третий этап задачи представляет собой создание модуля голосового управления.

Манипулятором робота можно управлять вручную с помощью ручного пульта управления, входящего в комплект набора. Рукой робота можно также управлять либо через собранный из набора интерфейс IBM PC, либо используя модуль голосового управления. Набор интерфейса IBM PC позволяет управлять и программировать действия робота через рабочий компьютер IBM PC. Устройство голосового управления позволит вам управлять рукой робота с помощью голосовых команд.

Все эти модули вместе образуют функциональное устройство, которое позволит вам проводить эксперименты и программировать автоматизированные последовательности действий или даже «оживлять» управляемую полностью «по проводам» руку-манипулятор.

Интерфейс PC позволит вам с помощью персонального компьютера запрограммировать руку-манипулятор на цепь автоматизированных действий или «оживить» ее. Существует также опция, в которой вы можете управлять рукой в интерактивном режиме, используя либо ручной контроллер, либо программу под Windows 95/98. «Оживление» руки представляет собой «развлекательную» часть цепочки запрограммированных автоматизированных действий. Например, если вы наденете на руку-манипцулятор детскую перчаточную куклу и запрограммируете устройство на показ небольшого шоу, то вы запрограммируете «оживление» электронной куклы. Программирование автоматизированных действий находит широкое применение в промышленности и индустрии развлечений.

Наиболее широко применяемым в промышленности роботом является робот рука-манипулятор. Рука робота представляет собой исключительно гибкий инструмент хотя бы потому, что конечный сегмент манипулятор руки может быть соответствующим инструментом, требуемым для конкретной задачи или производства. Например, шарнирный сварочный манипулятор может быть использован для точечной сварки, с помощью сопла-распылителя можно окрашивать различные детали и узлы, а захват может использоваться для зажима и установки предметов – это лишь некоторые примеры.

Итак, как мы видим, рука-манипулятор робота выполняет много полезных функций и может служить идеальным инструментом для изучения различных процессов. Однако создание роботизованной руки-манипулятора с «нуля» представляет собой сложную задачу. Гораздо проще собрать руку из деталей готового набора. Компания OWI продает достаточно хорошие наборы руки-манипулятора, которые можно приобрести у многих дистрибьюторов электронных устройств (см. список деталей в конце этой главы). С помощью интерфейса можно подключить собранную руку-манипулятор к порту принтера рабочего компьютера. В качестве рабочего компьютера можно использовать машину серии IBM PC или совместимую, которая поддерживает DOS или Windows 95/98.

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

Программирование цепочки автоматизированных действий также не составляет особого труда. Сперва щелкните по клавише Program, чтобы перейти в программную моду. В этой моде рука функционирует точно так же, как это было описано выше, но при этом в дополнение каждая функция и время ее действия фиксируются в script-файле. Script-файл может содержать до 99 различных функций, включая паузы. Сам script-файл может быть повторно воспроизведен 99 раз. Запись различных script-файлов позволяет производить эксперименты с управляемой компьютером последовательностью автоматизированных действий и «оживлению» руки. Работа с программой под Windows 95/98 более детально описана ниже. Программа под Windows включена в набор интерфейса роботизованной руки-манипулятора или может быть бесплатно загружена из Интернета http://www.imagesco.com .

В дополнение к программе Windows рукой можно управлять, используя BASIC или QBASIC. Программа уровня DOS содержится на дискетах, включенных в комплект набора интерфейса. Однако DOS программа позволяет осуществлять управление только в интерактивном режиме с использованием клавиатуры (см. распечатку BASIC программы на одной из дискет). Программа уровня DOS не позволяет создавать script-файлы. Однако если есть опыт программирования на BASIC, то последовательность движений руки-манипулятора может быть запрограммирована аналогично работе script-файла, используемого в программе под Windows. Последовательность движений может повторяться, как это сделано во многих «одушевленных» роботах.

Роботизованная рука-манипулятор

Рука-манипулятор (см. рис. 15.1) имеет три степени свободы движения. Локтевое сочленение может перемещаться вертикально вверх-вниз по дуге примерно 135°. Плечевой «сустав» перемещает захват вперед и назад по дуге примерно 120°. Рука может поворачиваться на основании по часовой стрелке или против часовой стрелки на угол примерно 350°. Захват руки робота может брать и удерживать объекты до 5 см в диаметре и поворачиваться вокруг в кистевом сочленении примерно на 340°.

Рис. 15.1. Кинематическая схема движений и поворотов руки-робота


Для приведения руки в движение компания OWI Robotic Arm Trainer использовала пять миниатюрных двигателей постоянного тока. Двигатели обеспечивают управление рукой при помощи проводов. Такое «проводное» управление означает, что каждая функция движения робота (т. е. работа соответствующего двигателя) управляется отдельными проводами (подачей напряжения). Каждый из пяти двигателей постоянного тока управляет своим движением руки-манипулятора. Управление по проводам позволяет сделать блок контроллера руки, непосредственно реагирующий на электрические сигналы. Это упрощает схему интерфейса руки робота, который подключается к порту принтера.

Рука изготовлена из легкого пластика. Большинство деталей, несущих основную нагрузку, также выполнены из пластика. Двигатели постоянного тока, использованные в конструкции руки, представляют собой миниатюрные высокооборотные двигатели с низким крутящим моментом. Для увеличения крутящего момента каждый мотор соединен с редуктором. Двигатели вместе с редукторами установлены внутри конструкции руки-манипулятора. Хотя редуктор увеличивает крутящий момент, рука робота не может поднять или нести достаточно тяжелые предметы. Рекомендуемый максимально допустимый вес при поднятии составляет 130 г.

Набор для изготовления руки робота и его компоненты представлены на рисунках 15.2 и 15.3.


Рис. 15.2. Набор для изготовления руки-робота



Рис. 15.3. Редуктор перед сборкой

Принцип управления двигателями

Для того чтобы понять принцип работы управления по проводам, посмотрим, как цифровой сигнал управляет работой отдельного двигателя постоянного тока. Для управления двигателем требуются два комплементарных транзистора. Один транзистор имеет проводимость PNP типа, другой – соответственно проводимость NPN типа. Каждый транзистор работает как электронный ключ, управляя движением тока, протекающего через двигатель постоянного тока. Направления движения тока, управляемые каждым из транзисторов, противоположны. Направление тока определяет направление вращения двигателя соответственно по часовой стрелке или против часовой стрелки. На рис. 15.4 приведена тестовая схема, которую вы можете собрать перед изготовлением интерфейса. Обратите внимание, что когда оба транзистора заперты, то двигатель выключен. В каждый момент времени должен быть включен только один транзистор. Если в какой-то момент оба транзистора случайно окажутся открытыми, то это приведет к короткому замыканию. Каждый двигатель управляется двумя транзисторами интерфейса, работающими аналогичным образом.


Рис. 15.4. Схема устройства проверки

Конструкция интерфейса для PC

Схема PC интерфейса приведена на рис. 15.5. В набор деталей PC интерфейса входит печатная плата, расположение деталей на которой показано на рис. 15.6.


Рис. 15.5. Принципиальная схема интерфейса РС



Рис. 15.6. Схема расположения деталей РС интерфейса


Прежде всего нужно определить сторону монтажа печатной платы. На стороне монтажа прочерчены белые линии, обозначающие резисторы, транзисторы, диоды, ИС и разъем DB25. Все детали вставляются в плату с монтажной стороны.

Общее указание: после пайки детали к проводникам печатной платы необходимо удалить излишне длинные выводы со стороны печати. Очень удобно следовать определенной последовательности при монтаже деталей. Сперва смонтируйте резисторы 100 кОм (цветная маркировка колец: коричневое, черное, желтое, золотое или серебряное), которые обозначены R1-R10. Затем смонтируйте 5 диодов D1-D5, убедившись, что черная полоска на диодах находится напротив разъема DB25, как это показано белыми линиями, нанесенными на монтажную сторону печатной платы. Затем смонтируйте резисторы 15 кОм (цветная маркировка, коричневый, зеленый, оранжевый, золотой или серебряный), обозначенные R11 и R13. В позиции R12 припаяйте к плате красный светодиод. Анод светодиода соответствует отверстию под R12, обозначенному знаком +. Затем смонтируйте 14– и 20-контактные панельки под ИС U1 и U2. Смонтируйте и впаяйте разъем DB25 уголкового типа. Не пытайтесь вставлять ножки разъема в плату с излишним усилием, здесь требуется исключительно точность. При необходимости осторожно покачайте разъем, стараясь не погнуть ножки выводов. Закрепите движковый переключатель и регулятор напряжения типа 7805. Отрежьте четыре куска провода необходимой длины и припаяйте к верхней части переключателя. Придерживайтесь расположения проводов, как показано на рисунке. Вставьте и впаяйте транзисторы TIP 120 и TIP 125. Наконец, впаяйте восьмиконтактный цокольный разъем и соединительный 75 миллиметровый кабель. Цоколь монтируется так, что наиболее длинные выводы смотрят вверх. Вставьте две ИС – 74LS373 и 74LS164 – в соответствующие панельки. Убедитесь, что положение ключа ИС на ее крышке совпадает с ключом, помеченным белыми линиями на печатной плате. Вы могли заметить, что на плате остались места под дополнительные детали. Это место предназначено для сетевого адаптера. На рис. 15.7 показана фотография готового интерфейса со стороны монтажа.


Рис. 15.7. РС интерфейс в сборе. Вид сверху

Принцип работы интерфейса

Рука-манипулятор имеет пять двигателей постоянного тока. Соответственно нам потребуются 10 шин входа/выхода для управления каждым двигателем, включая направление вращения. Параллельный (принтерный) порт IBM PC и совместимых машин содержит только восемь шин ввода/вывода. Для увеличения числа шин управления в интерфейсе руки робота используется ИС 74LS164, которая является преобразователем последовательного кода в параллельный (SIPO). При использовании всего двух шин параллельного порта D0 и D1, по которым посылается последовательный код в ИС, мы можем получить восемь дополнительных шин ввода/вывода. Как уже говорилось, можно создать восемь шин ввода/вывода, но в данном интерфейсе используются пять из них.

Когда последовательный код поступает на вход ИС 74LS164, на выходе ИС появляется соответствующий параллельный код. Если бы выходы ИС 74LS164 были непосредственно подключены к входам управляющих транзисторов, то отдельные функции руки-манипулятора включались и выключались бы в такт посылке последовательного кода. Очевидно, что такая ситуация является недопустимой. Чтобы избежать этого, в схему интерфейса введена вторая ИС 74LS373 – управляемый восьмиканальный электронный ключ.

ИС 74LS373 восьмиканальный ключ имеет восемь входных и восемь выходных шин. Двоичная информация, присутствующая на входных шинах передается на соответствующие выходы ИС только в том случае, если на ИС подан разрешающий сигнал. После выключения разрешающего сигнала текущее состояние выходных шин сохраняется (запоминается). В этом состоянии сигналы на входе ИС не оказывают никакого действия на состояние выходных шин.

После передачи последовательного пакета информации в ИС 74LS164 с вывода D2 параллельного порта подается разрешающий сигнал на ИС 74LS373. Это позволяет передать информацию уже в параллельном коде с входа ИС 74LS174 на ее выходные шины. Состоянием выходных шин управляются соответственно транзисторы TIP 120, которые, в свою очередь, управляют функциями руки-манипулятора. Процесс повторяется при подаче каждой новой команды на руку-манипулятор. Шины параллельного порта D3-D7 управляют непосредственно транзисторами TIP 125.

Подключение интерфейса к руке-манипулятору

Питание роботизованной руки-манипулятора осуществляется от источника питания 6 В, состоящего из четырех D-элементов, расположенных в основании конструкции. Интерфейс PC питается также от этого источника 6 В. Источник питания является биполярным и выдает напряжения ±3 В. Питание на интерфейс подается через восьмиконтактный разъем Molex, присоединенный к основанию манипулятора.

Присоедините интерфейс к руке-манипулятору при помощи восьмижильного кабеля Molex длиной 75 мм. Кабель Molex присоединяется к разъему, расположенному в основании манипулятора (см. рис. 15.8). Проверьте правильность и надежность вставки разъема. Для соединения платы интерфейса с компьютером используется кабель типа DB25 длиной 180 см, имеющийся в наборе. Один конец кабеля присоединяется к порту принтера. Другой конец соединяется с разъемом DB25 на плате интерфейса.


Рис. 15.8. Соединение РС интерфейса с рукой-роботом


В большинстве случаев к порту принтера штатно подключен принтер. Чтобы не заниматься присоединением и отключением разъемов каждый раз, когда вы хотите использовать манипулятор, полезно приобрести двухпозиционный блок переключателя шин принтеров A/B (DB25). Присоедините разъем интерфейса манипулятора к входу А, а принтер – к входу В. Теперь вы можете использовать переключатель для соединения компьютера либо с принтером, либо с интерфейсом.

Установка программы под Windows 95

Вставьте дискету 3,5" с меткой «Disc 1» в дисковод для флоппи-дисков и запустите программу установки (setup.exe). Программа установки создаст директорию с именем «Images» на жестком диске и скопирует необходимые файлы в эту директорию. В Start меню появится иконка Images. Для запуска программы щелкните по иконке Images в стартовом меню.

Работа с программой под Windows 95

Соедините интерфейс с портом принтера компьютера при помощи кабеля DB 25 длиной 180 см. Соедините интерфейс с основанием руки-манипулятора. До определенного времени держите интерфейс в выключенном состоянии. Если в это время включить интерфейс, то сохранившаяся в порту принтера информация может вызвать движения руки-манипулятора.

Щелкнув два раза по иконке Images в стартовом меню, запустите программу. Окно программы показано на рис. 15.9. При работе программы красный светодиод на плате интерфейса должен мигать. Примечание: чтобы светодиод начал мигать, включение питания интерфейса не требуется. Скорость мигания светодиода определяется скоростью работы процессора вашего компьютера. Мерцание светодиода может оказаться очень тусклым; для того чтобы это заметить, вам, возможно, придется уменьшить освещенность в комнате и сложить ладони «колечком» для наблюдения за светодиодом. Если светодиод не мигает, то, возможно, программа обращается по ошибочному адресу порта (порт LPT). Для переключения интерфейса на другой адрес порта (LPT порт), зайдите в окно меню установки адреса порта принтера (Printer Port Options box), расположенного в правом верхнем углу экрана. Выберите другую опцию. Правильная установка адреса порта вызовет мигание светодиода.


Рис. 15.9. Скриншот программы РС интерфейса под Windows


Когда светодиод будет мигать, щелкните по иконке Puuse и только после этого включите интерфейс. Щелчок соответствующей функциональной клавиши вызовет ответное движение руки-манипулятора. Повторный Щелчок приведет к остановке движения. Использование функциональных клавиш для управления рукой называется интерактивной модой управления.

Создание script-файла

Для программирования движений и автоматизированных последовательностей действий руки-манипулятора используются script-файлы. Script-файл содержит список временных команд, управляющих движениями руки-манипулятора. Создать script-файл очень просто. Для создания файла кликните по функциональной клавише program. Эта операция позволит войти в моду «программирования» script-файла. Нажимая на функциональные клавиши, мы будем управлять движениями руки, как мы уже делали, но при этом информация команд будет записываться в желтую script-таблицу, расположенную в нижнем левом углу экрана. Номер шага, начиная с единицы, будет указан в левой колонке, а для каждой новой команды он будет увеличиваться на единицу. Тип движения (функции) указан в средней колонке. После повторного щелчка функциональной клавиши выполнение движения прекращается, а в третьей колонке появляется значение времени выполнения движения от его начала до окончания. Время выполнения движения указывается с точностью до четверти секунды. Продолжая таким же образом, пользователь может запрограммировать в script-файл до 99 движений, включая паузы во времени. Затем script-файл можно сохранить, а в дальнейшем загрузить из любой директории. Выполнение команд script-файла можно циклически повторить до 99 раз, для чего необходимо ввести количество повторов в окно Repeat и нажать Start. Для окончания записи в script-файл нажмите клавишу Interactive. Эта команда переведет компьютер обратно в интерактивный режим.

«Оживление» предметов

Script-файлы могут быть использованы для компьютерной автоматизации действий или для «оживления» предметов. В случае «оживления» предметов управляемый роботизованный механический «скелет» обычно покрыт внешней оболочкой и сам не виден. Помните куклу-перчатку, описанную в начале главы? Внешняя оболочка может иметь вид человека (частично или полностью), пришельца, животного, растения, камня и чего-либо еще.

Ограничения области применения

Если вы хотите достичь профессионального уровня выполнения автоматизированных действий или «оживления» предметов, то, так сказать, для поддержания марки, точность позиционирования при выполнении движений в каждый момент времени должна приближаться к 100 %.

Однако вы можете заметить, что по мере повторения последовательности действий, записанных в script-файле, положение руки-манипулятора (паттерн-движения) будет отличаться от первоначального. Это происходит по нескольким причинам. По мере разряда батарей источника питания руки-манипулятора уменьшение мощности, подводимой к двигателям постоянного тока, приводит к снижению крутящего момента и скорости вращения двигателей. Таким образом, длина перемещения манипулятора и высота поднятого груза за один и тот же промежуток времени будет различаться для севших и «свежих» батарей. Но причина не только в этом. Даже при стабилизированном источнике питания частота вращения вала двигателя будет меняться, поскольку отсутствует регулятор частоты вращения двигателя. Для каждого фиксированного отрезка времени количество оборотов каждый раз будет немного отличаться. Это приведет к тому, что каждый раз будет различаться и положение руки-манипулятора. В довершение ко всему, в шестернях редуктора имеется определенный люфт, который также не принимается во внимание. Под влиянием всех этих факторов, которые мы здесь подробно рассмотрели, при выполнении цикла повторяющихся команд script-файла положение руки-манипулятора будет каждый раз немного различаться.

Поиск исходного положения

Можно усовершенствовать работу устройства, добавив в него схему обратной связи, которая отслеживает положение руки-манипулятора. Эта информация может быть введена в компьютер, что позволит определить абсолютное положение манипулятора. С такой системой позиционной обратной связи возможна установка положения руки-манипулятора в одну и ту же точку в начале выполнения каждой последовательности команд, записанных в script-файле.

Для этого существует много возможностей. В одном из основных методов позиционный контроль в каждой точке не предусмотрен. Вместо этого используется набор концевых выключателей, которые соответствуют исходной «стартовой» позиции. Концевые выключатели определяют точно только одну позицию – когда манипулятор доходит до положения «старт». Чтобы это сделать, необходимо установить последовательность концевых выключателей (кнопок) таким образом, чтобы они замыкались, когда манипулятор достигает крайнего положения в том или ином направлении. Например, один конечный выключатель можно установить на основании манипулятора. Выключатель должен срабатывать только тогда, когда рука-манипулятор достигнет крайнего положения при вращении по часовой стрелке. Другие конечные выключатели нужно установить на плечевом и локтевом сочленении. Они должны срабатывать при полном разгибании соответствующего сочленения. Еще один выключатель устанавливается на кисти и срабатывает, когда кисть поворачивается до упора по часовой стрелке. Последний концевой выключатель устанавливается на захвате и замыкается при его полном открывании. Чтобы поставить манипулятор в исходное положение, каждое возможное движение манипулятора осуществляется в сторону, необходимую для замыкания соответствующего концевого выключателя до тех пор, пока этот выключатель не замкнется. После того как достигнуто начальное положение для каждого движения, компьютер будет точно «знать» истинное положение руки-манипулятора.

После достижения исходного положения мы можем заново запустить программу, записанную в script-файле, исходя из предположения, что ошибка позиционирования во время выполнения каждого цикла будет накапливаться достаточно медленно, что не будет приводить к слишком большим отклонениям положения манипулятора от желаемого. После выполнения script-файла рука выставляется в исходное положение, и цикл работы script-файла повторяется.

В некоторых последовательностях знание только исходного положения оказывается недостаточным, например при поднятии яйца без риска раздавить его скорлупу. В подобных случаях необходима более сложная и точная система позиционной обратной связи. Сигналы с датчиков могут быть обработаны с помощью АЦП. Полученные сигналы могут быть использованы для определения значений таких параметров, как положение, давление, скорость и вращающий момент. В качестве иллюстрации можно привести следующий простой пример. Представьте, что вы прикрепили небольшой линейный переменный резистор к узлу захвата. Переменный резистор установлен таким образом, что перемещение его движка вперед и назад связано с открытием и закрытием захвата. Таким образом, в зависимости от степени открывания захвата меняется сопротивление переменного резистора. После проведения калибровки, с помощью измерения текущего сопротивления переменного резистора можно точно установить угол раскрытия зажимов захвата.

Создание подобной системы обратной связи вводит еще один уровень сложности в устройство и, соответственно, приводит к его удорожанию. Поэтому более простым вариантом является введение системы ручного управления для корректировки положения и движений руки-манипулятора в процессе выполнения script-программы.

Система ручного управления интерфейсом

После того как вы убедитесь, что интерфейс работает правильным образом, вы можете с помощью 8-контактного плоского разъема подключить к нему блок ручного управления. Проверьте положение подключения 8-контактного разъема Molex к головке разъема на плате интерфейса, как показано на рис. 15.10. Аккуратно вставьте разъем до его надежного соединения. После этого рукой-манипулятором можно управлять с ручного пульта в любой момент времени. Не имеет значения, соединен ли интерфейс с компьютером или нет.


Рис. 15.10. Подключение ручного управления

Программа DOS управления с клавиатуры

Имеется DOS программа, позволяющая управлять работой руки-манипулятора с клавиатуры компьютера в интерактивном режиме. Список клавиш, соответствующих выполнению той или иной функции, приведен в таблице.

B голосовом управлении рукой-манипулятором используется набор распознавания речи (УРР), который был описан в гл. 7. В этой главе мы изготовим интерфейс, связывающий УРР с рукой-манипулятором. Этот интерфейс также предлагается в виде набора компанией Images SI, Inc.

Схема интерфейса для УРР показана на рис. 15.11. В интерфейсе использован микроконтроллер 16F84. Программа для микроконтроллера выглядит следующим образом:


‘Программа интерфейса УРР

Symbol PortA = 5

Symbol TRISA = 133

Symbol PortB = 6

Symbol TRISB = 134

If bit4 = 0 then trigger ‘Если запись в триггер разрешена, читать схе

Goto start ‘Повторение

pause 500 ‘Ожидание 0,5 с

Peek PortB, B0 ‘Чтение кода BCD

If bit5 = 1 then send ‘Выходной код

goto start ‘Повторение

peek PortA, b0 ‘Чтение порта А

if bit4 = 1 then eleven ‘Число есть 11?

poke PortB, b0 ‘Выходной код

goto start ‘Повторение

if bit0 = 0 then ten

goto start ‘Повторение

goto start ‘Повторение



Рис. 15.11. Схема контроллера УРР для руки-робота


Обновление программы под 16F84 можно бесплатно загрузить из http://www.imagesco.com

Программирование интерфейса УРР

Программирование интерфейса УРР аналогично процедуре программирования УРР из набора, описанного в гл. 7. Для правильной работы руки-манипулятора вы должны запрограммировать командные слова соответственно номерам, соответствующим определенному движению манипулятора. В табл. 15.1 приведены примеры командных слов, управляющих работой руки-манипулятора. Вы можете выбрать командные слова по вашему вкусу.

Таблица 15.1

Список деталей для интерфейса PC

(5) Транзистор NPN TIP120

(5) Транзистор PNP TIP 125

(1) ИС 74164 преобразователь кода

(1) ИС 74LS373 восемь ключей

(1) Светодиод красный

(5) Диод 1N914

(1) Гнездо разъема Molex на 8 контактов

(1) Кабель Molex 8-жильный длиной 75 мм

(1) Двухпозиционный переключатель

(1) Разъем уголковый типа DB25

(1) Кабель DB 25 1,8 м с двумя разъемами М – типа.

(1) Печатная плата

(3) Резистор 15 кОм, 0,25 Вт


Все перечисленные детали входят в комплект набора.

Список деталей для интерфейса распознавания речи

(5) Транзистор NPN TIP 120

(5) Транзистор PNP TIP 125

(1) ИС 4011 логический элемент ИЛИ-НЕ

(1) ИС 4049 – 6 буферов

(1) ИС 741 операционный усилитель

(1) Резистор 5,6 кОм, 0,25 Вт

(1) Резистор 15 кОм, 0,25 Вт

(1) Головная часть разъема Molex 8 контактов

(1) Кабель Molex 8 жил, длина 75 мм

(10) Резистор 100 кОм, 0,25 Вт

(1) Резистор 4,7 кОм, 0,25 Вт

(1) ИС регулятор напряжения 7805

(1) ИС PIC 16F84 микроконтроллер

(1) Кварцевый резонатор 4,0 МГц

Набор интерфейса руки-манипулятора

Набор для изготовления руки манипулятора компании OWI

Интерфейс распознавания речи для руки-манипулятора

Набор устройства распознавания речи


Детали можно заказать в:

Images, SI, Inc.

Создаем робот-манипулятор с использованием дальномера, реализуем подсветку.

Резать основание будем из акрила. В качестве двигателей используем сервопривода.

Общее описание проекта робота-манипулятора

В проекте использовано 6 серводвигателей. Для механической части использован акрил толщиной 2 миллиметра. В качестве штатива пригодилось основание от диско-шара (один из двигателей вмонтирован внутрь). Также использован ультразвуковой датчик расстояния и светодиод диаметром 10 мм.

Для управления роботом используется Arduino плата питания. Сам источник питания - блок питания компьютера.

В проекте изложены исчерпывающие пояснения по разработке робо-руки. Отдельно рассмотрены вопросы питания разработанной конструкции.

Основные узлы для проекта манипулятора

Давайте начнем разработку. Вам понадобятся:

  • 6 серводвигателей (я использовал 2 модели mg946, 2 mg995 , 2 futuba s3003 (mg995/mg946 по характеристикам лучше, чем futuba s3003, но последние намного дешевле);
  • акрил толщиной 2 миллиметра (и небольшой кусок толщиной 4 мм);
  • ультразвуковой датчик расстояния hc-sr04 ;
  • светодиды 10 мм (цвет - на ваше усмотрение);
  • штатив (используется в качестве основания);
  • схват аллюминиевый (стоит около 10-15 долларов).

Для управления:

  • Плата Arduino Uno (в проекте использована самодельная плата, которая полностью аналогична Arduino);
  • плата питания (вам придется ее сделать самим, к этому вопросу мы вернемся позже, он требует отдельного внимания);
  • блок питания (в данном случае используется блок питания компьютера);
  • компьютер для программирования вашего манипулятора (если вы используете для программирования Arduino, значит, среда Arduino IDE)

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

Сборка механической части

Перед началом разработки механической части манипулятора, стоит отметить, что чертежей у меня нет. Все узлы делались "на коленке". Но принцип очень простой. У вас есть два звена из акрила, между которыми надо установить серводвигатели. И другие два звенья. Тоже для установки двигателей. Ну и сам схват. Подобный схват проще всего купить в интеренете. Практически все устанавливается с помощью винтов.

Длина первой части около 19 см; второй - около 17.5; длина переднего звена около 5.5 см. Остальные габариты подбирайте в соответсвии с размерами вашего проекта. В принципе, размеры остальных узлов не так важны.

Механическая рука должна обеспечивать угол поворота 180 градусов в основании. Так что мы должны установить снизу серводвигатель. В данном случае он устанавливается в тот самый диско-шар. В вашем случае это может быть любой подходящий бокс. Робот устанавливается на этот серводвигатель. Можно, как это показано на рисунке, установить дополнительное металлическое кольцо-фланец. Можно обойтись и без него.

Для установки ультразвукового датчика, используется акрил толщиной 2 мм. Тут же снизу можно установить светодиод.

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

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

После сборки механической части, мы можем перейти к "мозгам" нашего манипулятора.

Схват манипулятора

Для установки схвата вам понадобится серводвигатель и несколько винтов.

Итак, что именно необходимо сделать.

Берете качалку от сервы и укорачиваете, пока она не подойдет к вашему схвату. После этого закручиваете два маленьких винта.

После установки сервы, проворачиваете ее в крайнее левое положение и сжимаете губки схвата.

Теперь можно установить серву на 4 болта. При этом следите, чтобы двигатель был все так же в крайнем левом положении, а губки схвата закрыты.

Можно подключить сервопривод к плате Arduino и проверить работоспособность схвата.

Учтите, что могут возникнуть проблемы с работой схвата, если болты/винты слишком сильно затянуты.

Добавление подсветки на манипулятор

Можно сделать ваш проект ярче, добавив на него подсветку. Для этого использовались светодиоды. Делается несложно, а в темноте выглядит очень эффектно.

Места для установки светодиодов зависят от вашего креатива и фантазии.

Электросхема

Можно использовать вместо резистора R1 потенциометр на 100 кОм для регулировки яркости вручную. В качестве сопротивлени R2 использовались резисторы на 118 Ом.

Перечень основных узлов, которые использовались:

  • R1 - резистор на 100 кОм
  • R2 - резистор на 118 Ом
  • Транзистор bc547
  • Фоторезистор
  • 7 светодиодов
  • Переключатель
  • Подключение к плате Arduino

В качестве микроконтроллера использовалась плата Arduino. В качестве питания использовался блок питания от персонального компьютера. Подключив мультиметр к красному и черному кабелям, вы увидите 5 вольт (которые используются для серводвигателей и ультразвукового датчика расстояния). Желтый и черный дадут вам 12 вольт (для Arduino). Делаем 5 коннекторов для сервомоторов, параллельно подключаем позитивные к 5 В, а негативные - к земле. Аналогично с датчиком расстояния.

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

Кроме того, на плате питания был установлен светодиод-индикатор питания. Реализуется это несложно. Дополнительно использовался резистор на 100 Ом между 5 В и землей.

10 миллиметровый светодиод на роботе тоже подключен к Arduino. Резистор на 100 Ом идет от 13 пина к к позитивной ноге светодиода. Негативный - к земле. В программе его можно отключить.

Для 6 серводвигателей использовано 6 коннекторов, так как 2 серводвигателя снизу используют одинаковый сигнал управления. Соответствующие проводники соединяются и подключаются к одному пину.

Повторюсь, что в качестве питания используется блок питания от персонального компьютера. Либо, конечно, вы можете приобрести отдельный источник питания. Но с учетом, того, что у нас 6 приводов, каждый из которых может потреблять около 2 А, подобный мощный блок питания обойдется недешево.

Обратите внимание, что коннекторы от серв подключаются к ШИМ-выходам Arduino. Возле каждого такого пина на плате есть условное обозначение ~. Ультразвуковой датчик расттояния можно подключить к пинам 6, 7. Светодиод - к 13 пину и земле. Это все пины, которые нам понадобятся.

Теперь мы можем перейти к программированию Arduino.

Перед тем как подключить плату через usb к компьютеру, убедитесь, что вы отключили питание. Когда будете тестировать программу, также отключайте питание вашей робо-руки. Если питание не выключить, Arduino получит 5 вольт от usb и 12 вольт от блока питания. Соответственно, мощность от usb перекинется к источнику питания и он немного "просядет".

На схеме подключения видно, что были добавлены потенциометры для управления сервами. Потенциометры не являются обязательным звеном, но приведенный код не будет работать без них. Потенциометры можно подключить к пинам 0,1,2,3 и 4.

Программирование и первый запуск

Для управления использовано 5 потенциометров (вполне можно заменить это на 1 потенциометр и два джойстика). Схема подключения с потенциометрами приведена в предыдущей части. Скетч для Arduino находится здесь.

Снизу представлены несколько видео робота-манипулятора в работе. Надеюсь, вам понравится.

На видео сверху представлены последние модификации арма. Пришлось немного изменить конструкцию и заменить несколько деталей. Оказалось, что сервы futuba s3003 слабоваты. Их получилось использовать только для схвата или поворота руки. Так что виесто них были установлены mg995. Ну а mg946 вообще будут отличным вариантом.

Программа управления и пояснения к ней

// управляются привода с помощью переменных резисторов - потенциометров.

int potpin = 0; // аналоговый пин для подключения потенциометра

int val; // переменная для считывания данных с аналогового пина

myservo1.attach(3);

myservo2.attach(5);

myservo3.attach(9);

myservo4.attach(10);

myservo5.attach(11);

pinMode(led, OUTPUT);

{ //servo 1 analog pin 0

val = analogRead(potpin); // считывает значение потенциометра (значение между 0 и 1023)

// масштабирует полученное значение для использования с сервами (получаем значение в диапазоне от 0 до 180)

myservo1.write(val); // выводит серву в позицию в соответствии с рассчитанным значением

delay(15); // ждет, пока серводвигатель выйдет в заданное положение

val = analogRead(potpin1); // серва 2 на аналоговом пине 1

val = map(val, 0, 1023, 0, 179);

myservo2.write(val);

val = analogRead(potpin2); // серва 3 на аналоговом пине 2

val = map(val, 0, 1023, 0, 179);

myservo3.write(val);

val = analogRead(potpin3); // серва 4 на аналоговом пине 3

val = map(val, 0, 1023, 0, 179);

myservo4.write(val);

val = analogRead(potpin4); //серва 5 на аналоговом пине 4

val = map(val, 0, 1023, 0, 179);

myservo5.write(val);

Скетч с использованием ультразвукового датчика расстояния

Это, наверное, одна из самых эффектных частей проекта. На манипулятор устанавливается датчик расстояния, который реагирует на препятствия вокруг.

Основные пояснения к коду представлены ниже

#define trigPin 7

Следующий кусок кода:

Мы присвоили всем 5-ти сигналам (для 6 приводов) названия (могут быть любыми)

Следующее:

Serial.begin (9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(led, OUTPUT);

myservo1.attach(3);

myservo2.attach(5);

myservo3.attach(9);

myservo4.attach(10);

myservo5.attach(11);

Мы сообщаем плате Arduino к каким пинам подключены светодиоды, серводвигатели и датчик расстояния. Изменять здесь ничего не стоит.

void position1(){

digitalWrite(led, HIGH);

myservo2.writeMicroseconds(1300);

myservo4.writeMicroseconds(800);

myservo5.writeMicroseconds(1000);

Здесь кое-что можно менять. Я задал позицию и назвал ее position1. Она будет использована в дальнейшей программе. Если вы хотите обеспечить другое движение, измените значения в скобках в диапазоне от 0 до 3000.

После этого:

void position2(){

digitalWrite(led,LOW);

myservo2.writeMicroseconds(1200);

myservo3.writeMicroseconds(1300);

myservo4.writeMicroseconds(1400);

myservo5.writeMicroseconds(2200);

Аналогично предыдущему куску, только в данном случае это position2. По такому же принципу вы можете добавлять новые положения для перемещения.

long duration, distance;

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = (duration/2) / 29.1;

Теперь начинает отрабатывать основной код программы. Не стоит его изменять. Основная задача приведенных выше строк - настройка датчика расстояния.

После этого:

if (distance <= 30) {

if (distance < 10) {

myservo5.writeMicroseconds(2200); //открыть схват

myservo5.writeMicroseconds(1000); //закрыть схват

Теперь вы можете добавлять новые перемещения в зависимости от расстояния, измеренного ультразвуковым датчиком.

if(distance <=30){ // данная строка обеспечивает переход в position1, если расстояние меньше 30 см.

position1(); //по сути арм отработает все, что вы зададите между скобками { }

else{ // если расстояние больше 30 см, переход в position2

position()2 // аналогично предыдущей строке

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

Последние строки кода

if (distance > 30 || distance <= 0){

Serial.println("Out of range"); //вывод в серийном монитеоре сообщения, что мы вышли за заданный диапазон

Serial.print(distance);

Serial.println(" cm"); //расстояние в сантиметрах

delay(500); //задержка в 0.5 секунды

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

Вот, собственно и все. Наслаждайтесь, модернизируйте свои собственные манипуляторы, делитесь идеями и резутатами!

Общие сведения

Итак, все джойстики можно классифицировать по разным основаниям, из них актуальны для нас способ подключения и тип датчиков.

По способу подключения джойстики подразделяются на джойстики с USB подключением и Game Port подключением. Можно ли самостоятельно сделать с нуля джойстик на USB мне неведомо, однако я полагаю, что это если и возможно, то только высококвалифицированным радиоинженерам. Иное дело переделать готовый USB джойстик под свой вкус и свои потребности. Это доступно практически каждому, умеющему держать в руках паяльник. Сделать с нуля джойстик на Game Port несложно, и вполне по силам каждому человеку, умеющему и любящему возиться с пластмассовыми и железными цацками. :-)

По типу датчиков джойстики подразделяются на джойстики, построенные на оптических датчика, на переменных резисторах и на магнитных резисторах. Каждый из перечисленных типов может быть сделан на Game Port. Единственное НО заключается в том, что я не имею ни малейшего представления о магнитных резисторах, поэтому буду рассказывать только об оптике и переменных резисторах.

Как джойстик сделать

На мой взгляд, самое пристальное внимание при создании собственного джойстика нужно уделить его механике. Главный враг на этом фронте - люфт. Как можно его побороть? Мое решение нельзя назвать простым, легким и дешевым. Однако можно назвать его механически совершенным. Заключается оно в том, что все поворотные узлы собираются на подшипниках качения с двойной опорой каждой детали. Такая конструкция обладает тремя достоинствами - полным отсутствием люфта, чертовской прочностью и высочайшей точностью позиционирования. Немаловажен еще и плавный ход, исключающий рывки и неравномерности движения.

Далее выбираем тип электронной начинки. Оптика или резисторы? Оптика точнее, она исключает дрожание. Однако оптика весьма непроста в установке и настройке. Резисторы проще в монтаже. Но нужно быть очень разборчивым в выборе резисторов, покупать импортные и не дешевые, иначе обеспечено дрожание, которое испортит все впечатление.

Начнем с механики. Вот посмотрите, здесь я нарисовал поворотный узел моего самодельного джойстика. Используются шариковые подшипники внешним диаметром 19 и внутренним 6 мм. Все подшипники вставлены и закреплены в выточенных круглых металлических шайбах, толщиной 12 мм.

Итак, мы видим, что весь узел состоит из трех основных узлов: узла крена, тангажа и качалки.

Пыльник покупается от шаровой Жигулей, но не большой, а маленький, с диаметром резинки 14 мм. Как раз под трубку ручки. Этот пыльник помимо защиты механизма от пыли и посторонних взглядов, подпружинивает ручку, и держит ее в среднем положении.

Чтобы воздействовать на качалку болт крепления трубки просверлен в центре, и в него вкручен болт с резьбой М3 без шляпки. Этот болт передает момент на качалку.

Накладки я делал из винипласта толщиной 10 мм. Далее сверлил в центре отверстие, и запрессовывал в нем подшипник (силой вдавливал. Держится превосходно). Сами подшипники извлекаются из 3.5 кулера (бловера), если он на подшипниках качения.

Вот снимок механики:

Сделав узел механики (на это может уйти несколько месяцев), нужно сделать корпус. Тут уж вам полный простор. Я для этого использую винипласт. Применяется он на промышленном производстве при монтаже электрических узлов. Толщина варьируется от 3 мм и до неизвестности. Самый толстый я видел 30 мм. Нам нужен толщиной не менее 8 мм для запаса прочности.

Винипласт очень прочный, эластичный, и хорошо обрабатывается. Из него можно склеить бокситкой любой корпус, на ваш вкус. Сгладите углы, покрасите - от заводского никто не отличит. Тут, правда, есть один нюанс. Для того, чтобы корпус был прочнее, и смотрелся более пристойно, я делаю так.

Берете отпиленный кусок винипласта нужного размера, намечаете карандашом линии сгибов. Теперь ищете любой электроприбор, который имеет поверхность накаливания порядка 400 и выше градусов (желательно чтобы при прикосновении кусочка винипласта к поверхности нагрева винипласт слегка плавился - тогда температура сойдет). Идеальный вариант - прут тэна, диаметром 8 - 15 мм. У меня есть неопознанный кулинарный электроприбор, у которого есть такая поверхность - круглый прут, который раскаливается до красна. Я использовал его. Держим некоторое время винипласт над этим прутом, чтобы от намеченной полоски карандаша до прута было минимальное расстояние, не позволяющее материалу плавиться. Когда отрезок винипласта достаточно прогревается, он становится эластичным, и легко сгибается на требуемый угол. В нашем случае это 90 градусов. Потом, выдерживая руками угол, охлаждаем сгиб под струей холодной воды из водопроводного крана, винипласт застывает, и это навечно:-). Также поступаем с противоположной поверхностью. Осталось выпилить из винипласта две боковые накладки, плотно подогнать их так, чтобы они без зазоров заходили вовнутрь, и склеить эпоксидной смолой. Далее делаем в верхней поверхности новоиспеченного корпуса требуемое отверстие для штока РУС, выпиливаем нижнюю крышку. Должно получиться примерно так:

Потом монтируем поворотный узел к корпусу, и сам джойстик почти готов.

Если конструкцию покрасить, и дополнить большим пыльником, то выйдет примерно это:

Как видите джойстик напольный. Сама ручка с военного Ми-8 (такие ставились и на Ми-24).

Но почему почти готов? А потому что нет педалей...

Самое сложное в педалях, это сделать их в пристойном облике, чтобы они не напоминали пыточный инструмент:-) Вот взгляните.

Технология проста. Берем нужный кусок текстолита, нагреваем ровно посередине, и перегибаем на острый угол (более 90 градусов). Угол нужен такой, чтобы торец педали в среднем положении был на минимальном расстоянии от поверхности, а в крайних положениях расстояние от торца до поверхности было равным. Далее делаем в вертикальной поверхности две вертикальные прорези на требуемый ход педалей. Потом берем две небольшие дверные петли, выпиливаем по их ширине и требуемой длине сами педали, и соединяем петли, педали и остов.

Потом делаем стальные направляющие, прикручиваем их к педалям. Стальные направляющие подвергаются токарной обработке - в нужных местах прослабляются, чтобы с них не спадала резинка (резинка залита синим), а в нужных утолщаются, поскольку сквозь эту толщину пойдет струна (на рисунке залита красным), обеспечивающая обратную связь педалей. Сама струна должна быть прочна и тонка. Я использовал для ее роли прочную матерчатую изоляцию электрического кабеля. Сойдет и бельевая капроновая веревка. Эту веревку нужно протянуть через два блока. Желательно чтобы эти блоки были собраны на шариковых подшипниках, и имели канавки, чтобы струна не спадала. Блоки крепятся на болтах диаметром 6 мм. Меньше нельзя, поскольку это несущий узел, работать будем ногами, и нужна прочность.

На рисунке я изобразил способ крепления резистора, и передачи на него момента. Устроить оптическую схему еще проще. Все электромеханическое хозяйство закрывается пластмассовым кожухом.

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

...прошло несколько месяцев...

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

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

Все началось с раздумий по поводу конструкции. Вообще, самое сложное и главное в педалестроении (как и вообще в творчестве) - это сначала полностью построить педали в голове и на бумаге. Только после этого, следует переходить к материальному воплощению педалей. Если не следовать данному принципу, неизбежны постоянные переделки, что выливается, в конечном счете, в обезображивание конструкции, и приводит к изысканию новых материалов.

Давайте определимся с сущностью хардкорных авиапедалей.

Хардкорные авиапедали:

  1. Работают по принципу обратной связи (давишь одну педаль от себя - вторая идет к тебе);
  2. Сами педали при нажатии не меняют горизонтальный угол установки;
  3. Расстояние между педалями должно соответствовать аналогичному расстоянию в реальных самолетах;
  4. Педали подпружинены, и имеют отчетливо ощущаемую ногами, нейтральную точку позиционирования.

Для того, чтобы такие педали работали, нужно:

  1. Большая площадь контакта основания педалей с полом для исключения опрокидывания конструкции;
  2. Исключить возможность скольжения основания педалей по полу;

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

Внутренний диаметр «стакана» этой стойки, и его глубина позволяют разместить в нем прочный узел механики будущих педалей.

Сам узел можно изготовить вручную, а можно заказать у токаря/фрезеровщика. В любом случае придется купить два подшипника, внешним диаметром 40 мм.

Сначала я сделал узел сам, из подручных материалов, которые нашел у себя в коробках с хламом. Это было достаточно затруднительно, поскольку невозможно подобрать болт с диаметром резьбы, соответствующему внутреннему диаметру подшипников, что влечет за собой утомительный процесс центровки подшипников на болте. Также непросто в домашних условиях просверлить болт М14 насквозь вдоль. Однако все делается. Сделав, я столкнулся с одной проблемой. Дело в том, что педали я подпаивал к микросхеме трастмастера TOP GUN FOX PRO 2 USB. Опрос резистора «педальной» оси в этом джое рассчитан на жесткую фиксацию полярности резистора. Иными словами - педальный резюк грамотно опрашивается только в том случае, если распайка крайних ног резюка идентична оригинальной. Однако, если резистор расположить под конструкцией (стаканом стойки педалей), то для достижения соответствия воздействия на педали и реакции руля направления в игре, нужно перепаять крайние контакты на резисторе. После перепайки опрос резистора искажается, появляется неравномерность в управлении, постоянно сбивается центровка.

Еще одной проблемой, которую не удалось решить с ходу, оказалась центровка педалей. Я попробовал два варианта. Реализуя первый, я попытался захватить пружинами саму штангу педалей с двух сторон. Однако это был неверный путь, поскольку пружины были тугие, и одна из сторон педалей всегда упиралась в пружину, которая была уже сжата. Во втором случае я просверлил штангу по центру горизонтально, и приделал туда болт, на который накинул пружину. Этот вариант оказался неплохим, разве что не обеспечивал точно ощущаемой нейтральной зоны. Как позже выяснилось, примененный для центровки болт диаметром 6 мм оказался недостаточно прочным, и подгибался.

Также веселая история произошла с ограничителями хода педалей. Я изначально задумал сделать ограничители, и потратил немало времени на их монтаж. Там тоже были свои варианты, свои ошибки и единственно-возможное решение. Однако, когда я однажды снял ограничители и попробовал педали без них, я пришел к выводу о ненужности ограничителей. Это обусловлено тем, что если подпружинить педали в достаточной степени, вывернуть их на критический для резистора угол просто невозможно, применяя разумные усилия на педалях - пружина не дает вывернуть больше, и начинает двигаться вся конструкция. Иными словами, чтобы своротить голову резюку, нужно специально задаться этой целью, и упереться в одну педаль всей массой. Однако в этом случае можно легко сломать и ограничитель, и всю систему подпружинивания. А раз так, то ограничители не нужны. Выглядело все так:

В общем, помучившись некоторое время с резистором, я решил пересадить резистор наверх. Для этого потребовалась переделка существенных узлов конструкции механического узла, поскольку подпружинивались педали сверху. На этот раз я решил обратиться к токарю. Сделал чертеж, который тут привожу. Если есть желание пойти по моим стопам, то рисунок можно сохранить на диск, распечатать на принтере, и нести токарю.

Для того, чтобы смонтировать полученную конструкцию в основании нужно просверлить основание и нарезать в отверстиях резьбу, дабы болтами зафиксировать узел в стакане.

Быть или не быть? Вот каким вопросом озадачимся в первом абзаце. Нет, поймите меня правильно, РУД как таковой, безусловно, необходим на джойстике, дело в том, должен ли он быть отдельным от джойстика? Однозначный ответ можно дать только в том случае, если Ваш джойстик напольный. Если напольный - то отдельный РУД необходим. А если джой настольный? И для управления двигателем у него предусмотрен соответствующий рычажок (ползунок)? Тут уж дело каждого. Зависит от взглядов вирпила на жизнь его вирпильскую, на долю его горемычную:-) Мое мнение однозначно - если джой настольный, то водружать на стол еще одну коробку с рычагом для управления двигателем, есть не что иное, как повод для истерики в курятнике. Курам понравится, и они будут смеяться так, что может даже полопаются.

Почему я так категоричен в этом вопросе? Да потому что совершенно не вижу причин для появления отдельного РУДа рядом с настольным джоем. Что может выступить причиной? Необходимость в расширении функциональности? Смешно, поскольку основания современных джойстиков нашпигованы кнопками, расположенными достаточно удобно. А если не хватает, можно ненадолго убрать руку с основания и ткнуть перстом в клавиатуру, расположенную в паре сантиметров от основания джойстика. Кроме того, оперировать в бою большим пальцем левой руки куда сподручнее, нежели шуровать всей конечностью туды-сюды на отдельном руде. Проверено. Но может это благородное стремление к повышению реализма?? Тем более смешно, поскольку реализм в первую очередь заключен в авиапедалях, во вторую очередь в напольной РУС, и только в третью очередь - в отдельном РУД. Используя метафору, можно выразиться, что делать настольный РУД при настольном РУС это все равно, что «проапгрейдить» немощный старый компьютер покупкой нового «пацанского» корпуса баксов за 300:-) Однако это мое мнение, оно субъективно. Может кому-то важнее корпус.

Надеюсь Вы определились с необходимостью для вас отдельного РУД. Если жизнь Ваша без отдельного РУД представляется Вам серой и мрачной, то продолжаем прения:-)

Итак, каковы основные требования к РУД?

  1. Плавный ход без рывков, неравномерности в перемещении;
  2. Тугой ход. Тугой настолько, чтобы РУД удерживался в том положении, в котором Вы его отпустили, и не перемещался от колебаний эфира:-);
  3. Достаточный вес и размер основания, чтобы при манипуляциях РУД основание РУД не ерзало по столу (стулу);
  4. Удобная ручка;
  5. Достаточная амплитуда перемещения РУД.

Как будем реализовывать эти требования? Плавность обеспечим построением механизма на шариковых подшипниках. Тугого хода добьемся применением подтормаживающей системы. Вес увеличим грузами. Размеры сделаем достаточными. Наконец, амплитуду отрегулируем по потребностям.

Начнем, по традиции с блока механики.

Первым вопросом тут будет вариант базового крепления узла механики. Возможны следующие варианты:

  1. Верхнее крепление;
  2. Нижнее крепление;
  3. Боковое крепление.

Смотрим на рисунке:

Каждый вариант имеет свои плюсы и минусы.

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

Плюсом второго варианта является большая длина штока РУД, возможность использовать для корпуса основания РУД материал потоньше, отсутствуют шляпки болтов на верхней части основания, усилия на РУД распределяются более удачно в плане устойчивости конструкции. Недостатком второго варианта является затрудненный доступ в утробу основания. Для вскрытия потребуется открутить нижнюю крышку, и сам механизм от крышки. Да и механика будет частично скрыта гранью уголка-крепежа.

Третий вариант обладает всеми плюсами второго (если механизм крепить к нижней крышке). Единственный его крупный минус - необходимость изготавливать ограничители движения РУД (в первых вариантах амплитуда движения РУД ограничивается величиной прорези в корпусе), что касается мелкого минуса, то он заключается в том, что выглядит 2 вариант менее основательно, нежели первые два. Да, чуть не забыл - плюс еще в том, что нет прорези на верхней панели, и грязюка в корпус не попадает.

Я избрал третий вариант. Причина в том, что у меня вышел весь материал для изготовления нормального корпуса. Когда достану материал переделаю по варианту 2. А Вы решайте сами. Как говорится, исходя из способностей и потребностей:-)

Да, кстати, возможен еще один вариант, а именно:

Данный вариант предпочтительней для любителей «ретро»:-), он принципиально похож на РУД Як-3. Однако данная схема имеет один существенный минус - в рукоятках затруднительно разместить кнопки и дополнительные оси. И уж тем более сложно этими осями и кнопками пользоваться. Налицо ограниченная функциональность.

В общем ладно. С этим вроде закончили, выбор делать Вам, а я немножко его облегчил, поскольку указал на плюсы и минусы. Умываю руки:-)

Теперь перейдем к рассмотрению непосредственно блока механики РУД. Потребуются два шариковых подшипника внутренним диаметром 7 мм. Если Вы избрали нижнюю схему, то, соответственно, четыре подшипника. Также советую обзавестись уголком с гранями 70 мм, либо просто пластиной стали, толщиной не менее 5 мм (в этом случае придется при реализации верхней схемы № 3 крепить механику к крышке). Смотрим рисунок, вид сбоку:

Как видно на рисунке, на болт с резьбой М6 надет шток РУД, далее надета металлическая трубка (желательно чтобы ее внутренний диаметр позволял сесть на болт впритирку) длиной 10 мм, потом идет подшипник, снова трубка, но чуть подлиннее (20-30 мм), опять подшипник, и все это накрепко затянуто гайкой. Конец болта предварительно обработан на наждаке, чтобы его диаметр был 3-4 мм.

После сборки системы, на металлической пластине просверливаются четыре отверстия, и к пластине с помощью хомутов крепятся подшипники. Это видно на следующем рисунке:

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

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

Шток РУД можно сделать как из трубки (стального прута), так и из пластины. Я использовал полоску текстолита, толщиной 8мм, и шириной приблизительно 40 мм. Слегка изогнул ее на конце, и прикрепил к изогнутому концу ручку.

Теперь о корпусе. Корпус основания можно сделать самому, а можно взять готовую пластмассовую коробку нужных размеров. Если решили сделать, то я рекомендую руководствоваться советами в разделе Общие сведения. Механика , где я рассказывал как делаю корпуса.

Внутренности корпуса можно нашпиговать различным железом для утяжеления конструкции. И, наконец, снабдите нижнюю крышку резиновыми наклейками для увеличения трения корпуса РУД и поверхности.

Напоследок пару слов о непосредственно ручке РУД. Ее можно сделать по-разному. Руководствуйтесь собственными пожеланиями. Я избрал для ручки полый пластмассовый стакан и закручивающейся крышкой. Полый потому, что в нем я разместил кнопки и резистор управления шагом винта. Как это сделать посмотрите рисунок:

Итак, ручка руда - это такой «стакан» из полупрозрачной, белой пластмассы с толстыми стенками. Сей стакан я обнаружил случайно. В нем я у дома сверла хранил:-) Стакан сделан как конус, и в широкой части имеет резьбу, на которую накручивается крышка. Эту крышку я прикрепил (четырьмя болтами М4) к толстой полосе изогнутого текстолита, сделал отверстие чтобы пропустить многожильный провод. На крышку накручивается стакан - вот и весь руд.

В верхней (глухой) части стакан просверлен, и в него вделан резюк (отечественный, 150 кОм, подпаян вместо трастмастеровского к плате. У отечественного большая амплитуда поворота опрашивается, а у родного мизерный угол опроса). Далее на глухую часть с внешней стороны крепится (тремя болтами М4) самодельная шайба из толстого текстолита, призвание которой - скрыть гайку, крепящую резюк к стакану, и убрать зазор между маховичком резистора и торцом стакана. На шток резюка одет маховичок от узла фотоувеличителя, который (счастливое совпадение) подходит по диаметру к стакану. Вживую он выглядит так:

Вот как на нем лежит рука:

В заключение хочу добавить, что все, что я тут описал, делается без привлечения посторонних людей. Все что нужно - тиски, ножовка по металлу, дрель, слесарный набор (сверла, метчики и лерки). Я также использовал наждачный станочек собственного изготовления. Если у Вас его нет, то не отчаивайтесь - напильник и руки творят чудеса. Остальные инструменты (пассатижи, кусачки и проч.), думаю, у всех имеются.

Kelt (makkov at mail dot ru )

– простого настольно манипулятора из оргстекла на сервоприводах.

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

Сейчас моя робо-рука выглядит так:

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

Пробы и ошибки

Начиная работать над чертежами, я хотел не просто повторить uArm, а улучшить его. Мне казалось, что в моих условиях вполне можно обойтись без подшипников. Так же мне не нравилось то, что электроника вращается вместе со всем манипулятором и хотелось упростить конструкцию нижней части шарнира. Плюс я начал рисовать его сразу немного меньше.

С такими входными параметрами я нарисовал первую версию. К сожалению, у меня не сохранилось фотографий той версии манипулятора (который был выполнен в желтом цвете). Ошибки в ней были просто эпичнейшие. Во-первых, ее было почти невозможно собрать. Как правило, механика которую я рисовал до манипулятора, была достаточно простая, и мне не приходилось задумываться о процессе сборки. Но все-таки я его собрал и попробовал запустить, И рука почти не двигалась! Все детли крутились вокруг винтов и, сли я затягивал их так, чтобы было меньше люфтов, она не могла двигаться. Если ослаблял так, чтобы она могла двигаться, появлялись невероятные люфты. В итоге концепт не прожил и трех дней. И приступил к работе над второй версией манипулятора.


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

Затем я забросил работу над проектом на какое-то время, но вскоре принял решении довести его до ума. Я решил использовать более мощные и популярные сервоприводы, увеличить размер и добавить подшипники. Причем я решил, что не буду пытаться сделать сразу все идеально. Я набросал чертежи на скорую руки, не вычерчивая красивых сопряжений и заказал резку из прозрачного оргстекла. На получившемся манипуляторе я смог отладить процесс сборки, выявил места, нуждающиеся в дополнительном укреплении, и научился использовать подшипники.


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


Меня удручает то, что я не смог привнести ничего принципиально нового в проект uArm. К тому времени, как я начал рисовать финальную версию, они уже выкатили 3D-модели на GrabCad. В итоге я только немного упростил клешню, подготовил файлы в удобном формате и применил очень простые и стандартные комплектующие.

Особенности манипулятора

До появления uArm, настольные манипуляторы подобного класса выглядели достаточно уныло. У них либо не было электроники вообще, либо было какое-нибудь управление с резисторами, либо было свое проприетарное ПО. Во-вторых, они как правило не имели системы параллельных шарниров и сам захват менял свое положение в процессе работы. Если собрать все достоинства моего манипулятора, то получается достаточно длинный список:

  1. Система тяг, позволяющих разместить мощные я тяжелые двигатели в основании манипулятора, а также удерживающие захват параллельно или перпендикулярно основанию
  2. Простой набор комплектующих, которые легко купить или вырезать из оргстекла
  3. Подшипники почти во всех узлах манипулятора
  4. Простота сборки. Это оказалось действительно сложной задачей. Особенно трудно было продумать процесс сборки основания
  5. Положение захвата можно менять на 90 градусов
  6. Открытые исходники и документация. Все подготовлено в доступных форматах. Я дам ссылки для скачивания на 3D-модели, файлы для резки, список материалов, электронику и софт
  7. Arduino-совместимость. Есть много противников Arduino, но я считаю, что это возможность расширения аудитории. Профессионалы вполне могут написать свой софт на C - это же обычный контроллер от Atmel!

Механика

Для сборки необходимо вырезать детали из оргстекла толщиной 5мм:



С меня за резку всех этих деталей взяли около $10.

Основание монтируется на большом подшипнике:


Особенно трудно было продумать основание с точки зрения процесса сборки, но я подглядывал за инженерами из uArm. Качалки сидят на штифте диаметром 6мм. Надо отметить, что тяга локтя у меня держится на П-образном держателе, а у uFactory на Г-образном. Трудно объяснить в чем разница, но я считаю у меня получилось лучше.


Захват собирается отдельно. Он может поворачиваться вокруг своей оси. Сама клешня сидит прямо на валу двигателя:


В конце статьи я дам ссылку на суперподробную инструкцию по сборке в фотографиях. За пару часов можно уверенно все это скрутить, если все необходимое есть под рукой. Также я подготовил 3D-модель в бесплатной программе SketchUp. Её можно скачать, покрутить и посмотреть что и как собрано.



Электроника

Чтобы заставить руку работать достаточно всего навсего подключить пять сервоприводов к Arduino и подать на них питание с хорошего источника. У uArm использованы какие-то двигатели с обратной связью. Я поставил три обычных двигателя MG995 и два маленьких двигателя с металлическим редуктором для управления захватом.

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


Этот шилд на самом деле очень простой. На нем четыре переменных резистора, две кнопки, пять разъемов для сервопривода и разъем питания. Это очень удобно с точки зрения отладки. Можно загрузить тестовый скетч и записать какой-нибудь макрос для управления или что-нибудь вроде того. Ссылку для скачивания файла платы я тоже дам в конце статьи, но она подготовлена для изготовления с металлизацией отверстий, так что мало пригодна для домашнего производства.


Программирование

Самое интересное, это управление манипулятором с компьютера. У uArm есть удобное приложение для управления манипулятором и протокол для работы с ним. Компьютер отправляет в COM-порт 11 байт. Первый из них всегда 0xFF, второй 0xAA и некоторые из оставшихся - сигналы для сервоприводов. Далее эти данные нормализуются и отдаются на отработку двигателям. У меня сервоприводы подключены к цифровым входам/выходам 9-12, но это легко можно поменять.

Терминальная программа от uArm позволяет позволяет изменять пять параметров при управлении мышью. При движении мыши по поверхности изменяется положение манипулятора в плоскости XY. Вращение колесика - изменение высоты. ЛКМ/ПКМ - сжать/разжать клешню. ПКМ + колесико - поворот захвата. На самом деле очень удобно. При желании можно написать любой терминальный софт, который будет общаться с манипулятором по такому же протоколу.

Я буду здесб приводить скетчи - скачать их можно будет в конце статьи.

Видео работы

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

Ссылки

Файлы для резки оргстекла, 3D-модели, список для покупки, чертежи платы и софт можно скачать в конце моей основной статьи .
(осторожно, траффик).

© 2024 Про уют в доме. Счетчики газа. Система отопления. Водоснабжение. Система вентиляции