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

Всім привіт!
Кілька років тому на kickstarter з'явився дуже цікавий проект від uFactory - настільна робо-рука uArm. Вони обіцяли згодом зробити проект відкритим, але я не міг чекати і зайнявся реверс-інжинірингом з фотографій.
За ці роки я зробив чотири версії свого бачення цього маніпулятора і в результаті розробив таку конструкцію:
Це робо-рука з інтегрованим контролером, що рухається п'ятьма сервоприводами. Основна її перевага в тому, що всі деталі або можна купити, або дешево і швидко виряджати з оргскла лазером.
Так як джерелом натхнення я брав open sorce - проект, то всіма своїми результатами ділюся повністю. Ви зможете завантажити всі вихідні за посиланнями наприкінці статті і, за бажання, зібрати таку ж (усі посилання наприкінці статті).

Але простіше один раз показати її в роботі, ніж довго розповідати, що вона собою представляє:

Отже, перейдемо до опису.
Технічні характеристики

  1. Висота: 300мм.
  2. Робоча зона (при повністю витягнутому маніпуляторі): від 140мм до 300мм навколо основи
  3. Максимальна вантажопідйомність на витягнутій руці, щонайменше: 200г
  4. Споживаний струм, не більше: 6А
Також мені хочеться відзначити деякі особливості конструкції:
  1. Підшипники у всіх рухомих частинах маніпулятора. Усього їх одинадцять: 10 штук на вал 3мм та один на вал 30мм.
  2. Простота збирання. Я дуже багато уваги приділив тому, щоб була така послідовність складання маніпулятора, при якій всі деталі прикручувати гранично зручно. Особливо складно було зробити це для вузлів потужних сервоприводів у основі.
  3. Всі потужні сервоприводи розташовані в основі. Тобто "нижні" сервоприводи не тягають "верхні".
  4. За рахунок паралельних шарнірів інструмент завжди залишається паралельним або перпендикулярним землі.
  5. Положення маніпулятора можна міняти на 90 градусів.
  6. Готове Arduino-сумісне програмне забезпечення. Правильно зібрана рукаможе керуватися мишкою, а за прикладами коду можна скласти свої алгоритми руху
Опис конструкції
Всі деталі маніпулятора ріжуться з оргскла завтовшки 3 і 5мм.

Зверніть увагу, як збирається поворотна основа:
Найскладніший, це вузол у нижній частині маніпулятора. У перших версіях у мене йшло дуже багато сил, щоби зібрати його. У ньому з'єднуються три сервоприводи і передаються зусилля захоплення. Деталі обертаються довкола штифта діаметром 6мм. Захоплення утримується паралельно (або перпендикулярно) робочої поверхніза рахунок додаткових тяг:

Маніпулятор із встановленим плечем та ліктем показаний на фотографії нижче. До нього ще тільки доведеться додати клешню і тяги для неї:

Клешня також встановлюється на підшипниках. Вона може стискатися та повертатися навколо своєї осі:
Клешню можна встановити як вертикально, так і горизонтально:

Управляється все Arduino-сумісною платою та шилдом для неї:

Складання
Щоб зібрати маніпулятор, потрібно близько двох годин і купа кріплення. Сам процес складання я офміл у вигляді інструкції у фотографіях (обережно, трафік!) з докладними коментарями щодо кожної операції. Також я зробив докладну 3D-модель у простій та безкоштовній програмі SketchUp. Так що завжди можна повернути її перед очима і подивитися незрозумілі місця:


Електроніка та програмування
Я зробив цілий шилд, на якому встановив, крім роз'ємів сервоприводів та живлення, змінні резистори. Для зручності налагодження. Насправді достатньо за допомогою макетки підвести сигнали до двигунів. Але у мене в результаті вийшов такий шилд, який (так вже склалося) я замовив на заводі:

Загалом я зробив три різні програми під Arduino. Одна для керування з комп'ютера, одна для роботи в демо-режимі та одна для керування кнопками та змінними резисторами. Найцікавіша з них, звісно, ​​перша. Я не наводитиму тут код цілком - він доступний в онлайн.
Для керування необхідно завантажити програму для комп'ютера. Після її запуску миша переходить у режим керування рукою. Рух відповідає за переміщення XY, колесо змінює висоту, ЛКМ/ПКМ - захоплення, ПКМ+колесо - поворот маніпулятора. І це насправді зручно. Це було відео на початку статті.
Вихідники проекту

З особливостей цього робота на платформі 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 принтера

Спочатку будуть порушені спільні питання, потім Технічні характеристикирезультату, деталі, а під кінець і сам процес збирання.

В цілому та загальному

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

Технічні характеристики результату

Розглядатиметься зразок з параметрами довжини/висоти/ширини відповідно 228/380/160 міліметрів. Вага зробленої складатиме приблизно 1 кілограм. Для керування використовується дротовий дистанційний пульт. Орієнтовний час збирання за наявності досвіду – близько 6-8 годин. Якщо його немає, то можуть піти дні, тижні, а за потурання і місяці, щоб була зібрана рука-маніпулятор. Своїми руками та одному в таких випадках варто робити хіба що для свого власного інтересу. Для руху складових використовуються колекторні двигуни. Доклавши достатньо зусиль, можна зробити прилад, який повертатиметься на 360 градусів. Також для зручності роботи, крім стандартного інструментарію на кшталт паяльника та припою, необхідно запастися:

  1. Подовженими плоскогубцями.
  2. Бічні кусачки.
  3. Хрестовий викруткою.
  4. 4-ма батарейками типу D.

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

Дрібні деталі

Для регулювання кількості обертів можна використовувати перехідні коліщатка. Вони дозволять зробити рух руки-маніпулятора плавними.

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

Складання в загальних рисах

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

  1. Встановлення двох двигунів. Кожен із них відповідатиме за поворот у конкретну сторону. Коли один працює, другий перебуває у стані спокою.
  2. Установка одного двигуна зі схемою, яка зможе змусити його крутиться в обидва боки.

Який із запропонованих варіантів вибрати, залежить виключно від вас. Далі робиться основна конструкція. Для комфорту роботи необхідно два «суглоби». Прикріплений до платформи повинен уміти нахилятися в різні боки, що вирішується за допомогою двигунів, які розміщені в його основі. Ще один або пару слід розмістити в місці ліктьового вигину, щоб частину захоплення можна було переміщати горизонтальною та вертикальною лінією системи координат. Далі, за бажання отримати максимальні можливості, можна встановити ще двигун у місці зап'ястя. Далі найбільш необхідне, без чого не представляється рука-маніпулятор. Своїми руками належить зробити сам пристрій захоплення. Тут є безліч варіантів реалізації. Можна дати наведення за двома найпопулярнішими:

  1. Використовується лише два пальці, які одночасно стискають та розтискають об'єкт захоплення. Є найпростішою реалізацією, яка, щоправда, зазвичай може похвалитися значної вантажопідйомністю.
  2. Створюється прототип людської руки. Тут для всіх пальців може використовуватися один двигун, за допомогою якого здійснюватиметься згин/розгин. Але можна зробити і конструкцію складнішою. Так, можна до кожного пальця приєднати по двигуну та керувати ними окремо.

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

Можливі схематичні зображення результату

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

Будь-яка схема маніпулятора може бути вдосконалена.

Висновок

Важливим у робототехніці є те, що практично не існує обмеження щодо функціонального покращення. Тому за бажання створити справжній витвір мистецтва не складе труднощів. Говорячи про можливі шляхи додаткового покращення, слід зазначити кран-маніпулятор. Своїми руками зробити такий пристрій не складе труднощів, одночасно він дозволить привчити дітей до творчої праці, науці та конструюванні. А це у свою чергу позитивно може позначитися на них майбутнього життя. Чи складно зробити кран-маніпулятор своїми руками? Це не так проблемно, як здається на перший погляд. Хіба що варто подбати про наявність додаткових дрібних деталейна кшталт троса і коліс, якими він буде крутитися.

  • DIY або Зроби сам ,
  • Електроніка для початківців
  • Привіт, гіктаймсе!

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

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

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

    Проби та помилки

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

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

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

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

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

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

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

    До появи uArm, настільні маніпуляториподібного класу виглядали досить сумно. У них або не було електроніки взагалі, або було якесь керування з резисторами, або було своє пропрієтарне ПЗ. По-друге, вони зазвичай не мали системи паралельних шарнірів і саме захоплення змінював своє становище у процесі роботи. Якщо зібрати всі переваги мого маніпулятора, виходить досить довгий список:
    1. Система тяг, що дозволяють розмістити потужні я важкі двигуни в основі маніпулятора, а також утримують захоплення паралельно або перпендикулярно до основи
    2. Простий набір комплектуючих, які легко купити або вирізати з оргскла
    3. Підшипники майже у всіх вузлах маніпулятора
    4. Простота збирання. Це виявилося дійсно складним завданням. Особливо важко було продумати процес складання основи
    5. Положення захоплення можна міняти на 90 градусів
    6. Відкриті вихідники та документація. Все підготовлено у доступних форматах. Я дам посилання для скачування на 3D-моделі, файли для різання, список матеріалів, електроніку та софт
    7. Arduino-сумісність. Є багато супротивників Arduino, але я вважаю, що це можливість розширення аудиторії. Професіонали цілком можуть написати свій софт на C – це ж звичайний контролер від Atmel!

    Механіка

    Для складання необхідно вирізати деталі з оргскла завтовшки 5мм:

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

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

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

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

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

    Електроніка

    Щоб змусити руку працювати достатньо всього лише підключити п'ять сервоприводів до Arduino і подати на них живлення з гарного джерела. У uArm використані якісь двигуни з зворотним зв'язком. Я поставив три звичайні двигуни MG995 і два маленькі двигуни з металевим редуктором для управління захопленням.

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

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

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

    Найцікавіше це управління маніпулятором з комп'ютера. У uArm є зручний додаток для керування маніпулятором та протокол для роботи з ним. Комп'ютер відправляє COM-порт 11 байт. Перший завжди 0xFF, другий 0xAA і деякі з тих, що залишилися - сигнали для сервоприводів. Далі ці дані нормалізуються та віддаються на відпрацювання двигунам. У мене сервоприводи підключені до цифрових входів/виходів 9-12, але легко можна поміняти.

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

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

    Відео роботи

    І, нарешті, саме відео роботи маніпулятора. На ньому показано управління мишею, резисторами та заздалегідь записаною програмою.

    Посилання

    Файли для різання оргскла, 3D-моделі, список для покупки, креслення плати та софт можна завантажити наприкінці моєї

    Створюємо робот-маніпулятор з використанням далекоміра, реалізуємо підсвічування.

    Різати основу будемо з акрилу. Як двигуни використовуємо сервопривод.

    Загальний опис проекту робота-маніпулятора

    У проекті використано 6 серводвигунів. Для механічної частини використаний акрил завтовшки 2 міліметри. Як штатив нагоді основа від диско-кулі (один з двигунів вмонтований всередину). Також використаний ультразвуковий датчик відстані та світлодіод діаметром 10 мм.

    Для керування роботом використовується Arduino плата живлення. Саме джерело живлення – блок живлення комп'ютера.

    У проекті викладено вичерпні пояснення щодо розробки робо-руки. Окремо розглянуто питання харчування розробленої конструкції.

    Основні вузли для проекту маніпулятора

    Почнемо розробку. Вам знадобляться:

    • 6 серводвигунів (я використовував 2 моделі mg946, 2 mg995, 2 futuba s3003 (mg995/mg946 за характеристиками краще, ніж futuba s3003, але останні набагато дешевше);
    • акрил завтовшки 2 міліметри (і невеликий шматок завтовшки 4 мм);
    • ультразвуковий датчик відстані hc-sr04;
    • світлодіди 10 мм (колір - на ваш розсуд);
    • штатив (використовується як основа);
    • схват алюмінієвий (коштує близько 10-15 доларів).

    Для керування:

    • Плата Arduino Uno(у проекті використано саморобна платаяка повністю аналогічна Arduino);
    • плата харчування (вам доведеться її зробити самим, до цього питання ми повернемося пізніше, він потребує окремої уваги);
    • блок живлення (у разі використовується блок живлення комп'ютера);
    • комп'ютер для програмування вашого маніпулятора (якщо ви використовуєте для програмування Arduinoотже, середа Arduino IDE)

    Звичайно ж, вам знадобляться кабелі та деякі базові інструментина кшталт викруток і т.п. Тепер ми можемо перейти до конструювання.

    Складання механічної частини

    Перед початком розробки механічної частини маніпулятора варто відзначити, що креслень у мене немає. Усі вузли робилися "на коліні". Але принцип дуже простий. У вас є дві ланки з акрилу, між якими треба встановити серводвигуни. І інші дві ланки. Також для встановлення двигунів. Та й сам схват. Подібний схват найпростіше купити в інтернеті. Майже все встановлюється за допомогою гвинтів.

    Довжина першої частини близько 19 см; другий – близько 17.5; довжина передньої ланки близько 5.5 см. Інші габарити підбирайте у відповідності до розмірів вашого проекту. У принципі, розміри інших вузлів негаразд важливі.

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

    Для встановлення ультразвукового датчикавикористовується акрил товщиною 2 мм. Тут же знизу можна встановити світлодіод.

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

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

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

    Схоплення маніпулятора

    Для встановлення схвату вам знадобиться серводвигун і кілька гвинтів.

    Отже, що потрібно зробити.

    Берете гойдалку від серви і вкорочуєте, доки вона не підійде до вашого схвату. Після цього закручуєте два маленькі гвинти.

    Після установки серви провертаєте її в крайнє ліве положення і стискаєте губки схвата.

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

    Можна підключити сервопривід до платі Arduinoта перевірити працездатність схвату.

    Зверніть увагу, що можуть виникнути проблеми з роботою схвата, якщо болти/гвинти занадто сильно затягнуті.

    Додавання підсвічування на маніпулятор

    Можна зробити ваш проект яскравішим, додавши на нього підсвічування. Для цього використовувалися світлодіоди. Робиться нескладно, а у темряві виглядає дуже ефектно.

    Місця для встановлення світлодіодів залежать від вашого креативу та фантазії.

    Електросхема

    Замість резистора R1 можна використовувати потенціометр на 100 кОм для регулювання яскравості вручну. Як опір R2 використовувалися резистори на 118 Ом.

    Перелік основних вузлів, які використовувалися:

    • R1 – резистор на 100 ком
    • R2 – резистор на 118 Ом
    • Транзистор bc547
    • Фоторезистор
    • 7 світлодіодів
    • Перемикач
    • Підключення до плати Arduino

    Як мікроконтролер використовувалася плата Arduino. Як живлення використовувався блок живлення від персонального комп'ютера. Підключивши мультиметр до червоного та чорного кабелів, ви побачите 5 вольт (які використовуються для серводвигунів та ультразвукового датчика відстані). Жовтий та чорний дадуть вам 12 вольт (для Arduino). Робимо 5 конекторів для сервомоторів, паралельно підключаємо позитивні до 5, а негативні - до землі. Аналогічно із датчиком відстані.

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

    Крім того, на платі живлення було встановлено світлодіод-індикатор живлення. Реалізується це просто. Додатково використовувався резистор на 100 Ом між 5 і землею.

    10 мм світлодіод на роботі теж підключений до Arduino. Резистор на 100 Ом йде від 13 піна до позитивної ноги світлодіода. Негативний – до землі. У програмі його можна вимкнути.

    Для 6 серводвигунів використано 6 конекторів, так як 2 серводвигуни знизу використовують однаковий сигнал керування. Відповідні провідники з'єднуються та підключаються до одного піну.

    Повторюся, що як живлення використовується блок живлення від персонального комп'ютера. Або, звичайно, ви можете придбати окреме джерело живлення. Але з урахуванням того, що у нас 6 приводів, кожен з яких може споживати близько 2 А, подібний потужний блокхарчування обійдеться недешево.

    Зверніть увагу, що конектори від серв підключаються до ШИМ-виходів Arduino. Біля кожного такого піна на платі є умовне позначення~. Ультразвуковий датчик розтанення можна підключити до пін 6, 7. Світлодіод - до 13 пін і землі. Це все піни, які нам знадобляться.

    Тепер ми можемо перейти до програмування Arduino.

    Перед тим як підключити плату через usb до комп'ютера, переконайтеся, що ви вимкнули живлення. Коли тестуватимете програму, також відключайте харчування вашої робо-руки. Якщо живлення не вимкнути, Arduino отримає 5 вольт від USB і 12 вольт від блока живлення. Відповідно, потужність від usb перекинеться до джерела живлення і він трохи просяде.

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

    Програмування та перший запуск

    Для керування використано 5 потенціометрів (цілком можна замінити це на 1 потенціометр і два джойстики). Схема підключення з потенціометрами наведена у попередній частині. Скетч Arduino знаходиться тут.

    Знизу представлено кілька відео робота-маніпулятора у роботі. Сподіваюся, вам сподобається.

    На відео зверху представлені останні модифікації армії. Довелося трохи змінити конструкцію та замінити кілька деталей. Виявилося, що серви futuba s3003 слабенькі. Їх вдалося використовувати тільки для схвату або повороту руки. Так що виїсто них були встановлені mg995. Ну а mg946 взагалі будуть чудовим варіантом.

    Програма управління та пояснення до неї

    // управляються приводи з допомогою змінних резисторів - потенціометрів.

    int potpin = 0; // аналоговий пін для підключення потенціометра

    int val; // Змінна для зчитування даних з аналогового піна

    myservo1.attach(3);

    myservo2.attach(5);

    myservo3.attach(9);

    myservo4.attach(10);

    myservo5.attach(11);

    pinMode(led, OUTPUT);

    ( //servo 1 analog pin 0

    val = analogRead(potpin); // зчитує значення потенціометра (значення між 0 та 1023)

    // масштабує отримане значення для використання із сервами (отримуємо значення в діапазоні від 0 до 180)

    myservo1.write(val); // виводить серву в позицію відповідно до розрахованого значення

    delay(15); // Чекає, поки серводвигун вийде в задане положення

    val = analogRead(potpin1); // серва 2 на аналоговому піні 1

    val = map(val, 0, 1023, 0, 179);

    myservo2.write(val);

    val = analogRead(potpin2); // серва 3 на аналоговому піні 2

    val = map(val, 0, 1023, 0, 179);

    myservo3.write(val);

    val = analogRead(potpin3); // серва 4 на аналоговому піні 3

    val = map(val, 0, 1023, 0, 179);

    myservo4.write(val);

    val = analogRead(potpin4); //Серва 5 на аналоговому піні 4

    val = map(val, 0, 1023, 0, 179);

    myservo5.write(val);

    Скетч із використанням ультразвукового датчика відстані

    Це, мабуть, одна з найефективніших частин проекту. На маніпуляторі встановлюється датчик відстані, який реагує на перешкоди навколо.

    Основні пояснення до коду наведені нижче

    #define trigPin 7

    Наступний шматок коду:

    Ми надали всім 5-ти сигналам (для 6 приводів) назви (можуть бути будь-якими)

    Наступне:

    Serial.begin (9600);

    pinMode(trigPin, OUTPUT);

    pinMode(echoPin, INPUT);

    pinMode(led, OUTPUT);

    myservo1.attach(3);

    myservo2.attach(5);

    myservo3.attach(9);

    myservo4.attach(10);

    myservo5.attach(11);

    Ми повідомляємо платі Arduino до яких пін підключені світлодіоди, серводвигуни та датчик відстані. Змінювати тут нічого не варто.

    void position1()(

    digitalWrite(led, HIGH);

    myservo2.writeMicroseconds(1300);

    myservo4.writeMicroseconds(800);

    myservo5.writeMicroseconds(1000);

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

    Після цього:

    void position2()(

    digitalWrite(led,LOW);

    myservo2.writeMicroseconds(1200);

    myservo3.writeMicroseconds(1300);

    myservo4.writeMicroseconds(1400);

    myservo5.writeMicroseconds(2200);

    Аналогічно до попереднього шматка, тільки в даному випадку це position2. За таким же принципом можна додавати нові положення для переміщення.

    long duration, distance;

    digitalWrite(trigPin, LOW);

    delayMicroseconds(2);

    digitalWrite(trigPin, HIGH);

    delayMicroseconds(10);

    digitalWrite(trigPin, LOW);

    duration = pulseIn(echoPin, HIGH);

    distance = (duration/2)/29.1;

    Тепер починає відпрацьовувати основний код програми. Не варто його змінювати. Основне завдання наведених вище рядків – налаштування датчика відстані.

    Після цього:

    if (distance<= 30) {

    if (distance< 10) {

    myservo5.writeMicroseconds(2200); //відкрити схват

    myservo5.writeMicroseconds(1000); //закрити схват

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

    if(distance<=30){ // данная строка обеспечивает переход в position1, если расстояние меньше 30 см.

    position1(); //по суті арм відпрацює все, що ви поставите між дужками ( )

    else( // якщо відстань більше 30 см, перехід у position2

    position()2 // аналогічно попередньому рядку

    Можна в коді змінити відстань та й творити все, що ви забажаєте.

    Останні рядки коду

    if (distance > 30 || distance<= 0){

    Serial.println("Out of range"); //висновок у серійному моніторі повідомлення, що ми вийшли за заданий діапазон

    Serial.print(distance);

    Serial.println("cm"); //відстань у сантиметрах

    delay(500); //затримка 0.5 секунди

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

    Ось, власне, і все. Насолоджуйтесь, модернізуйте свої власні маніпулятори, ділитесь ідеями та результатами!