Рубрики
Схемы на Arduino

Роботизированная рука на Arduino с 6 степенями свободы

Роботизированная рука — один из самых популярных проектов, который почти каждый энтузиаст электроники хотя бы раз в жизни пытается собрать. Роботизированные руки — это увлекательные проекты, поскольку их можно создавать для множества практических применений, таких как операции захвата и перемещения, сборка компонентов, выполнение повторяющихся задач и даже создание интеллектуальных систем, таких как роботизированная рука «Манекен», показанная в фильме «Железный человек». Эти роботизированные руки в основном используются в средах, где необходимо безопасно обращаться с опасными химическими веществами или где задачи сложны, но повторяются, а в электронной промышленности они широко используются для сборки печатных плат, поскольку могут работать быстрее и точнее, чем люди. Итак, давайте создадим роботизированную руку на основе Arduino, которая будет проще в управлении и сборке. Этот комплексный проект роботизированной руки на основе Arduino демонстрирует, как создать полностью функциональную 6-степенную роботизированную руку, способную выполнять операции захвата и перемещения с точностью и надежностью.

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

Также на нашем сайте вы можете посмотреть аналогичные проекты роботизированных рук:

Необходимые компоненты

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

  1. Плата Arduino Uno (купить на AliExpress). Основной микроконтроллер, используемый для управления роботизированной рукой.
  2. Сервомоторы MG-995 (3 шт.) (купить на AliExpress). Используются для выполнения крутящих моментных перемещений крупных шарниров.
  3. Микросервомоторы MG90S или SG 90 (3 шт.) (купить на AliExpress). Используются для точного перемещения мелких суставов.
  4. 3D напечатанные компоненты. Используется для создания механической конструкции роботизированной руки.
  5. Винты, гайки, болты. Используется для сборки и скрепления соединений.
  6. Набор отвёрток.
  7. Внешний источник питания (5 В, 2 А). Используется для питания сервомоторов.
  8. Макетная плата.
  9. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

На изображении выше показаны различные детали роботизированной руки, напечатанные на 3D-принтере, набор винтов для сборки, а на изображении ниже — контроллер для программирования, двигатели для перемещения и т. д.

Что такое роботизированная рука на основе Arduino

Роботизированная рука на основе Arduino — это механическое устройство, предназначенное для воспроизведения движений и функций человеческой руки, позволяющее ей выполнять задачи с высокой точностью, повторяемостью и полным программируемым управлением. Она состоит из множества жестких сегментов, соединенных шарнирами, что позволяет роботизированной руке с сервомотором перемещаться в различных направлениях с разным числом степеней свободы (degrees of freedom, DOF). Чем больше степеней свободы (роботизированная рука с 4 или 6 степенями свободы), тем более гибкой и функциональной становится роботизированная рука. Роботизированные руки широко используются во многих отраслях промышленности, от заводов, где они собирают автомобили, сваривают металл, располагают компоненты и идеально красят поверхности, до медицинской сферы, где они помогают хирургам в процедурах, требующих исключительной точности и стабильности. Они также часто встречаются в лабораториях, космических миссиях и образовательных учреждениях и т. д.

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

Компонент Функция
Основная платформа (Base) Вращение на 360 градусов вокруг вертикальной оси
Плечевой сустав (Shoulder) Вертикальное движение руки (вверх/вниз)
Локтевой сустав (Elbow) Вытягивание и втягивание руки
Запястье (Wrist) Регулировка угла поворота концевого захвата
Вращение запястья (Wrist Rotation) Управление ориентацией захвата
Захват (Gripper) Механизм захвата объекта

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

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

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

Суставы (шарниры) роботизированной руки

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

Роботизированная рука с 6 степенями свободы (DOF)

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

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

Большинство роботизированных манипуляторов для начинающих оснащены сервомоторами для точного управления. Сервомоторы вращаются на определенные углы в зависимости от управляющих сигналов и идеально подходят для точного позиционирования в приложениях с роботизированными манипуляторами на базе Arduino. Как правило, любительские сервомоторы вращаются в ограниченном диапазоне, например, от 0 до 180 градусов, обеспечивают отличное позиционное управление и имеют крутящий момент, определяющий, какой вес может поднять манипулятор. Понимание работы сервомоторов имеет решающее значение, поскольку слабые или перегруженные сервомоторы могут ограничить весь ваш проект.

3D-проектирование и моделирование роботизированных манипуляторов

3D-печать роботизированной руки включает в себя создание деталей роботизированной руки с помощью программного обеспечения CAD, такого как Fusion 360 или SolidWorks. Затем эти детали печатаются или обрабатываются на 3D-принтере. Качественное 3D-моделирование обеспечивает плавное движение, правильную подгонку и достаточную прочность.

Ограничения вращения и диапазон движений

Каждый шарнир или сервопривод имеет физические ограничения вращения. Большинство любительских сервоприводов вращаются до 180 градусов, в то время как некоторые специализированные конструкции допускают полное вращение на 360 градусов. Эти ограничения определяют рабочую зону манипулятора и напрямую влияют на решения по механической конструкции в проекте роботизированной руки, созданной своими руками с использованием Arduino.

Требования к источнику питания для серводвигателей

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

Выбор системы управления для роботизированных манипуляторов на базе Arduino

Контроллер выступает в роли «мозга» роботизированной руки и определяет её возможности. Платы Arduino отлично подходят для простых задач по захвату и перемещению объектов, Raspberry Pi поддерживает сложные системы обработки данных и машинного зрения, а ESP32 обеспечивает беспроводное управление и интеграцию с IoT.

Схема проекта

Приведенная ниже схема роботизированной руки на основе Arduino наглядно демонстрирует, как соединены все компоненты в системе. В этой системе плата Arduino Uno выступает в роли «мозга» роботизированной руки, куда пишется и загружается управляющая программа. Все шесть сервомоторов подключены к ШИМ-выводам Arduino Uno для точного управления движением каждого сустава.

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

Настройка оборудования и сборка роботизированной руки

Аппаратная часть играет решающую роль в обеспечении бесперебойной и надежной работы роботизированной руки в режиме реального времени. Каждый компонент тщательно подключен, чтобы избежать ослабления проводки или нестабильной подачи питания, которые могут нарушить работу. Двигатели надежно закреплены на конструкции руки, что обеспечивает их стабильность во время движения и предотвращает нежелательные вибрации или дрожание. Каждый двигатель подключен к ШИМ-выводам Arduino UNO для управления, а питание и заземление подаются на двигатели извне для корректной работы.

Схема расположения контактов Arduino UNO для управления сервоприводами роботизированной руки

В таблице нижу показана конфигурация контактов роботизированной руки на основе Arduino UNO. Красные (VCC) провода всех сервоприводов подключены к положительной шине макетной платы, а коричнево-черные (GND) провода — к заземляющей шине макетной платы. Заземление Arduino (GND) подключено к той же заземляющей шине для поддержания общего опорного напряжения.

Компоненты Количество Контакты Arduino UNO Подключение питания/заземления
1 Сервопривод MG995 1 D3 Обычный внешний источник питания
2 Сервопривод MG995 1 D5 Обычный внешний источник питания
3 Сервопривод MG995 1 D6 Обычный внешний источник питания
4 MG90S 1 D9 Обычный внешний источник питания
5 MG90S 1 D10 Обычный внешний источник питания
6 MG90S 1 D11 Обычный внешний источник питания
7 Внешний блок питания 1 Подключено к шинам питания VCC и GND макетной платы
8 Arduino UNO 1
9 Макетная плата 1
10 Соединительные провода

Далее рассмотрим 3D-печать компонентов проекта.

Процесс 3D-печати для изготовления конструктивных элементов роботизированной руки

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

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

Чтобы роботизированная рука выглядела хорошо, мы использовали два вида филамента для её печати. ​​Один — жёлтый, а другой — чёрный. Жёлтый филамент использовался для печати подвижных частей, а чёрный — для печати частей основания корпуса.

3D-модели, использованные для печати роботизированной руки, были взяты из проекта с открытым исходным кодом, доступного на Instructables. Этот же источник использовался для понимания механической сборки роботизированной руки. Вы можете перейти по ссылке ниже, чтобы найти файлы 3D-моделей с открытым исходным кодом и этапы сборки. 

Ссылка на исходный код
https://www.instructables.com/3D-Printed-Arduino-Based-Robotic-Arm/

Объяснение кода программы

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

Этот код для Arduino управляет роботизированной рукой с 6 степенями свободы с помощью сервомоторов через последовательный интерфейс. Каждый сервомотор (основание, плечо, локоть, вращение запястья, угол наклона запястья и захват) может плавно перемещаться до заданного угла с определенными пределами безопасности. Рука инициализируется в безопасном начальном положении и поддерживает обратную связь по положению в реальном времени через последовательный интерфейс. Для повышения эффективности мы создали панель управления, которая используется для управления роботизированной рукой с помощью ползунков, а управляющие данные передаются через последовательный порт. Функции панели управления будут описаны позже.

Объявление и инициализация сервообъекта

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

Функция настройки: назначение выводов ШИМ и последовательная связь

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

Начальная конфигурация положения

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

Обработка последовательных команд и ограничения безопасности

Программа считывает последовательные команды, такие как B90 или S45.
Первый символ выбирает шарнир, а число задает угол.
Функция constrain() гарантирует, что сервопривод остается в пределах безопасных механических ограничений.
Недопустимые шарниры обнаруживаются и отклоняются для предотвращения ошибок.

Функция плавного управления движением

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

Веб-панель управления для роботизированной руки на основе Arduino

Управление роботизированной рукой осуществляется с помощью веб-панели управления, разработанной с использованием HTML, CSS и JavaScript. Эта панель управления разработана как интерфейс «подключи и работай», то есть дополнительная установка или настройка не требуется. Вам нужно сохранить файл с расширением .html и открыть его в веб-браузере.

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

Управление роботизированной рукой

После сборки всех деталей, напечатанных на 3D-принтере, роботизированная рука будет выглядеть так, как показано на изображении ниже. Поместите собранную роботизированную руку на ровный и устойчивый стол, чтобы обеспечить правильное выравнивание. Затем подключите провода двигателей в соответствии с предоставленной схемой. После завершения подключения проводов подключите микроконтроллер Arduino UNO к вашему ПК или ноутбуку с помощью USB-кабеля. Перед загрузкой исходного кода убедитесь, что все сервомоторы установлены в исходное положение под углом 90 градусов. Этот шаг важен для плавного движения роботизированной руки. Если какой-либо двигатель не выровнен под углом 90 градусов, отрегулируйте его вручную, прежде чем продолжить. После подтверждения начального выравнивания загрузите исходный код в Arduino UNO и начните работу роботизированной руки.

После загрузки кода управления роботизированной рукой Arduino в микроконтроллер, роботизированная рука с сервомоторами переместится в исходные положения, определенные в исходном коде. Затем откройте сохраненный HTML-файл панели управления в Google Chrome, где отобразится интерфейс управления с ползунками. Каждый ползунок соответствует определенному суставу роботизированной руки, включая основание, плечо, локоть, угол наклона запястья, вращение запястья и захват. Перемещая ползунки вперед и назад, вы можете вручную управлять движением каждого сустава в реальном времени. 

Панель управления также позволяет записывать и воспроизводить движения . Чтобы записать последовательность движений, нажмите кнопку Record («Запись») на панели управления, а затем переместите ползунки по мере необходимости. После завершения всех необходимых движений нажмите кнопку «Стоп» , чтобы завершить запись. После остановки нажмите кнопку «Сохранить», чтобы сохранить записанную последовательность в виде файла JSON, содержащего все движения суставов и информацию о времени. Чтобы воспроизвести движение, нажмите кнопку LoadЗагрузить») на панели управления, выберите сохраненный файл JSON в файловом менеджере, а затем нажмите Play («Воспроизвести»). Роботизированная рука автоматически выполнит записанные движения точно так, как они были сохранены

Практическое применение роботизированных манипуляторов

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

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

  • Автоматизация лабораторных процессов.
    Роботизированные манипуляторы могут перемещать пробирки, образцы и выполнять повторяющиеся лабораторные задачи, что также помогает снизить количество человеческих ошибок. Роботизированные манипуляторы, осуществляющие захват и перемещение, автоматизируют повторяющиеся лабораторные задачи: дозирование образцов, перемещение пробирок, организация образцов и выполнение стандартных протоколов.

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

Устранение распространенных проблем с роботизированной рукой

Проблема 1: Роботизированная рука не двигается после загрузки кода.

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

Проблема 2: Сервомоторы движутся хаотично или постоянно дергаются.

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

Проблема 3: Роботизированная рука движется в неправильном направлении или достигает механических пределов.

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

Проблема 4: Ползунки на приборной панели работают, но роботизированная рука не реагирует.

Эта проблема обычно связана с последовательной связью. Убедитесь, что панель управления открыта в Google Chrome, поскольку Web Serial API поддерживается только в браузерах на основе Chromium. Также проверьте, что выбран правильный COM-порт и что скорость передачи данных в коде Arduino соответствует настройкам панели управления.

Проблема 5: Запись движения воспроизводится некорректно.

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

Заключение

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

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

Часто задаваемые вопросы о роботизированных манипуляторах на основе Arduino

⇥ 1. Сколько степеней свободы (DOF) имеет роботизированная рука?
Роботизированная рука имеет 6 степеней свободы (6-DOF) , включая вращение основания, движение плеча, движение локтя, наклон запястья, вращение запястья и работу захвата. Такая конфигурация обеспечивает гибкие и человекоподобные движения руки.

⇥ 2. Можно ли питать роботизированную руку напрямую от Arduino Uno?
Нет. Arduino Uno не может обеспечить достаточный ток для безопасного управления несколькими сервомоторами. Для сервомоторов рекомендуется использовать внешний источник питания, а Arduino питается отдельно через USB.

⇥ 3. Как управляется роботизированная рука?
Управление роботизированной рукой осуществляется с помощью веб-панели управления , разработанной с использованием HTML, CSS и JavaScript. Панель управления взаимодействует с Arduino Uno через Web Serial и позволяет осуществлять управление в реальном времени с помощью ползунков.

⇥ 4. Можно ли записывать и воспроизводить движения роботизированной руки?
Да, панель управления предоставляет функцию записи и воспроизведения . Вы можете записывать движения, нажав кнопку «Запись», остановить запись, сохранить движение в файл JSON, а затем загрузить и воспроизвести его для автоматического повторения тех же движений.

⇥ 5. Каково назначение JSON-файла, генерируемого панелью управления?
В JSON-файле хранятся все записанные движения суставов, а также информация о времени. Это позволяет роботизированной руке автоматически повторять последовательности движений без ручного управления.

⇥ 6. Требуется ли подключение к интернету для работы роботизированной руки?
Нет. Роботизированная рука и панель управления работают в автономном режиме. Подключение к интернету не требуется после того, как файл панели управления и код Arduino будут доступны.

Репозиторий GitHub

Воспользуйтесь нашим репозиторием на GitHub, чтобы получить все необходимые ресурсы проекта, включая полную документацию по коду роботизированной руки на базе Arduino, полные схемы подключения роботизированной руки, STL-файлы (для 3D-печати) всех частей роботизированной руки и полную документацию по сборке. Загрузите полный проект из репозитория GitHub, который содержит всю необходимую документацию, протестированный код (готовый к использованию в производстве) и полную техническую спецификацию нашей собственной роботизированной руки.

Полный код проекта

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *