Съдържание:
- Консумативи
- Стъпка 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 07:52
Това е урок за това как да направите ръка на робот, контролирана от проводници. Предимството на използването на проводници е, че ръката ви е по -лека и можете да имате всичките си двигатели в долната част на ръката, което улеснява изграждането и поддръжката. Ето видео на ръката в действие. Планирам да добавя нокът в бъдеще, за да може да вземе нещата, а не просто да ги бута.
3D разпечатки:
Тук и Тук
Консумативи
6 серво мотора (MG995)
Arduino Uno
Около 6 метра пластмасова стоманена тел (0,5 мм)
Кутия 23x33x10 (може да е по -тясна, определено не трябва да бъде по -къса)
Дървена дъска 33x10
Гайки и болтове
Тръба 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
Обработка и Arduino
Стъпка 20: Поставете кодовите програми
Кодът е в долната част на тази страница
Стъпка 21: Свържете контролните щифтове на серво към Arduino
Свързах първия двигател към третия цифров щифт, втория двигател към четвъртия цифров извод и така нататък. Уверете се, че заземителният щифт все още е свързан към - клемния блок.
Стъпка 22: Натиснете бутона за нулиране при обработка, това ще настрои всички оръжия на 90 градуса
Стъпка 23: Хоризонтално фиксирайте серво раменете към двигателя
Стъпка 24: Прокарайте проводниците през ръцете, така че да няма провисване
Уверете се, че прокарате проводника през възможно най -много отвори, това ще го задържи временно и ще бъде лесно да се отстрани.
Стъпка 25: Тествайте ръката и затегнете или разхлабете проводниците според нуждите
Стъпка 26: Горещо залепете проводниците към серво рамото, за да го направите постоянен
Стъпка 27: Бележки
Използвах 0,5 мм бижута тел, но 0,4 мм трябва да е наред. Оригиналният дизайн използва PVC тел, но това се счупи твърде лесно и беше трудно да се работи с него.
Ако ще движите ръката в кола или велосипед, увийте ставите на ръцете в лента, за да сте сигурни, че не изскачат. Това е особено важно за елемент 1.
Когато стартирах този проект, се чудех защо мога да намеря само един урок за това как да направя ръка, контролирана от проводници. Сега разбирам защо това не е най -често срещаният начин да си направите ръка за хоби робот. Проводниците понякога изпадат от жлебовете си и всичко е някак слабо. Не знам дали проблемите са, защото нямам много опит или цялата идея е проблемна, въпреки че съм сигурен, че би било по -солидно, ако знаех какво правя.
Стъпка 28: Отстраняване на неизправности
Отворите за тел се затварят в 3D печатните елементи:
Добавихте поддръжка за целия елемент вместо само за отворите за болтове. Или отпечатайте отново елемента или отворете дупките с наистина гореща игла.
COM портът е затворен, не можете да комуникирате с arduino:
Вашият arduino може да не приема USB 3 портове (моят не), можете или да закупите USB 2 удължителен кабел или да използвате компютър, който има USB 2 портове
Кодът не работи:
Следвайте този урок и го променете, за да направите свой собствен код
Част от ръката не се движи:
Проводниците може да са се заплели, за да проверите това, свалете серво рамото от сервото и опитайте да издърпате проводниците на ръка. Разплетете проводниците и ако все още е трудно да издърпате проводниците, опитайте да използвате WD-40 или смазка, за да улесните движението
Стъпка 29: Връзки
Нероботизирана ръка:
Arm 3D разпечатки:
Моята ръка 3D за печат:
Arduino и обработка:
Стъпка 30: Код
Променено от този код
Код на Arduino:
#include // Декларирайте двигателите Servo myservo1; Серво myservo2; Серво myservo3; Серво myservo4; Серво myservo5; Серво myservo6; // Всички двигатели са настроени на 90 градуса по подразбиране int current1 = 90; int ток2 = 90; int ток3 = 90; int current4 = 90; int ток5 = 90; int ток6 = 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 градусиFoward = 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 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// ако има данни за четене char val = Serial.read (); // поставете го в този знак // Моторни контроли if (val == 'a' && current1 + градусиFoward mini1) {myservo1.write (current1 - градусиFoward); ток1 = ток1 - градуси Напред; забавяне (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - градусиFoward); current2 = current2 - градуси Напред; забавяне (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - градусиFoward); ток3 = ток3 - градуси Напред; забавяне (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - градусиFoward); current4 = current4 - градуси Напред; забавяне (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - градуси напред); current5 = current5 - градуси Напред; забавяне (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - градуси напред); current6 = current6 - градуси Напред; забавяне (delayBetweenSteps); } // Контрол на скоростта if (val == 'w') {// Ако бутонът за скорост 1 е натиснат градусиFoward = 1; забавяне (delayBetweenSteps); } if (val == 'x') {// Ако бутонът за скорост 5 е натиснат градусиFoward = 5; забавяне (delayBetweenSteps); } if (val == 'y') {// Ако бутонът за скорост 10 е натиснат градусиFoward = 10; забавяне (delayBetweenSteps); } if (val == 'z') {// Ако бутонът за скорост 20 е натиснат градусиFoward = 20; забавяне (delayBetweenSteps); } if (val == 'r') {// Ако бутонът за скорост 20 е натиснат myservo1.write (90); ток1 = 90; myservo2.write (90); ток2 = 90; myservo3.write (90); ток3 = 90; myservo4.write (90); ток4 = 90; myservo5.write (90); ток5 = 90; myservo6.write (90); ток6 = 90; забавяне (delayBetweenSteps); }}}
Код за обработка:
обработка на внос.serial.*; контрол на вносаP5.*; // импортиране на библиотека ControlP5 Сериен порт; ControlP5 cp5; // създаване на шрифт PFont на обект ControlP5; void setup () {// същото като размера на програмата arduino (300, 700); // размер на прозореца, (ширина, височина) printArray (Serial.list ()); // отпечатва всички налични серийни портове // Ако имате проблем, вероятно идва от тук String portName = Serial.list () [0]; port = нов сериен (това, portName, 9600); // свързах arduino към com3, би било различно в linux и mac os // позволява добавяне на бутон към празния прозорец cp5 = нов ControlP5 (това); font = createFont ("Arial", 13); // персонализирани шрифтове за бутони и заглавие // Бутони за контрол на скоростта cp5.addButton ("One") // "One" е името на бутона.setPosition (50, 50) // x и y координати на горния ляв ъгъл на бутона.setSize (55, 25) // (ширина, височина).setFont (шрифт); cp5.addButton ("Пет").setPosition (110, 50).setSize (55, 25).setFont (шрифт); cp5.addButton ("Десет").setPosition (170, 50).setSize (55, 25).setFont (шрифт); cp5.addButton ("Twenty").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 (шрифт); 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 (шрифт); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (шрифт); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (ширина, височина).setFont (шрифт); 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) // Добавяне на текст, който казва, че контролът на скоростта е запълване на контрол на скоростта (0, 10, 25); // цвят на текста (r, g, b) textFont (шрифт); текст ("Контрол на скоростта", 50, 40); // ("текст", x координата, y координата)} // позволява да добавим някои функции към нашите бутони // така че когато натиснете който и да е бутон, той изпраща конкретен символ през сериен порт // Сигурен съм, че е възможно да се изпращат низове вместо символи и би имало повече смисъл, но не знам как да го направя // Команди за контрол на скоростта void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Команди за управление на двигателя void Servo_1_Foward () {port.write ('a'); } void Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } void Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } void Servo_3_Back () {port.write ('f'); } void Servo_4_Foward () {port.write ('g'); } void Servo_4_Back () {port.write ('h'); } void Servo_5_Foward () {port.write ('i'); } void Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } void Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }
Стъпка 31: Още снимки
Препоръчано:
Роботизирана ръка за гласово управление: 4 стъпки
Роботизирана ръка за гласово управление: Създадох роботизирана ръка, която ще работи с вашата гласова команда. Ръката на робота се управлява с естествено свързано речево въвеждане. Езиковото въвеждане позволява на потребителя да взаимодейства с робота по начин, който е познат на повечето хора. Адвансът
RGB-LED телено дърво: 9 стъпки (със снимки)
RGB-LED Wire Tree: Искам да споделя с вас моето RGB-LED дърво. Една вечер си спомних да строя телени дървета като дете. В днешно време наистина се радвам да изграждам малки електронни проекти с микроконтролери, подобни на arduino, особено със светодиоди. Затова си помислих
Махнете с ръка, за да контролирате роботизираната ръка на OWI Без прикачени низове: 10 стъпки (със снимки)
Махнете с ръка, за да контролирате роботизираната ръка на OWI … Без прикачени низове: ИДЕЯТА: Има поне 4 други проекта на Instructables.com (към 13 май 2015 г.) около модифицирането или контрола на роботизираната ръка на OWI. Не е изненадващо, тъй като това е толкова страхотен и евтин роботизиран комплект за игра. Този проект е подобен в
КАК ДА СЕ СБОРЯ ВРЕМЕННА ДЪРВЕНА РОБОТНА РЪКА (ЧАСТ 3: РОБОТНА РЪКА) - НА ОСНОВА НА МИКРО: BITN: 8 стъпки
КАК ДА СЕ СБОРЯ ВРЕМЕННА ДЪРВЕНА РОБОТНА РЪКА (ЧАСТ 3: РОБОТНА РЪКА) - НА ОСНОВА НА МИКРО: BITN: Следващият процес на инсталиране се основава на завършването на режима за избягване на препятствия. Процесът на инсталиране в предишния раздел е същият като процеса на инсталиране в режим на проследяване на линии. Тогава нека да разгледаме окончателната форма на A
Трета ръка ++: Многофункционална помощна ръка за електроника и друга деликатна работа .: 14 стъпки (със снимки)
Трета ръка ++: Многофункционална помощна ръка за електроника и други деликатни работи. Никога не успях да получа клиповете точно там, където ги исках, или ми отне повече време, отколкото наистина трябваше, за да се инсталира