Интересный робот-манипулятор на Arduino. Робот-манипулятор механическая рука Роботизированная рука манипулятор на arduino

Из особенностей данного робота на платформе Arduino можно отметить сложность его конструкции. Роборука состоит из множества рычагов, которые позволяют ей двигаться по всем осям, хватать и перемещать различные вещи, используя всего 4 серво-мотора. Собрав собственными руками такого робота, Вы точно сможете удивить своих друзей и близких возможностями и приятным видом данного устройства! Помните, что для программирования Вы всегда сможете воспользоваться нашей графической средой RobotON Studio!

Если у Вас появятся вопросы или замечания, мы всегда на связи! Создавайте и выкладывайте свои результаты!

Особенности:

Чтобы собрать робота манипулятора своими руками, вам понадобится довольно много компонентов. Основную часть занимают 3D печатные детали, их около 18 штук (печатать горку необязательно).Если вы скачали и распечатали все необходимое, то вам потребуются болты, гайки и электроника:

  • 5 болтов М4 20мм, 1 на 40 мм и соответствующие гайки с защитой от раскрутки
  • 6 болтов М3 10мм, 1 на 20 мм и соответствующие гайки
  • Макетка с соединительными проводами или шилд
  • Arduino Nano
  • 4 серво мотора SG 90

После сборки корпуса ВАЖНО убедиться в его свободной подвижности. Если ключевые узлы Роборуки двигаются с трудом, серво-моторы могут не справиться с нагрузкой. Собирая электронику, необходимо помнить, что подключать цепь к питанию лучше после полной проверки соединений. Чтобы избежать поломки серво-приводов SG 90, не нужно крутить руками сам мотор, если нет необходимости. В случае, если нужно разработать SG 90, нужно плавно подвигать вал мотора в разные стороны.

Характеристики:
  • Простое программирование ввиду наличия малого количества моторов, причем одного типа
  • Наличие мертвых зон для некоторых серво-приводах
  • Широкая применимость робота в повседневной жизни
  • Интерсная инженерная работа
  • Необходимость использования 3D принтера


Подключение:

Если Вы собрали детали манипулятора в соответствии с инструкцией, то можно приступить к сборке электронной схемы. Мы предлагаем подключить сервоприводы манипулятора к Arduino UNO через Trerma-Power Shield , а управлять сервоприводами используя Trema-потенциометры .

  • Поворот ручки первого Trema-потенциометра приведёт к повороту основания.
  • Поворот ручки второго Trema-потенциометра приведёт к повороту левого плеча.
  • Поворот ручки третьего Trema-потенциометра приведёт к повороту правого плеча.
  • Поворот ручки четвёртого Trema-потенциометра приведёт в движение захват.

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

Код программы:

Если вы подадите питание, до калибровки, манипулятор может начать двигаться неадекватно! Сначала выполните все шаги калибровки.

#include // Подключаем библиотеку Servo для работы с сервоприводами Servo servo1; // Объявляем объект servo1 для работы с сервоприводом основания Servo servo2; // Объявляем объект servo2 для работы с сервоприводом левого плеча Servo servo3; // Объявляем объект servo3 для работы с сервоприводом правого плеча Servo servo4; // Объявляем объект servo4 для работы с сервоприводом захвата int valR1, valR2, valR3, valR4; // Объявляем переменные для хранения значений потенциометров // Назначаем выводы: const uint8_t pinR1 = A2; // Определяем константу с № вывода потенциометра управл. основанием const uint8_t pinR2 = A3; // Определяем константу с № вывода потенциометра управл. левым плечом const uint8_t pinR3 = A4; // Определяем константу с № вывода потенциометра управл. правым плечом const uint8_t pinR4 = A5; // Определяем константу с № вывода потенциометра управл. захватом const uint8_t pinS1 = 10; // Определяем константу с № вывода сервопривода основания const uint8_t pinS2 = 9; // Определяем константу с № вывода сервопривода левого плеча const uint8_t pinS3 = 8; // Определяем константу с № вывода сервопривода правого плеча const uint8_t pinS4 = 7; // Определяем константу с № вывода сервопривода захвата void setup(){ // Код функции setup выполняется однократно: Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта servo1.attach(pinS1); // Назначаем объекту servo1 управление сервоприводом 1 servo2.attach(pinS2); // Назначаем объекту servo2 управление сервоприводом 2 servo3.attach(pinS3); // Назначаем объекту servo3 управление сервоприводом 3 servo4.attach(pinS4); // Назначаем объекту servo4 управление сервоприводом 4 } void loop(){ // Код функции loop выполняется постоянно: valR1=map(analogRead(pinR1), 0, 1024, 10, 170); servo1.write(valR1); // Вращаем основанием Указанные в данной строке углы: 10 и 170 возможно потребуется изменить (откалибровать) valR2=map(analogRead(pinR2), 0, 1024, 80, 170); servo2.write(valR2); // Управляем левым плечом Указанные в данной строке углы: 80 и 170 возможно потребуется изменить (откалибровать) valR3=map(analogRead(pinR3), 0, 1024, 60, 170); servo3.write(valR3); // Управляем правым плечом Указанные в данной строке углы: 60 и 170 возможно потребуется изменить (откалибровать) valR4=map(analogRead(pinR4), 0, 1024, 40, 70); servo4.write(valR4); // Управляем захватом Указанные в данной строке углы: 40 и 70 возможно потребуется изменить (откалибровать) Serial.println((String) "A1 = "+valR1+",\t A2 = "+valR2+", \t A3 = "+valR3+", \t A4 = "+valR4); // Выводим углы в монитор }

Калибровка:

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

    Калибровка заключается в указании крайних значений угла поворота для каждого сервопривода, так чтобы детали не мешали их движениям.
  • Отсоедините все сервоприводы от Trema-Power Shield, загрузите скетч и подключите питание.
  • Откройте монитор последовательного порта.
  • В мониторе будут отображаться углы поворота каждого сервопривода (в градусах).
  • Подключите первый сервопривод (управляющий вращением основания) к выводу D10.
  • Поворот ручки первого Trema-потенциометра (вывод A2) приведёт к повороту первого сервопривода (вывод D10), а в мониторе изменится значение текущего угла этого сервопривода (значение: A1 = ...). Крайние положения первого сервопривода будут лежать в диапазоне, от 10 до 170 градусов (как написано в первой строке кода loop). Этот диапазон можно изменить, заменив значения последних двух аргументов функции map() в первой строке кода loop, на новые. Например, заменив 170 на 180, Вы увеличите крайнее положение сервопривода в данном направлении. А заменив 10 на 20, Вы уменьшите другое крайнее положение того же сервопривода.
  • Если Вы заменили значения, то нужно заново загрузить скетч. Теперь сервопривод будет поворачиваться в новых, заданных Вами, пределах.
  • Подключите второй сервопривод (управляющий поворотом левого плеча) к выводу D9.
  • Поворот ручки второго Trema-потенциометра (вывод A3) приведёт к повороту второго сервопривода (вывод D9), а в мониторе изменится значение текущего угла этого сервопривода (значение: A2 = ...). Крайние положения второго сервопривода будут лежать в диапазоне, от 80 до 170 градусов (как написано во второй строке кода loop скетча). Этот диапазон изменяется так же как и для первого сервопривода.
  • Если Вы заменили значения, то нужно заново загрузить скетч.
  • Подключите третий сервопривод (управляющий поворотом правого плеча) к выводу D8. и аналогичным образом осуществите его калибровку.
  • Подключите четвертый сервопривод (управляющий захватом) к выводу D7. и аналогичным образом осуществите его калибровку.

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

Сначала будут затронуты общие вопросы, потом технические характеристики результата, детали, а под конец и сам процесс сборки.

В целом и общем

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

Технические характеристики результата

Будет рассматриваться образец с параметрами длины/высоты/ширины соответственно 228/380/160 миллиметров. Вес руки-манипулятора, своими руками сделанной, будет составлять примерно 1 килограмм. Для управления используется проводной дистанционный пульт. Ориентировочное время сборки при наличии опыта - около 6-8 часов. Если его нет, то могут уйти дни, недели, а при попустительстве и месяцы, чтобы была собрана рука-манипулятор. Своими руками и одному в таких случаях стоит делать разве что для своего собственного интереса. Для движения составляющих используются коллекторные моторы. Приложив достаточно усилий, можно сделать прибор, который будет поворачиваться на 360 градусов. Также для удобства работы, кроме стандартного инструментария вроде паяльника и припоя, необходимо запастись:

  1. Удлинёнными плоскогубцами.
  2. Боковыми кусачками.
  3. Крестовой отверткой.
  4. 4-мя батарейками типа D.

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

Мелкие детали

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

Также необходимо позаботится о том, чтобы провода не усложняли её движения. Оптимальным будет проложить их внутри конструкции. Можно сделать всё и извне, такой подход сэкономит время, но потенциально может привести к сложностям в перемещении отдельных узлов или всего устройства. А теперь: как сделать манипулятор?

Сборка в общих чертах

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

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

Какой из предложенных вариантов выбрать, зависит исключительно от вас. Далее делается основная конструкция. Для комфорта работы необходимо два «сустава». Прикреплённый к платформе должен уметь наклоняться в разные стороны, что решается с помощью двигателей, размещённых в его основании. Ещё один или пару следует разместить в месте локтевого изгиба, чтобы часть захвата можно было перемещать по горизонтальной и вертикальной линии системы координат. Далее, при желании получить максимальные возможности, можно установить ещё двигатель в месте запястья. Далее наиболее необходимое, без чего не представляется рука-манипулятор. Своими руками предстоит сделать само устройство захвата. Тут существует множество вариантов реализации. Можно дать наводку по двум самым популярным:

  1. Используется только два пальца, которые одновременно сжимают и разжимают объект захвата. Является самой простой реализацией, которая, правда, обычно не может похвастаться значительной грузоподъёмностью.
  2. Создаётся прототип человеческой руки. Тут для всех пальцев может использоваться один двигатель, с помощью которого будет осуществляться сгиб/разгиб. Но можно сделать и конструкцию сложней. Так, можно к каждому пальцу подсоединить по двигателю и управлять ими отдельно.

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

Возможные схематические изображения результата

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

Любая представленная схема манипулятора может быть усовершенствована.

Заключение

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

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

Робот работает на плате Arduino . В качестве источника питания используется компьютерный блок.

Материалы и инструменты:
- 6 серводвигателей;
- акрил толщиной 2 мм (и еще небольшой кусок толщиной 4 мм);
- штатив (для создания основания);
- ультразвуковой датчик расстояния типа hc-sr04;
- контроллер Arduino Uno;
- контроллер питания (изготавливается самостоятельно);
- блок питания от компьютера;
- компьютер (нужен для программирования Arduino);
- провода, инструменты и прочее.



Процесс изготовления:

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

Длина первой части составляет порядка 19 см, а второй примерно 17.5 см. Переднее звено имеет длину 5.5 см. Что касается остальных элементов, то их размеры выбираются на личное усмотрение.





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

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

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

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








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


Шаг третий. Подключение электронной части
Основным контроллером для робота является плата Arduino. В качестве источника питания используется компьютерный блок, на его выходах нужно найти напряжение 5 Вольт. Оно должно быть, если замерить мультиметром напряжение на красном и черном проводе. Это напряжение нужно для питания серводвигателей и датчика расстояния. Желтый и черный провод блока выдает уже 12 Вольт, они нужны для работы Arduino.

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

Еще на плате имеется светодиодный индикатор питания. Для его подключения используется резистор 100 Ом между +5В и землей.










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

Теперь можно приступать к программированию. Перед тем как подключаться через USB, нужно убедиться, что питание полностью отключено. При тестировании программы питание робота тоже нужно отключать. Если это не сделать, контроллер получить 5В от USB и 12В от блока питания.

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

На схеме есть резистор R1, его можно заменить потенциометром на 100 кОм. Это позволит регулировать яркость вручную. Что касается резисторов R2, то их номинал 118 Ом.

Вот перечень основных узлов, которые применялись:
- 7 светодиодов;
- R2 - резистор на 118 Ом;
- R1 - резистор на 100 кОм;
- переключатель;
- фоторезистор;
- транзистор bc547.

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

Первые испытания робота показали, что установленные серводвигатели типа futuba s3003 оказались слабыми для робота. Их можно применять лишь для поворота руки или для схвата. Вместо них автор установил двигатели mg995. Идеальным вариантом будут двигатели типа mg946.

Поделиться