Оглавление:

Роботизированная рука, управляемая Arduino и ПК: 10 шагов
Роботизированная рука, управляемая Arduino и ПК: 10 шагов

Видео: Роботизированная рука, управляемая Arduino и ПК: 10 шагов

Видео: Роботизированная рука, управляемая Arduino и ПК: 10 шагов
Видео: Как Сделать Робота на Arduino UNO / How to Make a Robot on Arduino UNO 2024, Ноябрь
Anonim
Image
Image
Теория, лежащая в основе проекта
Теория, лежащая в основе проекта

Роботизированные руки широко используются в промышленности. Будь то сборочные операции, Сварка или даже один используется для стыковки с МКС (Международной космической станцией), они помогают людям в работе или полностью заменяют человека. Рука, которую я построил, - это уменьшенное изображение роботизированной руки, которую предполагается использовать для перемещения объектов. Он управляется arduino pro mini, который уже имеет встроенную библиотеку для управления сервоприводами. Сервоприводы управляются ШИМ (широтно-импульсной модуляцией), которую несложно запрограммировать, но эта библиотека упрощает задачу. Пользователь может управлять этими сервоприводами с помощью потенциометров, которые предназначены для работы в качестве делителей напряжения, или из программы на ПК, которая использует 4 ползунка для управления серводвигателями.

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

Шаг 1: Теория, лежащая в основе проекта

Теория, лежащая в основе проекта
Теория, лежащая в основе проекта

Arduino хорош тем, что предлагает бесплатную библиотеку для работы. Для этого проекта я использовал библиотеку Servo.h, которая значительно упрощает управление сервоприводами.

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

Для управления сервоприводами я использовал потенциометры, которые действуют как делители напряжения. На платах Arduino есть несколько аналого-цифровых преобразователей, которые я использовал для своего проекта. В основном arduino контролирует напряжение на среднем контакте потенциометра, и если он вращается в одну сторону, напряжение на нем составляет 0 вольт (значение = 0), а на другой стороне - 5 вольт (значение = 1023). Затем это значение масштабируется от диапазона 0-1023 до 0-180, а затем передается в уже упомянутую функцию.

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

Шаг 2: проектирование печатной платы

Проектирование печатной платы
Проектирование печатной платы
Проектирование печатной платы
Проектирование печатной платы
Проектирование печатной платы
Проектирование печатной платы

Я разработал 2 печатные платы - одну для основного управления, где находится Arduino и контакты для сервоприводов, а на второй - потенциометры. Причина появления двух плат в том, что я хотел управлять роботизированной рукой с безопасного расстояния. Обе цепи соединены кабелем заданной длины - в моем случае 80 см.

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

Шаг 3: Изготовление печатной платы

Изготовление печатной платы
Изготовление печатной платы
Изготовление печатной платы
Изготовление печатной платы
Изготовление печатной платы
Изготовление печатной платы

Для изготовления печатной платы предлагаю вам прочитать это.

Я использовал метод «Утюг на глянцевой бумаге», и он отлично сработал.

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

Шаг 4: проектирование руки

Проектирование руки
Проектирование руки
Проектирование руки
Проектирование руки
Проектирование руки
Проектирование руки

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

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

Шаг 5: Печать деталей

Печать деталей
Печать деталей
Печать деталей
Печать деталей
Печать деталей
Печать деталей

Детали печатались на принтере Prusa. Некоторые грани нужно было немного отшлифовать и просверлить отверстия. Также необходимо было удалить опорные столбы.

Шаг 6: Собираем все вместе

Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе
Собираем все вместе

На этом этапе, как сказано в заголовке, я собрал все вместе.

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

Следующим шагом я сделал плоский ленточный кабель для соединения обеих плат.

В основной коробке я припаял провода от контакта VCC разъема к переключателю, а затем к Vcc платы и от GND платы к GND разъема. Затем я приклеил разъем и плату к стойкам горячим способом. Разъем вставляется прямо в отверстие, поэтому горячий клей не требуется.

Затем с помощью винтов я прикрепил нижний сервопривод к нижней части коробки.

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

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

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

Шаг 7: Программирование Arduino

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

Я уже упоминал, как программа работает в теории, лежащей в основе проекта, но я собираюсь еще больше разобрать ее.

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

Далее идет установка void, в которой определены выводы сервоприводов.

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

Последняя часть программы считывает данные из последовательного порта и решает, что делать, на основе отправленных данных.

Чтобы полностью понять код, я предлагаю вам посетить официальные веб-сайты Arduino.

Шаг 8: Программирование на Python

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

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

Python предлагает множество бесплатных библиотек, но в этом проекте я использую только tkinter и serial. Tkinter используется для графического интерфейса пользователя (GUI), а последовательный, как следует из названия, используется для последовательной связи.

Этот код создает графический интерфейс с 4 ползунками, которые имеют минимальное значение 0 и максимальное 180. Это может быть намек на то, что это в градусах, и каждый ползунок запрограммирован для управления одним сервоприводом. Эта программа довольно проста - она принимает значение и отправляет его в Arduino. Но то, как он отправляется, интересно. Если вы решите изменить значение первого сервопривода на 123 градуса, оно отправит в Arduino значение 1123. Первое число каждого отправленного числа указывает, какой сервопривод будет управляться. У Arduino есть код, который может расшифровать это и переместить правый сервопривод.

Шаг 9: Список деталей

Список частей
Список частей
  • Arduino Pro Mini 1 шт.
  • Сервопривод FS5106B 1 шт.
  • Сервопривод Futaba S3003 2 штуки
  • Заголовок штифт 2x5 1 шт.
  • Заголовок штифт 1x3 6 шт.
  • Конденсатор 220uF 3 штуки
  • Micro Servo FS90 1 шт.
  • Разъем AWP-10 2 шт.
  • Разъем FC681492 1 шт.
  • Переключатель P-B100G1 1 шт.
  • Розетка 2х14 1 шт.
  • TTL-232R-5v - преобразователь 1 шт.
  • Потенциометр B200K 4 шт.
  • и многие другие винты, колодки и гайки

Шаг 10: Заключительные мысли

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

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