Оглавление:
- Запасы
- Шаг 1. Распечатайте все 3D-компоненты
- Шаг 2: (Необязательно) Прикрепите деревянную доску к нижней части коробки, чтобы укрепить ее
- Шаг 3: Измерьте и отрежьте деревянную доску по размеру коробки
- Шаг 4: Отметьте положения моторов
- Шаг 5: Отметьте положения кронштейнов и трубы
- Шаг 6. Просверлите отверстие для кабелей, выходящих из коробки (USB и питание)
- Шаг 7: просверлите и распилите все отмеченные отверстия
- Шаг 8: прикрепите моторы и трубу к доске
- Шаг 9: прикрепите планку к коробке с помощью L-образных скоб
- Шаг 10: возьмите клеммные колодки и спаяйте провода вместе
- Шаг 11. Обрежьте конец шнура питания адаптера и зачистите провода
- Шаг 12: Найдите и пометьте плюсовой и минусовой провода
- Шаг 13: Подсоедините провода к клеммным колодкам так, чтобы все + сервопроводы и + провод от шнура питания были подключены, то же самое касается - проводов
- Шаг 14: Отрежьте голову от провода макета
- Шаг 15: Просверлите три отверстия в нижней части коробки для проводов, выходящих из вашей руки
- Шаг 16: прикрепите базовый соединитель к коробке
- Шаг 17: используйте нож или пилку, чтобы сделать канавки для проволоки глубже
- Шаг 18: конструируйте руку
- Шаг 19: установите Processing и Arduino
- Шаг 20: Вставьте код программы
- Шаг 21: Подключите выводы сервоуправления к Arduino
- Шаг 22: нажмите кнопку сброса в процессе обработки, это установит все руки на 90 градусов
- Шаг 23: закрепите сервомеханизмы на двигателе горизонтально
- Шаг 24. Проденьте провода через руки, чтобы не было провисания
- Шаг 25: проверьте рычаг и затяните или ослабьте провода по мере необходимости
- Шаг 26: приклейте провода к сервоприводам горячим способом, чтобы сделать их прочными
- Шаг 27: Примечания
- Шаг 28: Устранение неполадок
- Шаг 29: ссылки
- Шаг 30: Код
- Шаг 31: дополнительные изображения
Видео: Рука робота с проводным управлением: 31 шаг
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Это руководство о том, как сделать манипулятор робота управляемым с помощью проводов. Преимущество использования проводов заключается в том, что ваша рука легче, и вы можете разместить все двигатели в нижней части руки, что упрощает сборку и обслуживание. Вот видео руки в действии. Я планирую добавить коготь в будущем, чтобы он мог подбирать вещи, а не просто толкать их.
3D-распечатки:
Здесь и здесь
Запасы
6 серводвигателей (MG995)
Ардуино Уно
Около 6 метров стальной проволоки с пластиковым покрытием (0,5 мм)
Коробка 23х33х10 (может и уже, короче точно не должно)
Доска деревянная 33х10
Гайки и болты
Трубка 14 см (нужна для направления струн)
4 L-образных кронштейна
Адаптер на 5 вольт
2 7-контактных клеммных колодки
Макетные провода
Компоненты, напечатанные на 3D-принтере (не мной, ссылки на элементы в описании):
3 «Болта»
2 «Элемент 1»
1 «Элемент 2»
2 «Элемент 3»
1 базовый разъем
Шаг 1. Распечатайте все 3D-компоненты
Вам может понадобиться опора для отверстий под болты и арок, но не добавляйте опоры к корпусу ваших компонентов; это закроет маленькие отверстия от проволоки, и вам нужно будет проделать новые.
Шаг 2: (Необязательно) Прикрепите деревянную доску к нижней части коробки, чтобы укрепить ее
Моя коробка была довольно слабой, твоя может и не быть
Шаг 3: Измерьте и отрежьте деревянную доску по размеру коробки
Шаг 4: Отметьте положения моторов
убедитесь, что руки не касаются друг друга
Шаг 5: Отметьте положения кронштейнов и трубы
Трубку следует поместить примерно на один сантиметр перед отверстием.
Шаг 6. Просверлите отверстие для кабелей, выходящих из коробки (USB и питание)
Шаг 7: просверлите и распилите все отмеченные отверстия
Шаг 8: прикрепите моторы и трубу к доске
Шаг 9: прикрепите планку к коробке с помощью L-образных скоб
Шаг 10: возьмите клеммные колодки и спаяйте провода вместе
Шаг 11. Обрежьте конец шнура питания адаптера и зачистите провода
Шаг 12: Найдите и пометьте плюсовой и минусовой провода
Шаг 13: Подсоедините провода к клеммным колодкам так, чтобы все + сервопроводы и + провод от шнура питания были подключены, то же самое касается - проводов
Шаг 14: Отрежьте голову от провода макета
Присоедините зачищенный конец провода макета к минусовой клеммной колодке, а конец штыря - к контакту заземления в вашем Arduino. Если вы этого не сделаете, двигатели будут беспорядочно вращаться без каких-либо действий.
Шаг 15: Просверлите три отверстия в нижней части коробки для проводов, выходящих из вашей руки
Отверстия должны совпадать с отверстиями в базовом соединителе.
Шаг 16: прикрепите базовый соединитель к коробке
Шаг 17: используйте нож или пилку, чтобы сделать канавки для проволоки глубже
Канавки для проволоки для элементов 2 и 3 слишком мелкие.
Шаг 18: конструируйте руку
Соберите руку в соответствии с приведенными здесь инструкциями, возможно, вам потребуется подпилить детали, чтобы они соответствовали друг другу.
Шаг 19: установите Processing и Arduino
Обработка и Ардуино
Шаг 20: Вставьте код программы
Код находится внизу этой страницы
Шаг 21: Подключите выводы сервоуправления к Arduino
Я подключил первый двигатель к третьему цифровому выводу, второй двигатель к четвертому цифровому выводу и так далее. Убедитесь, что контакт заземления все еще подключен к клеммной колодке -.
Шаг 22: нажмите кнопку сброса в процессе обработки, это установит все руки на 90 градусов
Шаг 23: закрепите сервомеханизмы на двигателе горизонтально
Шаг 24. Проденьте провода через руки, чтобы не было провисания
Убедитесь, что вы продеваете проволоку через как можно больше отверстий, это временно удержит ее, и ее будет легко удалить.
Шаг 25: проверьте рычаг и затяните или ослабьте провода по мере необходимости
Шаг 26: приклейте провода к сервоприводам горячим способом, чтобы сделать их прочными
Шаг 27: Примечания
Я использовал ювелирную проволоку 0,5 мм, но 0,4 мм должно подойти. В первоначальной конструкции использовалась проволока из ПВХ, но она слишком легко ломалась, и с ней было трудно работать.
Если вы собираетесь перемещать руку в машине или велосипеде, оберните суставы рук лентой, чтобы они не выскочили. Это особенно важно для элемента 1.
Когда я начинал этот проект, мне было интересно, почему я смог найти только одно руководство о том, как сделать руку управляемой с помощью проводов. Теперь я понимаю, почему это не самый распространенный способ сделать руку робота для хобби. Провода иногда выпадают из канавок, и все получается хлипким. Я не знаю, связаны ли проблемы с тем, что у меня нет большого опыта, или вся идея проблематична, хотя я уверен, что было бы более убедительно, если бы я знал, что делаю.
Шаг 28: Устранение неполадок
Отверстия для проводов в 3D-печатных элементах заделаны:
Вы добавили опору для всего элемента, а не только для отверстий под болты. Либо перепечатайте элемент, либо раскройте отверстия очень горячей иглой.
COM-порт закрыт, вы не можете общаться с ардуино:
Ваш arduino может не принимать порты USB 3 (у меня не было), вы можете купить удлинительный кабель USB 2 или использовать компьютер с портами USB 2.
Код не работает:
Следуйте этому руководству и измените его, чтобы создать свой собственный код.
Часть руки не двигается:
Провода могли запутаться, чтобы проверить это, снимите сервомеханизм с сервопривода и попробуйте потянуть за провода рукой. Распутайте провода и, если тянуть за провода по-прежнему сложно, попробуйте использовать немного WD-40 или смазку, чтобы облегчить движение.
Шаг 29: ссылки
Не роботизированная рука:
3D-распечатки Arm:
3D-печать My Arm:
Arduino и обработка:
Шаг 30: Код
Изменено из этого кода
Код Arduino:
#include // Объявление двигателей Servo myservo1; Серво myservo2; Сервомашинка3; Сервомашинка4; Серво myservo5; Сервомашинка6; // Все двигатели по умолчанию установлены под углом 90 градусов int current1 = 90; int current2 = 90; int current3 = 90; int current4 = 90; int current5 = 90; int current6 = 90; // Минимальный и максимальный градусы, которых могут достичь двигатели int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // Градусы, которые должны быть добавлены или вычтены из текущей позиции int sizesFoward = 5; // Задержка, чтобы две функции не выполнялись в неправильном порядке int delayBetweenSteps = 100; void setup () {// Устанавливаем контрольные штифты для каждого двигателя myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Устанавливаем для всех моторов настройки по умолчанию myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // запуск последовательной связи при 9600 бит / с Serial.begin (9600); } void loop () {if (Serial.available ()) {// если данные доступны для чтения char val = Serial.read (); // помещаем его в этот символ // Управление двигателем if (val == 'a' && current1 + degFoward mini1) {myservo1.write (current1 - degFoward); current1 = current1 - градусы вперед; задержка (задержка между шагами); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - градусы вперед); current2 = current2 - градусы вперед; задержка (задержка между шагами); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - градусы вперед); current3 = current3 - градусы вперед; задержка (задержка между шагами); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - градусы вперед); current4 = current4 - градусы вперед; задержка (задержка между шагами); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - градусы вперед); current5 = current5 - градусы вперед; задержка (задержка между шагами); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - градусы вперед); current6 = current6 - градусы вперед; задержка (задержка между шагами); } // Управление скоростью if (val == 'w') {// Если нажата кнопка скорости 1, градусовFoward = 1; задержка (задержка между шагами); } if (val == 'x') {// Если нажата кнопка скорости 5 градусовFoward = 5; задержка (задержка между шагами); } if (val == 'y') {// Если нажата кнопка скорости 10 градусовFoward = 10; задержка (задержка между шагами); } if (val == 'z') {// Если нажата кнопка скорости 20 градусовFoward = 20; задержка (задержка между шагами); } if (val == 'r') {// Если нажата кнопка скорости 20 myservo1.write (90); current1 = 90; myservo2.write (90); current2 = 90; myservo3.write (90); current3 = 90; myservo4.write (90); current4 = 90; myservo5.write (90); current5 = 90; myservo6.write (90); current6 = 90; задержка (задержка между шагами); }}}
Код обработки:
import processing.serial. *; контроль импорта P5. *; // импортировать библиотеку ControlP5 Последовательный порт; ControlP5 cp5; // создать объект ControlP5 PFont font; void setup () {// то же, что и размер программы arduino (300, 700); // размер окна, (ширина, высота) printArray (Serial.list ()); // распечатывает все доступные последовательные порты // Если у вас возникла проблема, она, вероятно, исходит отсюда String portName = Serial.list () [0]; порт = новый последовательный (this, portName, 9600); // я подключил arduino к com3, в linux и mac os все будет по-другому // давайте добавим кнопку в пустое окно cp5 = new ControlP5 (this); font = createFont («Arial», 13); // настраиваемые шрифты для кнопок и заголовка // Кнопки управления скоростью cp5.addButton ("One") // "One" - это имя кнопки.setPosition (50, 50) // Координаты x и y верхнего левого угла кнопки.setSize (55, 25) // (ширина, высота).setFont (font); cp5.addButton ("Пять").setPosition (110, 50).setSize (55, 25).setFont (шрифт); cp5.addButton ("Десять").setPosition (170, 50).setSize (55, 25).setFont (шрифт); cp5.addButton ("Двадцать").setPosition (230, 50).setSize (55, 25).setFont (шрифт); cp5.addButton ("Сброс").setPosition (110, 2).setSize (55, 25).setFont (шрифт); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (шрифт); // Кнопки управления двигателем cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (шрифт); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (шрифт); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (шрифт); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (ширина, высота).setFont (font); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (шрифт); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (ширина, высота).setFont (font); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (шрифт); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (шрифт); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (шрифт); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (шрифт); } void draw () {// то же, что и цикл в фоновом режиме Arduino (192, 215, 249); // цвет фона окна (r, g, b) или (от 0 до 255) // Добавить текст, говорящий, что управление скоростью - это управление скоростью fill (0, 10, 25); // цвет текста (r, g, b) textFont (font); текст («Контроль скорости», 50, 40); // ("текст", координата x, координата y)} // позволяет добавить некоторые функции к нашим кнопкам // поэтому, когда вы нажимаете любую кнопку, он отправляет определенный символ через последовательный порт // Я уверен, что можно отправлять строки вместо символов, и это имело бы смысл, но я не знаю, как это сделать // Команды управления скоростью void One () {port.write ('w'); } void Five () {порт.write ('x'); } void Ten () {port.write ('у'); } void Twenty () {порт.write ('z'); } // Команды управления двигателем void Servo_1_Foward () {port.write ('a'); } void Servo_1_Back () {порт.write ('б'); } void Servo_2_Foward () {порт.write ('c'); } void Servo_2_Back () {порт.write ('d'); } void Servo_3_Foward () {порт.write ('е'); } void Servo_3_Back () {порт.write ('е'); } void Servo_4_Foward () {порт.write ('g'); } void Servo_4_Back () {порт.write ('ч'); } void Servo_5_Foward () {порт.write ('я'); } void Servo_5_Back () {порт.write ('j'); } void Servo_6_Foward () {порт.write ('k'); } void Servo_6_Back () {порт.write ('l'); } void Reset () {порт.write ('r'); }
Шаг 31: дополнительные изображения
Рекомендуемые:
Рука робота с голосовым управлением: 8 шагов (с изображениями)
Рука робота с голосовым управлением: a.articles {font-size: 110.0%; font-weight: жирный; стиль шрифта: курсив; текстовое оформление: нет; background-color: red;} a.articles: hover {background-color: black;} В этом руководстве объясняется, как создать роботизированную руку с голосовым управлением, используя
Робот с проводным дистанционным управлением: 4 шага
Робот с проводным дистанционным управлением: Содержание 1.Введение.2.Компоненты и компоненты. его технические характеристики. 3. Как подключить двигатель к шасси. 4.Как подключить переключатель DPDT к двигателям и усилителям; Батарея.1.Введение. Ручной робот - это тип манипуляционной роботизированной системы, которая требует полного гудения
Роботизированная рука Arduino своими руками, шаг за шагом: 9 шагов
Роботизированная рука Arduino своими руками, шаг за шагом: в этом руководстве вы узнаете, как собрать робот-руку самостоятельно
Третья рука ++: универсальная рука помощи для электроники и других деликатных работ: 14 шагов (с изображениями)
Третья рука ++: Многофункциональная рука помощи для электроники и другой деликатной работы. Раньше я использовал третьи руки / руки помощи, доступные в сетевых магазинах электроники, и был разочарован их удобством использования. Мне никогда не удавалось получить клипы именно там, где я хотел, или на настройку уходило больше времени, чем следовало бы
Как построить своего первого робота (85 долларов): 21 шаг (с изображениями)
Как собрать своего первого робота (85 долларов): Я СОЗДАЛ НОВУЮ И ОБНОВЛЕННУЮ ВЕРСИЮ ЭТОГО. ПОЖАЛУЙСТА, НАЙДИТЕ ЕГО ЗДЕСЬ https://www.instructables.com/id/How-to-make-your-first-robot-an-actual-programma/ **************** ************************************************ ************** Обновление: Некоторым 1