Съдържание:

Arduino контролирана роботизирана ръка W/ 6 степени на свобода: 5 стъпки (със снимки)
Arduino контролирана роботизирана ръка W/ 6 степени на свобода: 5 стъпки (със снимки)

Видео: Arduino контролирана роботизирана ръка W/ 6 степени на свобода: 5 стъпки (със снимки)

Видео: Arduino контролирана роботизирана ръка W/ 6 степени на свобода: 5 стъпки (със снимки)
Видео: Leap Motion SDK 2024, Юли
Anonim
Arduino контролирана роботизирана ръка W/ 6 степени на свобода
Arduino контролирана роботизирана ръка W/ 6 степени на свобода
Arduino контролирана роботизирана ръка W/ 6 степени на свобода
Arduino контролирана роботизирана ръка W/ 6 степени на свобода
Arduino контролирана роботизирана ръка W/ 6 степени на свобода
Arduino контролирана роботизирана ръка W/ 6 степени на свобода

Член съм на група по роботика и всяка година нашата група участва в ежегоден панаир на Mini-Maker. В началото на 2014 г. реших да изградя нов проект за всяка година. По това време имах около месец преди събитието да сглобя нещо и нямах представа какво искам да направя.

Един колега публикува връзка към „интересна роботизирана ръка с отворен код“, която достигна върха ми. Плановете бяха просто ръка без контрол или контролер. Като се има предвид моето ограничение във времето, това изглеждаше като наистина добра отправна точка. Единственият проблем беше, че наистина нямах инструменти, за да започна.

С помощта на някои от членовете на групата успях да изрежа и изпратя акрилните части, както и двете 3D отпечатани части, показани по -долу. В комбинация с няколко поръчки за хардуер за една нощ и няколко пътувания до местния магазин за хардуер, завърших работен проект нощта преди събитието!

Както обикновено се случва, има още нещо в историята и няколко превъплъщения в изграждането, което е съкратено до това, което виждате по -долу. Ако се интересувате от задната история, повече можете да намерите тук:

Стъпка 1: Какво ви трябва - Хардуер и електроника

Какво ви трябва - хардуер и електроника
Какво ви трябва - хардуер и електроника
Какво ви трябва - хардуер и електроника
Какво ви трябва - хардуер и електроника

Първоначалният дизайнер на проекта е живял в Европа и впоследствие е използвал метрични измервания и общи материали там. Например пресата, която използва за тялото, е стандарт с дебелина 5 мм. Подобен материал тук в САЩ е 1/8 , който е с дебелина около 3,7 мм. Това остави празнина в отворите, които първоначално бяха проектирани да бъдат монтирани с преса. Вместо да коригирам чертежите, просто използвах Gorilla Glue за закрепване на тези фуги.

Той също така използва гайки и болтове с резба M3, които не са стандартни в местния магазин за хардуер в САЩ. Вместо да ги конвертирам в локално налични опции, просто поръчах хардуера онлайн, както е показано в списъка ми с части по -долу.

  • 22 - Стойки M3 x 0,5 x 23 mm
  • 15 - дистанционни елементи M3 x 15 mm
  • 40 - Винтове M3
  • Шестоъгълни гайки M3
  • M3 25 мм винтове
  • 1 - Пролет
  • 3/4 "двустранна монтажна лента
  • 5 - SG 5010 TowerPro Servo
  • 1 - SG92R TowerPro мини серво
  • 1 - Мини серво SG90 TowerPro
  • 2,54 мм Едноредов прав щифт за глава
  • 1 - Половин размер платка
  • 1 - Женски/мъжки „удължителни“проводници - 40 x 6"
  • 1 - 12 "x 24" син акрилен лист или лазерно изрязани парчета от любимия ви доставчик на услуги
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm дистанционни лагери за съвместни лагери 3D отпечатани (вижте по -долу)
  • 1 - Контролен панел *Вижте забележка в раздела за окабеляване
  • 1 - Разсеян RGB (трицветен) 10 мм LED
  • 1 - Arduino Uno
  • 1 - стандартен LCD 16x2 + екстри - бяло върху синьо
  • 1 - i2c / SPI символна LCD раница
  • 1-16-канален 12-битов PWM/Servo драйвер Adafruit
  • 1 - MCP3008 - 8 -канален 10 -битов ADC с SPI интерфейс
  • 3 - Сензор за модул за прекъсване на JoyStick *Вижте бележка в раздела за окабеляване
  • DC барел жак
  • AC към DC адаптер
  • Серво удължителни кабели - различни дължини

Почти всички части за това рамо са изрязани от 1/8 инчов акрил. Двата дистанционни елемента за съвместни лагери обаче трябва да бъдат отпечатани. Оригиналният дизайн също така призовава двете основи на дистанционните дистанционни елементи да са високи 7 мм спрямо вала на лагера. Когато започнах сглобяването на горната част на ръката, бързо стана ясно, че те са твърде високи поради височината на сервомоторите TowerPro. Трябваше да направя нови съединителни лагери с основа само 3 мм височина, която, между другото, все още беше малко прекалено висока, но управляема. Вие ще искате да вземете под внимание относителната височина на вашите сервоустройства и да отчетете разстоянието между двете долни рамена:

Серво височина + серво рог + лагерен шарнир + двустранна лента = 47 мм +/- 3 мм.

Стъпка 2: Монтаж на рамото

Монтаж на рамото
Монтаж на рамото
Монтаж на рамото
Монтаж на рамото
Монтаж на рамото
Монтаж на рамото
Монтаж на рамото
Монтаж на рамото

Преди да започнете, не забравяйте да центрирате всичките си сервоустройства! Ако по някое време по време на строителството, ако ръчно преместите позицията на серво, ще трябва да го обезвредите, преди да го закрепите към рамката. Това е особено важно при сервомоторите на рамото, които винаги трябва да се движат в унисон.

  1. Прикрепете базовото серво към горната основна плоча, като използвате 25 мм винтове M3 и шестостенни гайки. ЗАБЕЛЕЖКА: Може да искате да приложите здраво резби, за да сведете до минимум разхлабването на гайките по време на употреба.
  2. Ако използвате списъка с части, който имам по -горе, след това ще искате да сглобите 5 -те основни дистанционера, като резнете по 2 всеки от стойките M3 x 0,5 x 23 mm заедно и след това ги прикрепите към горната основна плоча с шестостенни гайки.
  3. Прикрепете долната основна плоча към стойките с 5 винта M3.
  4. Прикрепете раменната плоча към двете серво монтажни плочи, като използвате безопасно акрилно лепило. Използвах Gorilla Glue тук. ЗАБЕЛЕЖКА: Всяка от двете серво плочи има отвор в задната част, който позволява да се постави армировъчен дистанционер, свързващ ги. Уверете се, че дупките са подравнени!* Докато имате лепилото под ръка, продължете и се присъединете към монтажната плоча на китката с основната плоча на грайфера.* По желание можете също така да залепите серво пластината на китката към двете плочи на китката. Аз не направих това избиране вместо това, за да ги закрепя заедно с противостояния, както е описано по -долу.

  5. Прикрепете сега излекуваното рамо към базовото серво. Използвах най -широкия клаксон, включен в серво, който беше монтажният клаксон с шест стъбла.
  6. Добавянето на рамката на долната част на рамото към сервомоторите на рамото може да бъде трудно. Предлагам да прикрепите рогата към рамката на долната част на ръката, преди да продължите. ЗАБЕЛЕЖКА: Не забравяйте да центрирате сервомоторите за раменния монтаж ПРЕДИ да ги прикрепите към рамката. Тези две сервоустройства трябва да се движат в унисон и ако са неправилно подредени, това най -малко ще доведе до трептене на серво и, ако е неправилно подравнено, може да повреди рамката или сервоустройствата. * Всеки от рамото на сервомоторите е монтиран със скобите на задната страна на монтажните плочи, вместо да пропуска сервомоторите през пластините - това ще ви позволи да натиснете клаксона върху серво вала под ъгъл и да закрепите винта. Все още не фиксирайте серво към монтажната плоча. * След това добавете вътрешното серво и монтирайте рамото

  7. Сглобете рамката на горната част на рамото и сервомоторите, като избутате сервомоторите през пространствата в раменете и след това поставете дистанционерите между двете плочи на рамото и ги закрепете с винтове М3.
  8. Добавете двустранна лепяща лента към задната част на дистанционера за лакътната става и подстрижете излишъка.
  9. Прикрепете дистанционера към долната част на сервото, което ще действа като задвижване на лакътя.
  10. Плъзнете горната част на рамото в рамката на долната част на рамото и закрепете винтовете на серво рогата.
  11. Добавете стойности за подсилване между две плочи на долните рамена. Използвах две вместо всичките четири, за да сваля теглото.
  12. Добавете двустранна лепяща лента към задната част на горния дистанционер на китката и отрежете излишъка.
  13. Прикрепете дистанционера към долната част на сервото, което ще действа като задвижващ механизъм за китката.
  14. Прикрепете външната китка към серво рогата на китката и я закрепете с винт за клаксон.
  15. Сглобете серво пластината на китката с двете плочи на китката и стойките.
  16. Закрепете серво серво на китката на серво пластината със скобата на серво скобата.
  17. Ще трябва да закрепите рога на китката към серво, преди да прикрепите захващащия механизъм към този клаксон поради отвора за блокиране на винта на клаксона.
  18. Свободно сглобете частите на грайфера за прилягане, преди да прикачите серво рогата на захвата към серво. Това ще ви позволи място да завиете клаксона в предишната стъпка.
  19. Прикрепете захващащия клаксон към неговото серво и допълнително затегнете винтовете, които държат съединителите на грайфера. ЗАБЕЛЕЖКА: не затягайте напълно тези гайки и болтове, тъй като те трябва да са хлабави, за да позволят на грайфера да се движи.

Стъпка 3: Окабеляване и контролен панел

Окабеляване и контролен панел
Окабеляване и контролен панел
Окабеляване и контролен панел
Окабеляване и контролен панел
Окабеляване и контролен панел
Окабеляване и контролен панел

Изградих този проект като платформа за развитие на някои идеи, които имам за по -късен образователен проект. Така че повечето от моите връзки са прости съединители dupont. Единственото запояване, което направих, беше за MCP3008. Ако можете да намерите пробивна дъска за този компонент, тогава би трябвало да можете да конструирате тази рама без спойка.

Има 3 групи компоненти:

  1. Входове - Тези елементи приемат информация от потребителя и се състоят от джойстиците и mcp3008 ADC.
  2. Изходи - Тези елементи предават данни на света или чрез показване на състоянието на потребителя или актуализиране на сервомоторите с данни за позицията. Тези елементи са LCD екранът, LCD раницата, RGB LED, платката за драйвер на серво и накрая сервомоторите.
  3. Обработка - Arduino приключва последната група, която приема данните от входовете и изтласква данните към изходите според инструкциите на кода.

Схемата Fritzing по -горе подробно описва щифтовите връзки за всички компоненти.

Входове

Ще започнем с входовете. Джойстиците са аналогови устройства - което означава, че те представят променливо напрежение като вход за Arduino. Всеки от трите джойстика има два аналогови изхода за X и Y (нагоре, надолу, вляво надясно), които правят общо 6 входа към Arduino. Докато Arduino Uno разполага с 6 аналогови входа, трябва да използваме два от тези пинове за I2C комуникация с екрана и серво контролера.

Поради това включих аналогово -цифровия преобразувател MCP3008 (ADC). Този чип приема до 8 аналогови входа и ги преобразува в цифров сигнал през SPI комуникационните щифтове на Arduino, както следва:

  • MCP пинове 1-6> Променливи изходи на джойстиците за палец
  • MCP пинове 7 и 8> Няма връзка
  • MCP пин 9 (DGND)> Земя
  • MCP Pin 10 (CS/SHDN)> Uno Pin 12
  • MCP Pin 11 (DIN)> Uno Pin 11
  • MCP Pin 12 (DOUT)> Uno Pin 10
  • MCP Pin 13 (CLK)> Uno Pin 9
  • MCP пин 14 (AGND)> Земя
  • MCP Pin 15 и 16> +5V

Връзките на джойстика в схемата са показани само за пример. В зависимост от това кои джойстици купуват и как са монтирани, вашите връзки може да се различават от моите. Различните марки на джойстика могат да имат различен извод и също така могат да ориентират X и Y по различен начин. Важното е да се разбере какво представлява всеки вход на ADC. Всеки пин представлява следните връзки в моя код:

  • Пин 1 - Основата - Аналоговите данни на този щифт ще завъртят най -ниското серво на робота
  • Пин 2 - Рамо - Аналоговите данни на този щифт ще завъртят двете сервосистеми над базовото серво
  • Щифт 3 - Лакътът - Аналоговите данни на този щифт ще завъртят следващото серво нагоре от рамото
  • Щифт 4 - НАГОРЕ/DN Китка - Аналоговите данни на този щифт ще завъртят серво сервера, повдигайки и спускайки грайфера
  • Pin 5 - Gripper - Аналоговите данни на този щифт ще отворят и затворят грайфера
  • Щифт 6 - Завъртане на китката - Аналоговите данни за този щифт ще завъртят грайфера

ЗАБЕЛЕЖКА: Когато купувате и монтирате джойстиците за палец, посочени в списъка с части, имайте предвид, че ориентацията на модулите може да се различава от моята, така че тествайте изходите x и y за правилното свързване към ADC. Също така, ако използвате моя 3D отпечатан контролен панел, монтажните отвори могат да бъдат изместени от моите.

Изходи

PWM/Servo контролерът Adafruit прави този проект супер прост. Просто свържете сервомоторите към сервозаглавията и всички захранващи и сигнални връзки се обработват. Освен ако не намерите сервомотори с изключително дълги проводници, ще искате да получите набор от удължители за серво кабели с различна дължина, така че всичките ви серво кабели да достигнат до вашата платка за управление.

Сервомоторите са свързани както следва:

  • Позиция 0 - Основно серво
  • Позиция 1 - Серво на рамото (Servo Y кабел)
  • Позиция 2 - Серво за лакътя
  • Позиция 3 - Китка 1 Серво
  • Позиция 4 - Серво за захващане
  • Позиция 5 - Серво за китката 2

Освен това, VCC и V + са свързани към +5 волта, а GND е свързан към земята.

ЗАБЕЛЕЖКА 1: Една ГОЛЯМА забележка тук: Захранващото напрежение за целия проект влиза през захранващия клемен блок на платката за управление на серво. V+ щифтът на серво контролера всъщност доставя захранване от клемния блок към останалата част от веригата. Ако трябва да програмирате вашия Uno, силно препоръчвам да изключите V+ пина, преди да свържете Uno към вашия компютър, тъй като текущото изтегляне от сервомоторите може да повреди вашия USB порт.

ЗАБЕЛЕЖКА 2: Използвам 6V AC към DC адаптер за захранване на проекта. Препоръчвам адаптер, който може да захранва поне 4A ток, така че когато едно или повече от сервоусилвателите се свържат, внезапният скок на тока да не покаже системата ви и да нулира вашия Arduino.

16X2 LCD екранът е свързан към LCD раницата Adafruit, за да се възползвате от интерфейса I2C, който вече се използва от серво контролера. SCL на серво контролера и CLK на раницата се свързват към Pin A5 на Uno. По същия начин SDA на серво контролера и DAT на раницата се свързват към Pin A4 на Uno. Освен това 5V е свързано към +5 волта, а GND е свързан към земята. LAT на раницата не е свързан с нищо.

И накрая, RGB LED е свързан към щифтове 7 (ЧЕРВЕН), 6 (Зелен) и 5 (Син) на Uno. Заземяващият крак на светодиода е свързан към земята чрез резистор от 330Ohm.

Обработка

Не на последно място, останалите връзки на Arduino, които не са изброени по -горе, са както следва: Pin 5V е свързан към +5 волта и GND е свързан към земята.

В моята настройка използвах страничните релси на макета, за да свържа всички захранващи и заземени линии заедно, както и I2C щифтовете за всички устройства.

Стъпка 4: Код

Код
Код

Както бе посочено по -горе, първоначално изградих този проект като демонстрация за моя местен Maker Faire. Имах намерение да бъде нещо, с което децата и възрастните да играят, докато са на щанда ни. Оказа се, че беше много по -популярен, отколкото си представях - толкова много, че децата се караха за това. Така че, когато дойде време за пренаписване, включих „Демо режим“, който изпълнява ограничение във времето.

Ръката седи там и чака някой да премести джойстика и когато го направят, започва таймер за 60 секунди. В края на 60 -те секунди, той спира да приема въвеждане от потребителя и „почива“за 15 секунди. Краткото внимание обхваща това, което те са, този период на почивка значително намалява борбата за времето за залепване.

Основни операции

Кодът, изброен в референтния раздел по -долу, е доста прост. Масив следи 6 -те стави с мин, макс екстензи, начална позиция и текущата позиция. Когато рамото е включено, функцията за стартиране определя библиотеките, необходими за разговор с MCP3008, LCD раницата (и впоследствие екрана) и определя LED щифтовете. Оттам той прави основна проверка на системите и пристъпва към ръката. Началната функция започва с грайфера и работи по пътя надолу към основата, така че свежда до минимум шанса за свързване при нормални условия. Ако ръката е напълно изпъната, тогава може да е най -добре ръчно да приберете ръката, преди да я включите. Тъй като общите сервоустройства не предоставят обратна връзка за позицията си, трябва да поставим всеки от тях в предварително определена точка и да следим докъде всеки е преместен.

Основният контур първо започва в режим на изчакване - търси джойстиците да се отдалечат от централната си позиция. След като това се случи, основният цикъл променя състоянията в състояние на обратно броене. Когато потребителят премества всеки джойстик, относителната позиция на джойстика от центъра ще добави или извади от текущата известна позиция и актуализира съответното серво. След като серво достигне определената си граница в една посока, джойстикът спира. Потребителят ще трябва да премести джойстика в другата посока, за да го премести отново. Това е софтуерно ограничение, наложено на сервомоторите, независимо от хардуерните им спирания. Тази функция ви позволява да поддържате движенията на ръката в рамките на определена оперативна зона, ако е необходимо. Ако джойстикът бъде пуснат в центъра, движението ще спре.

Този код е само обща отправна точка. Можете да добавите свои собствени режими, както желаете. Един пример може да бъде режим на непрекъснат режим без таймер или може да добавите бутоните на джойстика като входове и да напишете режим на запис/възпроизвеждане.

Стъпка 5: Връзки и ресурси

Препратки към ръката

  • Пост, който вдъхнови този проект
  • Оригинални дизайнерски публикации в блога Моята собствена роботизирана ръка Моите мини сервозахващачи и завършена роботизирана ръка Умножете роботизираната ръка и електроника
  • Thingiverse Arm
  • Мини сервоприемник Thingiverse

Софтуерни библиотеки

  • Ресурси за PWM/серво контролер Adafruit
  • Библиотека MCP3008
  • Информационен лист за MCP3008

Контролен панел и код

  • Tinkercad чертеж на панела, който направих
  • Текущо хранилище на кодове

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