Съдържание:

Роботизирана ръка Arduino: 5 стъпки
Роботизирана ръка Arduino: 5 стъпки

Видео: Роботизирана ръка Arduino: 5 стъпки

Видео: Роботизирана ръка Arduino: 5 стъпки
Видео: Lesson 77: Using VL53L0X 200cm Laser Distance Sensor | Arduino Step By Step Course 2024, Юли
Anonim
Image
Image
Роботизирана ръка Arduino
Роботизирана ръка Arduino
Роботизирана ръка Arduino
Роботизирана ръка Arduino

Тъй като това е първият ми проект след 15 -те урока на моя стартов комплект Arduino, истинската цел на него е да получа някои критици, съвети, предложения, идеи от всеки, който знае повече от мен.

Този проект е за роботизирана ръка, с 4 dofs и хватка. С прилично нисък бюджет: структурата е отрязана от приятел, 4 -те сервомотора са били 30 €, 2 -те джойстика 4 €, болтове за винтове и т.н.) вече беше включен в моя стартов комплект. За общо 40-45 €, което е около 45-50 щатски долара (същата цена на комплект за ръкохватка, но хей, беше забавно да се налага да го изграждам сам (и да бъркам нещо от време на време) и да не следвате инструкциите като машина).

Тъй като това беше първият ми проект и Instructable, участвах в „First Time Author“и няколко други конкурса, така че ако ви харесва, гласувайте:)

Стъпка 1: ПРОЕКТИРАНЕ И МОНТАЖ:

Първо имах нужда от структура: Това определено беше най -дългата част. Тъй като не исках да копирам и поставям проекта от някой друг, взех един проект за референция и аз (и още няколко квалифицирани съученици, които наистина ме спасиха) започна да го модифицира според нашите нужди (различни сервомотори с различен въртящ момент, тегло и размери и т.н.). Трябваше да го изградя няколко пъти, всеки от тях открих нещо нередно и трябваше да изрежем някои парчета и да опитаме отново. Прикачих файла.dxf в случай, че искате да го използвате. След това трябваше да купя електрониката: Повечето части бяха стандартни, трудната част беше да изберете сервомоторите. Изчислих необходимия въртящ момент с основното правило, по -късно опитах по -точно изчисление и разбрах, че може би съм го преувеличил малко. Очевидно 6 кг/см биха били достатъчни за второто серво (от основата), а моето осигурява 9-11 кг/см. Е, това ми дава известна безопасност и възможност да натоваря до 2 кг товар (което е невъзможно, но ми харесва, че бих могъл да го направя технически). Можех да си купя и различни сервомотори, с намаляващ въртящ момент, докато се отдалечавам от основата, но закупуването на идентични сервомотори от същия доставчик беше далеч най -евтиният вариант. 350mA и микросерво 9g черпи 100mA, за общо 350*4 +100 = 1500mA. Така че спасих зарядно устройство (6V 1.5A) и запоях към него две джъмперни жици. (Ако някои от вас може да се нуждаят от реални инструкции, просто попитайте в коментарите и аз ще направя всичко възможно да създам стъпка по стъпка ръководство) Списък на материалите:- Структура- M5x7cm винт x5, m5 болтове x15 (основа)- M3x16mm винт x18*- M3x20mm винт x13*- M3 болтове x40*- M3x8cm винт x3- скоба (в противен случай ще падне)- 3 дюбели- Arduino (или нещо друго, за да го контролирате, трябва да има поне 5 PWM)- Нещо, което да захранва 5-6V и поне 1.5A- 3x ps2-подобни джойстици- 4x TowerPro mg995 сервомонти- 1x TowerPro 9g микросерво (за захващане) - Много джъмперни проводници - Древна дъска*(Използвах болтове и винтове, за да мога да сглобявам и разглобявам бързо, в противен случай бихте могли да ги замените почти всички с винтове за дърво)

Стъпка 2: КОД:

Идеята е да се управлява всяко серво с една от двете оси на ps2-подобен джойстик. Всеки джойстик изглежда има различни „стойности на почивка“(стойността между 0-1023, когато е неподвижна) както за оста y, така и за x. беше проблем, тъй като разликата беше почти малка (една имаше нула на y при 623) и исках да използвам функцията map за преобразуване от 0-1023 в градуси. Но функцията на картата смята, че стойността на покой е 1023/2. Което доведе до всяко серво, което се движи веднага щом включа Arduino, не е добре. Успях да заобиколя това, като открих ръчно разликата между стойността на четене и всяка различна стойност на почивка (която изчислих отделно за всеки джойстик), след това до направих кода по -кратък и по -умен, накарах го да прочете останалите стойности във функцията за настройка и да ги запише в някои променливи. Новият алгоритъм разчита на преобразуване на приращението в градуси, но аз исках много ниско количество градуси за моето увеличение Трябваше да го разделя за константа: Опитах много стойности, докато стигнах до последните 200 (мога да добавя потенциометър, за да променя ръчно тази стойност на желаната). Останалата част от кода е доста стандартна, предполагам, въпреки че може да е по -елегантно да поставите изчислението на приращението в отделна функция.

Стъпка 3: ЕЛЕКТРОНИКА:

ЕЛЕКТРОНИКА
ЕЛЕКТРОНИКА

Окабеляването е същото, както е показано на снимката или файла за пресукване: сигнал от серво към щифтове: 5-6-9-10-11 и ос на джойстика към аналогични щифтове: A0-A1-A2-A3-A4 Основният проблем, с който се сблъсках беше, че джойстиците трябваше да се доставят от Arduino, а НЕ от зарядното устройство, което използвам за сервомоторите. В противен случай сервото просто ще полудее, движейки се на случаен принцип напред -назад. Мисля, че това може да се дължи на факта, че ако им доставя зарядното устройство, Arduino няма да може да каже точно разликата в потенциала, когато ги преместя, но след това отново: Аз съм много нов в електрониката, така че това е само предположение. Свързването на земята Arduino и зарядното място през макета помогна за предотвратяване на случайни и неочаквани движения, поради подобна причина на предлагането на джойстици.

Стъпка 4: В МОМЕНТА ПОДОБРЯВАНЕ:

В МОМЕНТА ПОДОБРЯВАНЕ
В МОМЕНТА ПОДОБРЯВАНЕ

Тъй като всеки джойстик може да управлява 2 серво (по 1 на ос), имам нужда от 3 серво, за да контролирам цялата ръка, но за щастие имам само 2 палци. захващане и отваряне-затваряне на ръкохватката, за общо 4 оси, 2 джойстика и 2 палци! Разбрах, че този проблем е добре известен като обратна кинематика, също така разбрах, че е почти лесно. Идеята е да напишете (нелинейни) уравнения, за да намеря състоянието на всеки ефектор (ъгли за сервоустройствата), като се има предвид крайната позиция. Качих ръчно написана хартия с уравненията и в момента работя по нов код, за да ги използвам. Не би трябвало да е твърде трудно, по принцип трябва да прочета джойстиците, да използвам техните показания, за да променя xyz координатите на захвата, а след това да ги дам на моите уравнения, да изчисля ъглите на серво и да ги напиша.

Стъпка 5: Бъдещи подобрения:

Така че, аз съм доста доволен от резултата и като се има предвид, че съм напълно нов в електрониката, ако не издухвам нещо или аз самият вече беше огромна победа. Както казах в началото, всяка идея за бъдещи подобрения, както софтуерни, така и хардуер, е повече от добре дошъл! Досега мислех за: 1. Потенциометърът за промяна на „чувствителността“на джойстиците. Нов код, който да го накара да „запише“някои движения и да ги направи отново (може би по -бързо и по -кратко от човешкото въвеждане) 3. Някакъв вид визуално/дистанционно/гласово въвеждане и възможност за получаване на обекти без някой да използва джойстика4. Възможност за рисуване на геометрични фигури Някаква друга идея? Моля, не се колебайте да коментирате с всякакви предложения. Благодаря

Препоръчано: