Настільна робо-рука маніпулятор з оргскла на сервоприводах своїми руками або реверс-інжиніринг

Настільна робо-рука маніпулятор з оргскла на сервоприводах своїми руками або реверс-інжиніринг uArm. Роботизована рука маніпулятор Роботизована рука маніпулятор

З особливостей даного робота на платформі Arduino можна відзначити складність його конструкції. Роборукою складається з безлічі важелів, які дозволяють їй рухатися по всіх осях, хапати і переміщати різні речі, використовуючи всього 4 серво-мотора. Зібравши власними руками такого робота, Ви точно зможете здивувати своїх друзів і близьких можливостями і приємним видом даного пристрою! Пам’ятайте, що для програмування Ви завжди зможете скористатися нашою графічної середовищем RobotON Studio!

Якщо у Вас виникнуть запитання або зауваження, ми завжди на зв’язку! Створюйте і викладайте свої результати!

особливості:

Щоб зібрати робота маніпулятора своїми руками, вам знадобиться досить багато компонентів. Основну частину займають 3D друковані деталі, їх близько 18 штук (друкувати гірку необов’язково) .Якщо ви завантажили і роздрукували все необхідне, то вам будуть потрібні болти, гайки і електроніка:

  • 5 болтів М4 20мм, 1 на 40 мм і відповідні гайки із захистом від розкрутки
  • 6 болтів М3 10мм, 1 на 20 мм і відповідні гайки
  • Макетке з сполучними проводами або Шилд
  • Arduino Nano
  • 4 серво мотора SG 90

Після складання корпусу ВАЖЛИВО переконатися в його вільної рухливості. Якщо ключові вузли роборукою рухаються з працею, серво-мотори можуть не впоратися з навантаженням. Збираючи електроніку, необхідно пам’ятати, що підключати ланцюг до харчування краще після повної перевірки з’єднань. Щоб уникнути поломки серво-приводів SG 90, не потрібно крутити руками сам мотор, якщо немає необхідності. У разі, якщо потрібно розробити SG 90, потрібно плавно рухати вал мотора в різні боки.

Характеристики:
  • Просте програмування через наявність малої кількості моторів, причому одного типу
  • Наявність мертвих зон для деяких серво-приводах
  • Широка застосовність робота в повсякденному житті
  • Цікаві інженерна робота
  • Необхідність використання 3D принтера

Проект uArm від uFactory зібрав кошти на кікстартера вже більше двох років тому. Вони з самого початку говорили, що це буде відкритий проект, але відразу після закінчення компанії вони не поспішали викладати вихідні. Я хотів просто порізати оргскло по їх кресленнями і все, але так як початкових кодів не було і в доступному для огляду майбутньому не передбачалося, то я почав повторювати конструкцію з фотографій.

Зараз моя робо-рука виглядає так:

Працюючи не поспішаючи за два роки я встиг зробити чотири версії і отримав досить багато досвіду. Опис, історію проекту та всі файли проекту ви зможете знайти під катом.

Проби і помилки

З такими вхідними параметрами я намалював першу версію. На жаль, у мене не збереглося фотографій тієї версії маніпулятора (який був виконаний у жовтому кольорі). Помилки в ній були просто епічно. По-перше, її було майже неможливо зібрати. Як правило, механіка яку я малював до маніпулятора, була досить проста, і мені не доводилося замислюватися про процес складання. Але все-таки я його зібрав і спробував запустити, І рука майже не рухалася! Все Детльов крутилися навколо гвинтів і, кщо я затягував їх так, щоб було менше люфтів, вона не могла рухатися. Якщо послаблював так, щоб вона могла рухатися, з’являлися неймовірні люфти. У підсумку концепт не прожив і трьох днів. І приступив до роботи над другою версією маніпулятора.

Червоний був уже цілком придатний до роботи. Він нормально збирався і з мастилом міг рухатися. На ньому я зміг протестувати софт, але все-таки відсутність підшипників і великі втрати на різних тягах робили його дуже слабким.

Потім я закинув роботу над проектом на якийсь час, але незабаром прийняв рішення довести його до пуття. Я вирішив використовувати більш потужні і популярні сервоприводи, збільшити розмір і додати підшипники. Причому я вирішив, що не буду намагатися зробити відразу все ідеально.Я накидав креслення на швидку руки, не викреслюючи красивих сполучень і замовив різання з прозорого оргскла. На отриманому маніпуляторі я зміг налагодити процес складання, виявив місця, які потребують додаткового зміцнення, і навчився використовувати підшипники.

Після того, як я вдосталь награвся з прозорим маніпулятором, я засів за креслення фінальної білої версії. Отже, зараз вся механіка повністю налагоджена, влаштовує мене і готовий заявити, що більше нічого не хочу міняти в цій конструкції:

Мене пригнічує те, що я не зміг привнести нічого принципово нового в проект uArm. На той час, як я почав малювати фінальну версію, вони вже викотили 3D-моделі на GrabCad. У підсумку я тільки трохи спростив клешню, підготував файли в зручному форматі і застосував дуже прості і стандартні комплектуючі.

особливості маніпулятора

механіка

З мене за різку всіх цих деталей взяли близько $ 10.

Підстава монтується на великому підшипнику:

Особливо важко було продумати підставу з точки зору процесу складання, але я підглядав за інженерами з uArm. Гойдалки сидять на штифті діаметром 6мм. Треба відзначити, що тяга ліктя у мене тримається на П-образному тримачі, а у uFactory на Г-образному. Важко пояснити в чому різниця, але я вважаю у мене вийшло краще.

Захоплення збирається окремо. Він може повертатися навколо своєї осі. Сама клешня сидить прямо на валу двигуна:

В кінці статті я дам посилання на суперподробную інструкцію по збірці в фотографіях. За пару годин можна впевнено все це скрутити, якщо все необхідне є під рукою. Також я підготував 3D-модель в безкоштовній програмі SketchUp. Її можна завантажити, покриття і подивитися що і як зібрано.

електроніка

Тут моє оповідання тісно сплітається з попередніми проектами. З деяких пір я почав викладати програмування Arduino і для цих цілей навіть підготував свою Arduino-сумісну плату. З іншого боку якось раз мені підвернулася можливість дешево виготовити плати (про що я теж писав). У підсумку все це закінчилося тим, що я використовував для управління маніпулятором свою власну Arduino-сумісну плату і спеціалізований Шилд.

Цей Шилд насправді дуже простий. На ньому чотири змінних резистора, дві кнопки, п’ять роз’ємів для сервоприводу і роз’єм живлення. Це дуже зручно з точки зору налагодження. Можна завантажити тестовий скетч і записати який-небудь макрос для управління або що-небудь на зразок того. Посилання для скачування файлу плати я теж дам в кінці статті, але вона підготовлена ​​для виготовлення з металізацією отворів, так що мало придатна для домашнього виробництва.

програмування

Термінальна програма від uArm дозволяє змінювати п’ять параметрів при управлінні мишею. При русі миші по поверхні змінюється положення маніпулятора в площині XY. Обертання коліщатка – зміна висоти. ЛФМ / ПКМ – стиснути / розтиснути клешню. ПКМ + коліщатко – поворот захоплення. Насправді дуже зручно. При бажанні можна написати будь-який термінальний софт, який буде спілкуватися з маніпулятором за таким же протоколу.

Я не буду тут наводити скетчі – скачати їх можна буде в кінці статті.

Відео роботи

посилання

Має підсвічування. Всього робот працює на 6-ти серводвигунів. Для створення механічної частини використовувався акрил товщиною два міліметри. Для виготовлення штатива було взято підставу від диско-кулі, при цьому один мотор стрункий прямо в нього.

Робот працює на платі Arduino. В якості джерела живлення використовується комп’ютерний блок.

Матеріали і інструменти:
– 6 серводвигунів;
– акрил товщиною 2 мм (і ще невеликий шматок товщиною 4 мм);
– штатив (для створення підстави);
– ультразвуковий датчик відстані типу hc-sr04;
– контролер Arduino Uno;
– контролер харчування (виготовляється самостійно);
– блок живлення від комп’ютера;
– комп’ютер (потрібен для програмування Arduino);
– дроти, інструменти та інше.

Крок перший. Збираємо механічну частину робота
Механічна частина збирається дуже просто. Два шматка акрилу потрібно з’єднати за допомогою серводвігателя. Інші дві ланки з’єднуються аналогічним чином.Що стосується схвата, то його краще за все купити через інтернет. Всі елементи кріпляться за допомогою гвинтів.

Довжина першої частини складає близько 19 см, а другий приблизно 17.5 см. Переднє ланка має довжину 5.5 см. Що стосується інших елементів, то їх розміри вибираються за особистим вибором.


Кут повороту в підставі механічної руки повинен становити 180 градусів, тому знизу потрібно встановити серводвигун. У нашому випадку його потрібно встановити в диско-куля. Робот ж встановлюється вже на серводвигун.

Для установки ультразвукового датчика знадобиться шматок акрилу товщиною 2 см.

Щоб встановити схват буде потрібно кілька гвинтів і серводвигун. Потрібно взяти качалку від серводвігателя і вкорочувати її до тих пір, поки вона не підійде до схопила. Потім можна закрутити два маленьких гвинта. Після установки серводвигун потрібно повернути в крайнє ліве положення і звести губки захоплення.

Тепер серводвигун кріпиться на 4 болта, при цьому важливо стежити, щоб він знаходився в крайньому лівому положенні, а губи були зведені.
Тепер сервпрівод можна підключити до плати і перевірити, чи працює схват.

Крок другий. підсвічування робота
Щоб робот був цікавіше, йому можна зробити підсвічування. Робиться це за допомогою світлодіодів різноманітних квітів.

Крок третій. Підключення електронної частини
Основним контролером для робота є плата Arduino. В якості джерела живлення використовується комп’ютерний блок, на його виходах потрібно знайти напруга 5 Вольт. Воно повинно бути, якщо заміряти мультиметром напругу на червоному і чорному проводі. Ця напруга потрібно для харчування серводвигунів і сенсора відстані. Жовтий і чорний провід блоку видає вже 12 Вольт, вони потрібні для роботи Arduino.

Для сервомоторів потрібно зробити п’ять конекторів. До позитивних підключаємо 5В, а негативні до землі. Аналогічним чином підключається і датчик відстані.

Ще на платі є світлодіодний індикатор живлення. Для його підключення використовується резистор 100 Ом між +5 В і землею.

Виходи від серводвигунів підключаються до ШІМ-виходів на Arduino. Такі піни на платі позначаються значком «

». Що стосується ультразвукового датчика відстані, то його можна підключити до пінам 6 і 7. Світлодіод підключається до землі і 13-му піну.

Тепер можна приступати до програмування. Перед тим як підключатися через USB, потрібно переконатися, що харчування повністю відключено. При тестуванні програми харчування робота теж потрібно відключати. Якщо це не зробити, контролер отримати 5В від USB і 12В від блоку живлення.

На схемі можна побачити, що для управління серводвигунами були додані потенціометри. Вони не є необхідною складовою робота, але без них запропонований код працювати не буде. Потенціометри підключаються до пінам 0,1,2,3 і 4.

На схемі є резистор R1, його можна замінити потенціометром на 100 кОм. Це дозволить регулювати яскравість вручну. Що стосується резисторів R2, то їх номінал 118 Ом.

Ось перелік основних вузлів, які застосовувалися:
– 7 світлодіодів;
– R2 – резистор на 118 Ом;
– R1 – резистор на 100 кОм;
– перемикач;
– фоторезистор;
– транзистор bc547.

Крок четвертий. Програмування та перший запуск робота
Щоб керувати роботом, було використано 5 потенціометрів. Цілком реально замінити таку схему на один потенціометр і два джойстика. Як підключити потенціометр, було показано в попередньому кроці. Після установки скеча робота можна випробувати.

Перші випробування робота показали, що встановлені серводвігателі типу futuba s3003 виявилися слабкими для робота. Їх можна застосовувати лише для повороту руки або для схвата. Замість них автор встановив двигуни mg995. Ідеальним варіантом будуть двигуни типу mg946.

підключення:

Якщо Ви зібрали деталі маніпулятора відповідно до інструкції, то можна приступити до складання електронної схеми. Ми пропонуємо підключити сервоприводи маніпулятора до Arduino UNO через Trerma-Power Shield, а управляти сервопріводамі використовуючи Trema-потенціометри.

  • Поворот ручки першого Trema-потенціометра призведе до повороту підстави.
  • Поворот ручки другого Trema-потенціометра призведе до повороту лівого плеча.
  • Поворот ручки третього Trema-потенціометра призведе до повороту правого плеча.
  • Поворот ручки четвертого Trema-потенціометра призведе в рух захоплення.

У коді програми (скетчі) передбачений захист сервоприводів, яка полягає в тому, що діапазон їх обертання обмежений інтервалом (двома кутами) вільного ходу. Мінімальний і максимальний кут обертання вказуються в якості двох останніх аргументів функції map () для кожного сервоприводу. А значення цих кутів визначається в процесі калібрування, яку потрібно виконати до початку роботи з маніпулятором.

Код програми:

Якщо ви подасте харчування, до калібрування, маніпулятор може почати рухатися неадекватно! Спочатку виконайте всі кроки калібрування.

#include // Підключаємо бібліотеку Servo для роботи з сервоприводами Servo servo1; // Оголошуємо об’єкт servo1 для роботи з сервоприводом підстави Servo servo2; // Оголошуємо об’єкт servo2 для роботи з сервоприводом лівого плеча Servo servo3; // Оголошуємо об’єкт servo3 для роботи з сервоприводом правого плеча Servo servo4; // Оголошуємо об’єкт servo4 для роботи з сервоприводом захоплення int valR1, valR2, valR3, valR4; // Оголошуємо змінні для зберігання значень потенціометрів // Призначаємо висновки: const uint8_t pinR1 = A2; // Визначаємо константу з № виведення потенціометра управл. підставою const uint8_t pinR2 = A3; // Визначаємо константу з № виведення потенціометра управл. лівим плечем const uint8_t pinR3 = A4; // Визначаємо константу з № виведення потенціометра управл. правим плечем const uint8_t pinR4 = A5; // Визначаємо константу з № виведення потенціометра управл. захопленням const uint8_t pinS1 = 10; // Визначаємо константу з № виведення сервоприводу підстави const uint8_t pinS2 = 9; // Визначаємо константу з № виведення сервоприводу лівого плеча const uint8_t pinS3 = 8; // Визначаємо константу з № виведення сервоприводу правого плеча const uint8_t pinS4 = 7; // Визначаємо константу з № виведення сервоприводу захоплення vo + valR4); // Виводимо кути в монітор>

калібрування:

Перед початком роботи з маніпулятором, його потрібно відкалібрувати!

    Калібрування полягає у вказівці крайніх значень кута повороту для кожного сервоприводу, так щоб деталі не заважали їх рухам.

  • Відключіть усі сервоприводи від Trema-Power Shield, завантажте скетч і підключіть харчування.
  • Відкрийте монітор послідовного порту.
  • У моніторі будуть відображатися кути повороту кожного сервоприводу (в градусах).
  • Підключіть перший сервопривід (керуючий обертанням підстави) до висновку D10.
  • Поворот ручки першого Trema-потенціометра (висновок A2) призведе до повороту першого сервоприводу (висновок D10), а в моніторі зміниться значення поточного кута цього сервоприводу (значення: A1 =.). Крайні положення першого сервоприводу будуть лежати в діапазоні, від 10 до 170 градусів (як написано в першому рядку коду loop). Цей діапазон можна змінити, замінивши значення останніх двох аргументів функції map () в першому рядку коду loop, на нові. Наприклад, замінивши 170 на 180, Ви збільшите крайнє положення сервоприводу в даному напрямку. А замінивши 10 на 20, Ви зменшите інше крайнє положення того ж сервоприводу.
  • Якщо Ви замінили значення, то потрібно заново завантажити скетч. Тепер сервопривід буде повертатися в нових, заданих Вами, не більше.
  • Підключіть другий сервопривід (керуючий поворотом лівого плеча) до висновку D9.
  • Поворот ручки другого Trema-потенціометра (висновок A3) призведе до повороту другого сервоприводу (висновок D9), а в моніторі зміниться значення поточного кута цього сервоприводу (значення: A2 =.). Крайні положення другого сервоприводу будуть лежати в діапазоні, від 80 до 170 градусів (як написано в другому рядку коду loop скетчу). Цей діапазон змінюється так само як і для першого сервоприводу.
  • Якщо Ви замінили значення, то потрібно заново завантажити скетч.
  • Підключіть третій сервопривід (керуючий поворотом правого плеча) до висновку D8. і аналогічним чином здійсните його калібрування.
  • Підключіть четвертий сервопривід (керуючий захопленням) до висновку D7. і аналогічним чином здійсните його калібрування.

Калібрування досить виконати 1 раз, після складання маніпулятора. Внесені Вами зміни (значення граничних кутів) збережуться в файлі скетчу.

Муніципальне бюджетна установа

додаткової освіти «Станція юних техніків»

міста Каменськ-Шахтинський

Муніципальний етап обласного зльоту-конкурсу

«Юні конструктори Дона – третього тисячоліття»

« Рука-маніпулятор на Arduino »