Оглавление:

Роботизированная рука, управляемая Arduino, с 6 степенями свободы: 5 шагов (с изображениями)
Роботизированная рука, управляемая Arduino, с 6 степенями свободы: 5 шагов (с изображениями)

Видео: Роботизированная рука, управляемая Arduino, с 6 степенями свободы: 5 шагов (с изображениями)

Видео: Роботизированная рука, управляемая Arduino, с 6 степенями свободы: 5 шагов (с изображениями)
Видео: 🦾Оживляем танк с манипулятором на Arduino 2024, Июль
Anonim
Роботизированная рука, управляемая Arduino, с 6 степенями свободы
Роботизированная рука, управляемая Arduino, с 6 степенями свободы
Роботизированная рука, управляемая Arduino, с 6 степенями свободы
Роботизированная рука, управляемая Arduino, с 6 степенями свободы
Роботизированная рука, управляемая Arduino, с 6 степенями свободы
Роботизированная рука, управляемая Arduino, с 6 степенями свободы

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

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

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

Как это обычно бывает, история и несколько воплощений сборки - это не только то, что вы видите ниже. Если вас интересует предыстория, дополнительную информацию можно найти здесь:

Шаг 1. Что вам нужно - оборудование и электроника

Что вам нужно - оборудование и электроника
Что вам нужно - оборудование и электроника
Что вам нужно - оборудование и электроника
Что вам нужно - оборудование и электроника

Первоначальный дизайнер проекта жил в Европе и впоследствии использовал обычные там метрические измерения и материалы. Например, пресс-доска, которую он использовал для тела, была стандартной толщиной 5 мм. Аналогичный материал здесь, в США, имеет толщину 1/8 дюйма, что составляет около 3,7 мм. Это оставило зазор в отверстиях, которые изначально были предназначены для запрессовки. Вместо того, чтобы исправлять рисунки, я просто использовал клей Gorilla Glue для закрепления этих стыков.

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

  • 22 - стойки M3 x 0,5 x 23 мм
  • 15 - Проставки M3 x 15 мм
  • 40 - Винты M3
  • Шестигранные гайки M3
  • Винты M3 25 мм
  • 1 - Весна
  • 3/4 "двусторонняя монтажная лента
  • 5 - Сервопривод SG 5010 TowerPro
  • 1 - Мини сервопривод SG92R TowerPro
  • 1 - Мини сервопривод SG90 TowerPro
  • 2,54 мм, однорядный прямой штифт, жатка
  • 1 - Макет половинного размера
  • 1 - Удлинительные перемычки с внутренней / наружной резьбой - 40 x 6 дюймов
  • Синий акриловый лист размером 1–12 на 24 дюйма или вырезанные лазером детали от вашего любимого поставщика услуг
  • 2 - 3 мм x 20 мм + 4 мм x 5 мм проставки подшипников шарниров, напечатанные на 3D-принтере (см. Ниже)
  • 1 - Панель управления * См. Примечание в разделе "Электромонтаж".
  • 1 - Рассеянный светодиод RGB (трехцветный) 10 мм
  • 1 - Arduino Uno
  • 1 - Стандартный ЖК-дисплей 16x2 + экстра - белый на синем
  • 1 - рюкзак с ЖК-дисплеем i2c / SPI
  • 1 - 16-канальный 12-битный ШИМ / сервопривод Adafruit
  • 1 - MCP3008 - 8-канальный 10-разрядный АЦП с интерфейсом SPI
  • 3 - Датчик коммутационного модуля JoyStick * См. Примечание в разделе «Электромонтаж».
  • DC Баррель Джек
  • Адаптер переменного тока в постоянный
  • Удлинительные кабели для сервоприводов - разной длины

Почти все детали этого рычага были вырезаны из акрила толщиной 1/8 дюйма. Однако две проставки подшипников шарниров необходимо распечатать. Кроме того, первоначальная конструкция предусматривала, чтобы две проставки шарниров были высотой 7 мм по отношению к валу подшипника. Когда я начал сборку плеча, быстро стало ясно, что они слишком высокие из-за высоты сервоприводов TowerPro. Мне пришлось сделать новые шарнирные подшипники с основанием высотой всего 3 мм, которое, кстати, все еще было слишком высоким, но управляемым. Вам нужно будет принять во внимание относительную высоту ваших сервоприводов и учесть расстояние между двумя нижними рычагами:

Высота сервопривода + рог сервопривода + шарнирный подшипник + двусторонняя лента = 47 мм +/- 3 мм.

Шаг 2: Сборка рычага

Сборка руки
Сборка руки
Сборка руки
Сборка руки
Сборка руки
Сборка руки
Сборка руки
Сборка руки

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

  1. Прикрепите базовый сервопривод к верхней опорной плите с помощью винтов M3 25 мм и шестигранных гаек. Не затягивайте слишком сильно! ПРИМЕЧАНИЕ: Возможно, вы захотите затянуть резьбу до упора, чтобы свести к минимуму ослабление гаек во время использования.

  2. Если вы используете список деталей, который у меня есть выше, вам нужно будет собрать 5 базовых прокладок, навинтив по 2 каждой стойки M3 x 0,5 x 23 мм вместе, а затем прикрепив их к верхней опорной пластине с помощью шестигранных гаек.
  3. Прикрепите нижнюю опорную плиту к стойкам с помощью 5 винтов M3.
  4. Прикрепите плечевую пластину к двум монтажным пластинам сервопривода с помощью безопасного акрилового клея. Здесь я использовал клей Gorilla Glue. ПРИМЕЧАНИЕ: Каждая из двух сервопластин имеет отверстие в задней части, которое позволяет вставить усиливающую прокладку, соединяющую их. Убедитесь, что отверстия совпадают! * Пока у вас есть клей, соедините пластину для крепления запястья с основной пластиной захвата. * При желании вы также можете приклеить пластину сервопривода запястья к двум пластинам запястья. Я не стал делать это, вместо этого скрепив их болтами с помощью стоек, как описано ниже.
  5. Присоедините теперь затвердевший блок плеча к базовому сервоприводу. Я использовал самый широкий рупор, входящий в комплект сервопривода, который был установочным рупором с шестью стержнями.

  6. Добавление рамы нижнего рычага к плечевым сервоприводам может быть непростым делом. Я предлагаю закрепить рожки на рамах нижних рычагов, прежде чем продолжить. ПРИМЕЧАНИЕ: Обязательно отцентрируйте сервоприводы для плечевого узла ПЕРЕД их прикреплением к раме. Эти два сервопривода должны двигаться в унисон, и если они не выровнены, это, как минимум, вызовет дрожание сервопривода, а при достаточном смещении может повредить раму или сервоприводы. * Каждый из плечевых сервоприводов монтируется со своими кронштейнами на задней стороне монтажных пластин вместо того, чтобы пропустить сервоприводы через пластины - это позволит вам надеть рупор на вал сервопривода под углом и закрепить винт. Пока не закрепляйте сервопривод на монтажной пластине. * Затем добавьте внутренний сервопривод и установите рычаг
  7. Соберите раму верхнего рычага и сервоприводы, протолкнув сервоприводы через промежутки в рычагах, а затем вставив проставки между обеими пластинами верхнего рычага и закрепив винтами M3.
  8. Наклейте двустороннюю липкую ленту на заднюю часть распорки локтевого сустава и обрежьте излишки.
  9. Прикрепите проставку к нижней части сервопривода, который будет действовать как привод локтя.
  10. Вставьте верхний рычаг в сборе в раму нижнего рычага и затяните винты сервопривода.
  11. Добавьте упоры для усиления между двумя пластинами нижнего рычага. Я использовал две вместо всех четырех, чтобы снизить вес.
  12. Наклейте двустороннюю липкую ленту на тыльную сторону верхней распорки запястья и обрежьте излишки.
  13. Прикрепите прокладку к нижней части сервопривода, который будет действовать как запястье.
  14. Присоедините внешнюю пластину запястья к рожку сервопривода запястья и закрепите винтом рожка.
  15. Соберите сервопластину запястья с двумя пластинами запястья и стойками.
  16. Закрепите сервопривод запястья на пластине сервопривода с помощью зажимной пластины сервопривода.
  17. Вам нужно будет закрепить наручный рожок на сервоприводе перед прикреплением узла захвата к этому рожку из-за того, что отверстие для винта рожка заблокировано.
  18. Перед тем, как прикрепить рог сервопривода захвата к сервоприводу, свободно соберите детали захвата для посадки. Это позволит вам закрепить рог на предыдущем шаге.
  19. Присоедините рог захвата к сервоприводу и дополнительно затяните винты, удерживающие соединения захвата. ПРИМЕЧАНИЕ: не затягивайте эти гайки и болты полностью, так как они должны быть ослаблены, чтобы захват мог двигаться.

Шаг 3: Подключение и панель управления

Электропроводка и панель управления
Электропроводка и панель управления
Электропроводка и панель управления
Электропроводка и панель управления
Электропроводка и панель управления
Электропроводка и панель управления

Я создал этот проект как платформу для разработки некоторых идей, которые у меня есть для более позднего образовательного проекта. Итак, большинство моих подключений - это простые разъемы dupont. Единственная пайка, которую я сделал, была для MCP3008. Если вы найдете монтажную плату для этого компонента, то вы сможете построить этот рычаг без припоя.

Есть 3 группы компонентов:

  1. Входы - эти элементы принимают информацию от пользователя и состоят из джойстиков и АЦП mcp3008.
  2. Выходы - эти элементы передают данные миру, либо показывая статус пользователю, либо обновляя сервоприводы данными о положении. Это ЖК-экран, ЖК-рюкзак, светодиод RGB, плата сервопривода и, наконец, сервоприводы.
  3. Обработка - Arduino завершает последнюю группу, которая принимает данные со входов и выталкивает данные на выходы в соответствии с инструкциями кода.

На приведенной выше схеме Fritzing подробно описаны штыревые соединения для всех компонентов.

Входы

Начнем с входов. Джойстики являются аналоговыми устройствами - это означает, что они подают переменное напряжение в качестве входа для Arduino. Каждый из трех джойстиков имеет два аналоговых выхода для X и Y (вверх, вниз, влево и вправо), что в сумме дает 6 входов для Arduino. Хотя Arduino Uno имеет 6 доступных аналоговых входов, нам нужно использовать два из этих контактов для связи I2C с экраном и сервоконтроллером.

По этой причине я включил аналого-цифровой преобразователь (АЦП) MCP3008. Этот чип принимает до 8 аналоговых входов и преобразует их в цифровой сигнал через контакты связи SPI Arduino следующим образом:

  • Контакты MCP 1-6> Переменные выходы джойстиков для большого пальца
  • Контакты 7 и 8 MCP> Нет соединения
  • MCP Pin 9 (DGND)> Земля
  • Контакт 10 MCP (CS / SHDN)> Контакт 12 Uno
  • Контакт 11 MCP (DIN)> Контакт 11 Uno
  • Вывод 12 MCP (DOUT)> Вывод 10 Uno
  • Контакт 13 MCP (CLK)> Контакт 9 Uno
  • MCP Pin 14 (AGND)> Земля
  • Выводы MCP 15 и 16> +5 В

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

  • Контакт 1 - База - Аналоговые данные на этом контакте будут вращать самый нижний сервопривод на роботе.
  • Контакт 2 - Плечо - Аналоговые данные на этом контакте будут вращать два сервопривода над базовым сервоприводом.
  • Контакт 3 - Локоть - Аналоговые данные на этом контакте будут вращать следующий сервопривод вверх от плечевых сервоприводов.
  • Штифт 4 - ВВЕРХ / ДН Запястье - Аналоговые данные на этом штифте будут вращать сервопривод запястья, поднимая и опуская узел захвата.
  • Контакт 5 - Захват - Аналоговые данные на этом штифте открывают и закрывают захват.
  • Штифт 6 - Поворот запястья - Аналоговые данные на этом штифте будут вращать захват.

ПРИМЕЧАНИЕ. При покупке и установке джойстиков для большого пальца, указанных в списке деталей, имейте в виду, что ориентация модулей может отличаться от моей, поэтому проверьте выходы x и y для правильного подключения к АЦП. Кроме того, если вы используете мою панель управления, напечатанную на 3D-принтере, монтажные отверстия могут быть смещены относительно моих.

Выходы

ШИМ / сервоконтроллер Adafruit делает этот проект очень простым. Просто подключите сервоприводы к разъемам сервоприводов, и все подключения питания и сигналов будут обработаны. Если вы не найдете сервоприводы с очень длинными выводами, вам понадобится набор удлинителей сервокабелей разной длины, чтобы все ваши сервокабели доходили до платы контроллера.

Сервоприводы подключаются следующим образом:

  • Положение 0 - базовый сервопривод
  • Положение 1 - сервопривод плеча (Y-кабель сервопривода)
  • Положение 2 - сервопривод локтя
  • Положение 3 - запястье 1 сервопривод
  • Положение 4 - сервопривод захвата
  • Положение 5 - запястье 2 сервопривода

Кроме того, VCC и V + подключены к +5 Вольт, а GND - к земле.

ПРИМЕЧАНИЕ 1: Одно БОЛЬШОЕ примечание: напряжение питания для всего проекта поступает через клеммную колодку питания на плате сервоуправления. Вывод V + на сервоконтроллере фактически подает питание от клеммной колодки на остальную часть цепи. Если вам нужно запрограммировать Uno, я настоятельно рекомендую отключить вывод V + перед подключением Uno к вашему ПК, так как ток, потребляемый сервоприводами, может повредить ваш USB-порт.

ПРИМЕЧАНИЕ 2: Я использую сетевой адаптер 6 В переменного тока в постоянный для питания проекта. Я рекомендую адаптер, который может обеспечивать ток не менее 4 А, чтобы при срабатывании одного или нескольких сервоприводов внезапный всплеск тока не отключал вашу систему и не перезагружал Arduino.

ЖК-экран 16X2 подключается к ЖК-рюкзаку Adafruit, чтобы воспользоваться преимуществами интерфейса I2C, который уже используется сервоконтроллером. SCL на сервоконтроллере и CLK на рюкзаке подключаются к контакту A5 на Uno. Аналогичным образом, SDA на сервоконтроллере и DAT на рюкзаке подключаются к контакту A4 на Uno. Кроме того, 5 В подключается к +5 Вольт, а GND подключается к заземлению. LAT на Backpack ни к чему не подключен.

Наконец, светодиод RGB подключается к контактам 7 (КРАСНЫЙ), 6 (зеленый) и 5 (синий) на Uno. Ножка заземления светодиода подключена к заземлению через резистор 330 Ом.

Обработка

И последнее, но не менее важное: остальные подключения Arduino, не перечисленные выше, следующие: контакт 5V подключен к +5 Вольт, а GND подключен к земле.

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

Шаг 4: Код

Код
Код

Как уже говорилось ранее, я изначально создавал этот проект как демонстрацию для моей местной Maker Faire. Я задумал, чтобы дети и взрослые могли поиграть на нашем стенде. Как оказалось, это было намного популярнее, чем я предполагал - настолько, что дети спорили из-за этого. Итак, когда пришло время переписать, я включил «Демо-режим», который реализует ограничение по времени.

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

Основная операция

Код, указанный в справочном разделе ниже, довольно прост. Массив отслеживает 6 суставов с минимальным, максимальным размером, исходным положением и текущим положением. Когда на руку подается питание, функция запуска определяет библиотеки, необходимые для связи с MCP3008, ЖК-рюкзаком (а затем и с экраном), а также определяет контакты светодиодов. Оттуда он выполняет базовую проверку системы и переходит к ручке. Функция возврата в исходное положение начинается с захвата и спускается к основанию, что сводит к минимуму вероятность заедания в нормальных условиях. Если рука полностью выдвинута, то, возможно, лучше вручную вернуть руку в исходное положение перед включением. Поскольку общие сервоприводы не предоставляют обратной связи о своем положении, нам нужно разместить каждый из них в заранее определенной точке и отслеживать, как далеко они перемещены.

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

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

Шаг 5. Ссылки и ресурсы

Ссылки на руки

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

Программные библиотеки

  • Ресурсы Adafruit PWM / Servo Controller
  • Библиотека MCP3008
  • MCP3008 Лист данных

Панель управления и код

  • Рисунок панели, который я сделал в Tinkercad
  • Текущий репозиторий кода

Рекомендуемые: