Интересный робот-манипулятор на Arduino. Недорогая роборука, программируемая на Ардуино: роботизированный манипулятор своими руками Сборка механической части


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

Если Вы собрали детали манипулятора в соответствии с инструкцией, то можно приступить к сборке электронной схемы. Мы предлагаем подключить сервоприводы манипулятора к 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 раз, после сборки манипулятора. Внесённые Вами изменения (значения предельных углов) сохранятся в файле скетча.

Имеет подсветку. Всего робот работает на 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.

Робот-манипулятор MeArm — карманная версия промышленного манипулятора. MeArm - простой в сборке и управлении робот, механическая рука. Манипулятор имеет четыре степени свободы, что позволяет легко захватывать и перемещать различные небольшие предметы.

Данный товар представлен в виде набора для сборки. Включает в себя следующие части:

  • набор деталей из прозрачного акрила для сборки механического манипулятора;
  • 4 сервопривода;
  • плата управления, на которой расположен микроконтроллер Arduino Pro micro и графический дисплей Nokia 5110;
  • плата джойстиков, содержащая два двухкоординатных аналоговых джойстика;
  • USB кабель питания.


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

Servo middle, left, right, claw ; // создание 4 объектов Servo

Void setup()
{
Serial.begin(9600);
middle.attach(11); // присоединяет серво на контакт 11 на вращение платформы
left.attach(10); // присоединяет серво на контакт 10 на левое плечо
right.attach(9); // присоединяет серво на контакт 11 на правое плечо
claw.attach(6); // присоединяет серво на контакт 6 claw (захват)
}

Void loop()
{
// устанавливает позицию сервопривода по величине(в градусах)
middle.write(90);
left.write(90);
right.write(90);
claw.write(25);
delay(300);
}
Используя маркер, сделайте линию через корпус серводвигателя и шпиндель. Подключите пластмассовую качалку из комплекта к сервоприводу, как показано ниже с помощью небольшого винта из комплекта креплений к сервоприводу. Мы будем использовать их в этом положении при сборке механической части MeArm. Будьте осторожны, чтобы не переместить положение шпинделя.


Теперь можно производить сборку механического манипулятора.
Возьмём основание и прикрепим ножки к её углам. Затем установим четыре 20 мм болта и накрутим на них гайки (половину от общей длины).

Теперь крепим центральный сервопривод двумя 8-мм болтами к маленькой пластине, и получившуюся конструкцию крепим к основанию с помощью 20 мм болтов.

Собираем левую секцию конструкции.

Собираем правую секцию конструкции.

Теперь необходимо соединить левую и правую секции. Сначала леую к переходной пластине

Потом правую, и получаем

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

И собираем "клешню"

Крепим "клешню"

Для сборки можно использовать следующее руководство (на англ. языке) или руководство по сборке подобного манипулятора (на русском).

Схема расположения выводов

Теперь можно приступать к написанию Arduino кода. Для управления манипуляторм, наряду с возможностью управления управления с помощью джойстика, было бы неплохо направлять манипулятор в какую-то определенную точку декартовых координат (x, y, z). Есть соответствующая библиотека, которую можно скачать с github - https://github.com/mimeindustries/MeArm/tree/master/Code/Arduino/BobStonesArduinoCode .
Координаты измеряются в мм от центра вращения. Исходное положение находится в точке (0, 100, 50), то есть 100 мм вперед от основания и 50 мм от земли.
Пример использования библиотеки для установки манипулятора в определенной точке декартовых координат:

#include "meArm.h"
#include

Void setup() {
arm.begin(11, 10, 9, 6);
arm.openGripper();
}

Void loop() {
// вверх и влево
arm.gotoPoint(-80,100,140);
// захватить
arm.closeGripper();
// вниз, вред и вправо
arm.gotoPoint(70,200,10);
// отпустить захват
arm.openGripper();
// вернуться вт начальную точку
arm.gotoPoint(0,100,50);
}

Методы класса meArm:

void begin (int pinBase , int pinShoulder , int pinElbow , int pinGripper ) - запуск meArm, указываются пины подключения для сервоприводов middle, left, right, claw. Необходимо вызвать в setup();
void openGripper () - открыть захват;
void closeGripper () - захватить;
void gotoPoint (float x , float y , float z ) - переместить манипулятор в позицию декартовых координат (x, y, z);
float getX () - текущая координата X;
float getY () - текущая координата Y;
float getZ () - текущая координата Z.

Руководство по сборке (англ.)

Из особенностей данного робота на платформе 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 принтера

Здравствуйте!

Рассказываем о линейке коллаборативных роботов-манипуляторов Universal Robots .

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

Что это?

Продукция компании представлена линейкой из трех облегченных промышленных манипуляционных устройств с разомкнутой кинематической цепью:
UR3 , UR5 , UR10 .
Все модели имеют 6 степеней подвижности: 3 переносные и 3 ориентирующие. Устройства от Юниверсал-роботс производят только угловые перемещения.
Роботы-манипуляторы разделены на классы, в зависимости от предельно допустимой полезной нагрузки. Другими отличиями являются - радиус рабочей зоны, вес и диаметр основания.
Все манипуляторы UR оснащены датчиками абсолютного положения высокой точности, которые упрощают интеграцию с внешними устройствами и оборудованием. Благодаря компактному исполнению, манипуляторы UR не занимают много места и могут устанавливаться в рабочих секциях или на производственных линиях, где не помещаются обычные роботы.Характеристики:
Чем интересны Простота программирования

Специально разработанная и запатентованная технология программирования позволяет операторам, не владеющим специальными навыками, быстро выполнить настройку роботов-манипуляторов UR и управлять ими с помощью интуитивной технологии 3D-визуализации. Программирование происходит путем серии простых передвижений рабочего органа манипулятора в необходимые положения, либо нажатием стрелок в специальной программе на планшете.UR3: UR5: UR10: Быстрая настройка

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

Манипуляторы UR способны заменить операторов, выполняющих рутинные задачи в опасных и загрязненных условиях. В системе управления ведется учет внешних возмущающих воздействий, оказываемых на робот-манипулятор в процессе работы. Благодаря этому, манипуляционные системы UR можно эксплуатировать без защитных ограждений, рядом с рабочими местами персонала. Системы безопасности роботов одобрены и сертифицированы TÜV – Союзом работников технического надзора Германии.
UR3: UR5: UR10: Многообразие рабочих органов

На конце промышленных манипуляторов UR предусмотрено стандартизированное крепление для установки специальных рабочих органов. Между рабочим органом и конечным звеном манипулятора можно установить дополнительные модули силомоментных сенсоров или камер.Возможности применения

С промышленными роботами-манипуляторами UR открываются возможности автоматизации практически всех циклических рутинных процессов. Устройства компании Юниверсал-роботс отлично зарекомендовали себя в различных областях применения.

Перекладка

Установка манипуляторов UR на участках перекладки и упаковки позволяет увеличить точность и уменьшить усадку. Большинство операций по перекладке может осуществляться без надзора.Полировка, буферовка, шлифовка

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

Литье под давлением

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

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

Традиционные технологии автоматизации отличаются громоздкостью и дороговизной. Легко настраиваемые роботы UR способны работать без защитных экранов рядом с сотрудниками или без них 24 часа в сутки, обеспечиваю высокую точность и производительность.Контроль качества

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

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

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

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

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

Обсудите автоматизацию ваших производственных процессов с помощью манипуляторов Юниверсал-роботс с официальным дилером -