Оглавление:
- Шаг 1: Теория, лежащая в основе проекта
- Шаг 2: проектирование печатной платы
- Шаг 3: Изготовление печатной платы
- Шаг 4: проектирование руки
- Шаг 5: Печать деталей
- Шаг 6: Собираем все вместе
- Шаг 7: Программирование Arduino
- Шаг 8: Программирование на Python
- Шаг 9: Список деталей
- Шаг 10: Заключительные мысли
Видео: Роботизированная рука, управляемая Arduino и ПК: 10 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Роботизированные руки широко используются в промышленности. Будь то сборочные операции, Сварка или даже один используется для стыковки с МКС (Международной космической станцией), они помогают людям в работе или полностью заменяют человека. Рука, которую я построил, - это уменьшенное изображение роботизированной руки, которую предполагается использовать для перемещения объектов. Он управляется 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
Я уже упоминал, как программа работает в теории, лежащей в основе проекта, но я собираюсь еще больше разобрать ее.
Итак, вначале нам нужно определить некоторые переменные. В основном он копируется 4 раза, потому что у нас есть 4 сервопривода, и, на мой взгляд, нет необходимости усложнять логику только для того, чтобы сделать программу немного короче.
Далее идет установка void, в которой определены выводы сервоприводов.
Затем есть цикл void - часть программы, которая зацикливается бесконечно. В этой программе обработки детали значение от потенциометра масштабируется и выводится на выходе. Но есть одна проблема в том, что значение потенциометра сильно подскакивает, поэтому мне нужно было добавить фильтр, который вычисляет среднее из последних 5 значений, а затем выводит его. Это предотвращает нежелательное колебание.
Последняя часть программы считывает данные из последовательного порта и решает, что делать, на основе отправленных данных.
Чтобы полностью понять код, я предлагаю вам посетить официальные веб-сайты Arduino.
Шаг 8: Программирование на 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: Заключительные мысли
Спасибо, что прочитали это, и я надеюсь, что по крайней мере мотивировал вас. Это мой первый более крупный проект, который я сделал сам, не копируя материалы из Интернета и первый пост с инструкциями. Я знаю, что руку можно модернизировать, но пока меня это устраивает. Все части и исходные коды бесплатны, вы можете использовать их и изменять как хотите. Если у вас есть вопросы, не стесняйтесь задавать их в комментариях. Вы также можете посмотреть видео, они не в хорошем качестве, но показывают функциональность проекта.
Рекомендуемые:
Роботизированная рука, управляемая Arduino, с 6 степенями свободы: 5 шагов (с изображениями)
Роботизированная рука, управляемая Arduino, с 6 степенями свободы: я являюсь членом группы робототехники, и каждый год наша группа участвует в ежегодной ярмарке Mini-Maker Faire. Начиная с 2014 года, я решил строить новый проект для каждого ежегодного мероприятия. В то время у меня было около месяца до мероприятия, чтобы что-то сложить
Роботизированная рука, управляемая Arduino из Lego Mindstorm: 6 шагов
Роботизированная рука, управляемая Arduino из Lego Mindstorm: перепрофилируйте два старых мотора Lego Mindstorm в захватную руку, управляемую Arduino Uno. Это проект Hack Sioux Falls, в котором мы предлагали детям создать что-нибудь крутое с помощью Arduino
Роботизированная рука, управляемая Nunchuk (с Arduino): 14 шагов (с изображениями)
Роботизированная рука, управляемая Nunchuk (с Arduino): Роботизированная рука - это круто! Они есть на заводах по всему миру, где с точностью красят, паяют и перевозят вещи. Их также можно найти в космических исследованиях, подводных аппаратах с дистанционным управлением и даже в медицине! А теперь вы можете
Роботизированная рука, управляемая перчаткой: 6 шагов (с изображениями)
Роботизированная рука, управляемая перчаткой: цель: получить опыт и навыки решения проблем, создав проект для завершения. Каждое из сочленений на руке с трехмерной печатью имеет сервопривод, который
Беспроводная роботизированная рука, управляемая жестами и голосом: 7 шагов (с изображениями)
Беспроводная роботизированная рука, управляемая жестом и голосом: В основном это был проект нашего колледжа, и из-за нехватки времени на его отправку мы забыли сфотографировать некоторые шаги. Мы также разработали код, с помощью которого можно управлять этой роботизированной рукой, используя жест и голос одновременно, но из-за того, что я