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


Зараз уже мало хто пам'ятає, на жаль, що у 2005 році були Chemical Brothers і у них був чудовий кліп – Believe, де роботизована рукаганялася містом за героєм відео.

Тоді в мене виникла мрія. Нездійсненна на той момент, тому що ні найменшого уявлення про електроніку в мене не було. Але мені хотілося вірити – believe. Пройшло 10 років, і буквально вчора мені вдалося вперше зібрати свого власного робота-маніпулятора, запустити його в роботу, потім зламати, полагодити, і знову запустити в роботу, а принагідно знайти друзів і здобути впевненість у власних силах.

Увага, під катом спойлери!

Все почалося з (привіт, Майстер Кіт, і дякую, що дозволили написати у вашому блозі!), який був майже відразу знайдений та обраний після статті на Хабрі. На сайті йдеться, що зібрати робота - під силу навіть 8-річній дитині - чим я гірша? Я так само тільки пробую свої сили.

Спочатку була параною

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

Тому з того, що залишилося в пам'яті про іграшки, було:

  • Пластмаса ламатиметься і кришитиметься в руках?
  • Деталі нещільно підходитимуть один до одного?
  • У наборі будуть не всі деталі?
  • Зібрана конструкція буде неміцною та недовговічною?
І, нарешті, урок, який було винесено із радянських конструкторів:
  • Частину деталей доведеться допилювати напилком
  • А частини деталей просто не буде у наборі
  • І ще частина спочатку не працюватиме, її доведеться міняти
Що я можу сказати зараз: не дарма у моєму улюбленому кліпі Believe головний геройбачить страхи там, де їх нема. Жодна з побоювань не виправдалася: деталей було рівно стільки, скільки потрібно, всі вони підходили один до одного, на мій погляд - ідеально, що дуже піднімало настрій по ходу роботи.

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

Технічні характеристики:

Довжина: 228 мм
Висота: 380 мм
Ширина: 160 мм
Вага у складанні: 658 гр.

Живлення: 4 батарейки типу D
Вага предметів, що піднімаються:до 100 гр
Підсвічування: 1 світлодіод
Тип управління:провідний дистанційний пульт
Приблизний час збирання: 6:00
Рух: 5 колекторних моторів
Захист конструкції під час руху:храповик

Рухливість:
Механізм захоплення: 0-1,77""
Рух зап'ястя:в межах 120 градусів
Рух ліктя:в межах 300 градусів
Рух плеча:в межах 180 градусів
Обертання на платформі:в межах 270 градусів

Вам знадобляться:

  • подовжені плоскогубці (не вийде обійтися без них)
  • бічні кусачки (можна замінити на ніж для паперу, ножиці)
  • Хрестова викрутка
  • 4 батарейки типу D

Важливо! Про дрібні деталі

До речі про «гвинтики». Якщо ви стикалися з подібною проблемою, і знаєте, як зробити збірку ще зручнішою - ласкаво просимо в коментарі. Поки що поділюсь своїм досвідом.

Однакові за функцією, але різні за довжиною болти та шурупи досить чітко прописані в інструкції, наприклад, на середньої фотовнизу ми бачимо болти P11 та P13. А може P14 – ну, тобто, ось знову, я знову їх плутаю. =)

Розрізнити їх можна: в інструкції прописано, скільки скільки міліметрів. Але, по-перше, не сидітимеш же зі штангенциркулем (особливо якщо тобі 8 років і в тебе його просто немає), а, по-друге, розрізнити їх у результаті можна тільки, якщо покласти поруч, що може не відразу прийти на розум (мені не спало, хе-хе).

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

  • або заздалегідь придивіться до кріпильних елементів;
  • або купіть собі більше дрібних гвинтів, саморізів і болтів, щоб не паритися.

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

Процес складання

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

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

Складання починається з чотирьох з п'яти моторів, що входять в конструкцію, збирати які справжнє задоволення: я просто обожнюю шестерні механізми.

Моторчики ми виявили акуратно упакованими та «прилиплими» один до одного - готуйтеся відповісти на запитання дитини, чому колекторні моторчики магнітяться (можна одразу в коментарях! :)

Важливо:у 3 з 5 корпусів моторчиків потрібно втопити гайки з боків- На них надалі ми посадимо корпуси при складанні руки. Бічні гайки не потрібні тільки в моторчику, який піде в основу платформи, але щоб потім не згадувати, який корпус куди краще втопіть гайки в кожному з чотирьох жовтих корпусів відразу. Тільки для цієї операції будуть потрібні плоскогубці, надалі вони не знадобляться.

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

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

Коли платформа та основна частина руки зібрані, інструкція запропонує вам перейти до збирання механізму захоплення, де повно дрібних деталейі рухливих частин – найцікавіше!

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

Як стати душею компанії за допомогою робота

Легко! Коли ми продовжили збирання разом, стало зрозуміло: збирати робота самостійно. дужеприємно. Працювати над конструкцією разом – приємно подвійно. Тому сміливо можу рекомендувати цей набір для тих, хто не хоче сидіти у кафе за нудними розмовами, але хоче побачитись з друзями та добре провести час. Більше того, мені здається, і тимбілдинг з таким набором – наприклад, збірка двома командами, на швидкість – практично безпрограшний варіант.

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

Ми зрозуміли, що страшенно зголодніли і пішли поїсти. Іти було недалеко, тож робота ми донесли до рук. І тут на нас чекав ще один приємний сюрприз: робототехніка не тільки захоплююча. Вона ще й зближує. Як тільки ми сіли за столик, нас оточили люди, які хотіли познайомитись з роботом і зібрати собі такого самого. Найбільше хлопцям сподобалося вітатися з роботом «за щупальця», тому що поводиться він справді як живий, та й насамперед це ж рука! Словом, основні принципи аніматроніки були освоєні користувачами інтуїтивно. Ось як це виглядало:

Troubleshooting

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

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

Але потім мене осяяло: якщо ти сам її щойно зібрав, за чим же справа стала? =) Я ж чудово знаю набір шестерень усередині корпусу, а щоб зрозуміти, чи зламався сам мотор, чи просто недостатньо добре був закріплений корпус, можна не виймаючи моторчика з плати дати йому навантаження і подивитися, чи продовжаться клацання.

Ось тут мені і вдалося відчути себе справжнімробо-майстром!

Акуратно розібравши «ліктьовий суглоб», вдалося визначити, що без навантаження моторчик працює безперебійно. Розійшовся корпус, усередину випав один із шурупів (бо його примагнітив моторчик), і якби ми продовжили експлуатацію, то шестерні були б пошкоджені - у розібраному вигляді на них була виявлена ​​характерна «пудра» із пластмаси, що стерлася.

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

Порада:Спочатку після збирання тримайте викрутку і плоскогубці під рукою - можуть стати в нагоді.

Що можна виховати завдяки цьому набору?

Впевненість в собі!

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

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

Підсумки

Що сподобалось:
  • Зібраний за інструкцією робот не зажадав налагодження, запустився відразу
  • Деталі майже неможливо переплутати
  • Сувора каталогізація та наявність деталей
  • Інструкція, яку не потрібно читати (тільки зображення)
  • Відсутність значних люфтів та зазорів у конструкціях
  • Легкість складання
  • Легкість профілактики та ремонту
  • Last but not least: свою іграшку збираєш сам, за тебе не працюють філіппінські діти
Що потрібно ще:
  • Ще кріпильних елементів, про запас
  • Деталі та запчастини до нього, щоб можна було замінити за потреби
  • Ще роботів, різних та складних
  • Ідеї, що можна покращити\приробити\прибрати - словом, на збірці гра не закінчується! Дуже хочеться, щоб вона продовжувалася!
Вердикт:

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

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


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

Рукавичка забезпечена сенсорами для керування світлодіодом та 5-ма моторами.
передавач на Arduino приймає сигнали сенсорів, а потім у вигляді команд управління бездротового зв'язку відправляє їх на приймач контролера робо-руки
приймач контролера на основі Arduino Uno отримує команди і відповідно керує робо-рукою

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

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

Крок 1: Компоненти


Для рукавички:

Крок 2: Попереднє складання


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

Сам проект містить два складні моменти: перший - це налаштувати два приймачі-передавачі nRF24 один на одного для злагодженої взаємодії. Виходить, що ні Nano, ні Uno не забезпечують стабільні 3.3 для чіткої роботи модулів. Це вирішується додаванням конденсаторів 47мФ висновки живлення обох модулів nRF24. В принципі, бажано перед використанням модулів nRF24 ознайомиться з їх функціонуванням в IRQ і не-IRQ режимах, та й іншими нюансами. І допоможуть у цьому такі ресурси. nRF24. та nRF24 lib

І другий - досить швидко заповнюються контакти Uno, але це не дивно, адже потрібно контролювати 5 двигунів, підсвічування, дві кнопки і модуль зв'язку. Тому довелося задіяти зсувний регістр. Грунтуючись на тому, що модулі nRF24 використовують SPI інтерфейс, я вирішив для програмування регістру зсуву також використовувати SPI замість функції shiftout(). І напрочуд малюнок коду заробив з першого разу. Ви можете перевірити це за призначенням контактів та малюнків.

І нехай макетна платаі перемички стануть вашими мозкодрузями 🙂

Крок 3: Рукавички


OWI Робо-рука має 6 пунктів для управління:

Світлодіод підсвічування розташований Захоплення
Захоплення
Зап'ясті
Лікоть - це частина маніпулятора, з'єднана з Зап'ястям.
Плечо – частина маніпулятора, прикріплена до Основи
Основа

Рукавичка- виробикерує всіма цими 6-ма пунктами, тобто підсвічуванням та рухами маніпулятора з 5 ступенями свободи. Для цього на рукавичці встановлений сенсор, позначений на фото, за допомогою якого відбувається управління:

Захоплення контролюється кнопками на середньому пальці і мізинці, тобто при зведенні вказівного пальця і ​​середнього захоплення закривається, а при зведенні мізинця і безіменного відкривається.
Зап'ястя керується гнучким сенсором на вказівним пальцем- Згинання пальця на половину змушує зап'ястя опускатися, а повне згинання пальця підніматися.
Лікоть управляється акселерометром – нахил долоні вгору чи вниз змушує лікоть підніматися чи опускатися відповідно.
Плечо також контролюється акселерометром – поворот долоні вправо або вліво змушує плече переміщатися вгору або вниз відповідно.
Основа теж управляється акселерометром - нахил всієї долоні (лицьовою стороною вгору) вправо або вліво змушує повертатися основу в праву або ліву сторони відповідно.
Підсвічування вмикається/вимикається одночасним натисканням обох кнопок управляючих захопленням.
При цьому кнопки спрацьовують при утриманні в 1/4 секунд, щоб уникнути відгуку при випадковому торканні.

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

На платі зі штекерним роз'ємом змонтовано два світлодіоди: зелений – індикатор живлення, а жовтий – індикатор передачі на контролер маніпулятора.

Крок 4: Блок передавача


Блок передавача складається з Arduino Nano, модуля бездротового зв'язку nRF24, штекерного роз'єму для стрічкового кабелю і трьох резисторів: два узгоджувальні резистори по 10кОм для кнопок управління захопленням на рукавичці і дільник напруги 20кОм для гнучкого сенсора, що відповідає за керування зап'ястям.

Всі електронні компоненти спаяні на монтажній платі, при цьому зверніть увагу, як модуль nRF24 «висить» над Nano. Я думав, що таке мозоквикликатиме перешкоди, але ні, все нормально працює.

9В батарея надає браслету громіздкості, але я не хотів «возитися» з літієвим акумулятором, може бути пізніше.

Увага!! Перед паянням ознайомтеся з розпинанням контактів!

Крок 5: Контролер маніпулятора


Основа контролера робо-руки - Arduino Uno, що отримує за допомогою модулів бездротового зв'язку nRF24 сигнали від рукавички, і на їх основі потім за допомогою мікросхем 3 L293D керуючий OWI маніпулятором.

Оскільки майже всі контакти Uno були задіяні, то мозкопроводу,що йдуть до них, щойно вміщаються в корпусі контролера!

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

Підключення OWI

Робо-рука та контролер з'єднуються стрічковим кабелем з 14 доріжками, див. малюнок.

Світлодіоди припаюються до заземлення (-) та контакту а0 Arduino через резистор 220 Ом.
Усі дроти від двигунів приєднуються до мікросхеми L293D до висновків 3/6 або 11/14 (+/- відповідно). Кожна L293D підтримує два двигуни, отже дві пари контактів.
Провід живлення OWI розташований по краях 7-контактного штекера (лівий крайній +6В і правий крайній GND) на задній жовтій кришці, див. фото. Ця пара приєднана до контакту 8 (+) та контактів 4,5,12,13 (GND) на всіх трьох мікросхемах L293D.

Увага!! Обов'язково ознайомтеся з розпинанням контактів у наступному кроці!

Крок 6: Призначення контактів (розпинання)


5В - 5В для плати акселерометра, кнопок і гнучкого сенсора
а0 – вхід гнучкого сенсора
а1 – жовтий світлодіод
а4 – SDA до акселерометра
а5 - SCL до акселерометра
d02 – переривний контакт модуля nRF24L01 (контакт 8)
d03 – вхід кнопки відкриття захоплення
d04 – вхід кнопки стиснення захоплення
d09 - SPI CSN до модуля NRF24L01 (контакт 4)
d10 - SPI CS до модуля NRF24L01 (контакт 3)
d11 - SPI MOSI до модуля NRF24L01 (контакт 6)

d13 - SPI SCK до модуля NRF24L01 (контакт 5)
Vin - "+9В"
GND – маса, заземлення

3,3V - 3,3В для модуля NRF24L01 (контакт 2)
5V - 5В до кнопок
Vin - "+9В"
GND – маса, заземлення
а0 - "+" світлодіода на зап'ястя
а1 - SPI SS контакт для вибору зсуву регістру – до контакту 12 на зсувному регістрі
а2 – вхід червоної кнопки
а3 – вхід зеленої кнопки
а4 – рух основи вправо – контакт 15 на L293D
а5 – світлодіод
d02 - IRQ вхід модуля nRF24L01 (контакт 8)
d03 - включення двигуна основи - контакт 1 або 9 на L293D
d04 – рух основи вліво – контакт 10 на відповідній L293D
d05 - включення двигуна плеча - контакт 1 або 9 на L293D
d06 - включення двигуна ліктя - контакт 1 або 9 на L293D
D07 - SPI CSN до модуля NRF24L01 (контакт 4)
d08 - SPI CS до модуля NRF24L01 (висновок 3)
d09 - включення двигуна зап'ястя - контакт 1 або 9 на L293D
d10 - включення двигуна захоплення - контакт 1 або 9 на L293D
d11 - SPI MOSI до модуля NRF24L01 (контакт 6) і контакт 14 на зсувному регістрі
d12 - SPI MISO до модуля NRF24L01 (контакт 7)
d13 - SPI SCK до модуля NRF24L01 (контакт 5) і контакт 11 на зсувному регістрі

Крок 7: Зв'язок


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

Включити/вимкнути підсвічування (1 біт) — я насправді використовую 2 біти разом із двигунами, але достатньо одного.
вимкнути/ вправо / вліво для всіх 5 двигунів - по 2 біти на кожен, тобто всього 10 біт

Виходить, що 11 або 12 біт достатньо.

Кодування напрямків:
Вимк: 00
Праворуч: 01
Ліворуч: 10

По бітах керуючий сигнал виглядає так:

Байт 1 може бути зручно направлений безпосередньо в регістр зсуву, так як це контроль вправо/ліворуч двигунів з 1 по 4.

Затримка в 2 секунди вимикає зв'язок, і тоді двигуни зупиняються наче натиснута червона кнопка.

Крок 8: Код

Код для рукавичок містить ділянки з таких бібліотек:

Додані ще два байти у структурі зв'язку для відправки запитаної швидкості двигунів Зап'ястя, Локтя, Плеча та Основи, яка визначається 5-бітним значенням (0..31) пропорційно до кутового положення рукавички. Контролер маніпулятора розподіляє отримане значення (0..31) на ШІМ значення відповідно для кожного мозкодвигуна. Це забезпечує узгоджене управління швидкості оператора, і точніше маніпулювання робо-рукою.

Новий набір жестів вироби:

  • Підсвічування: Кнопка на середньому пальці - Увімкнення, на мізинці - Вимкнення.
  • Гнучкий сенсор управляє Захопленням – напівзігнутим палцем – Відкрити, повністю зігнутим – Закрити.
  • Зап'ястя контролюється відхиленням долоні щодо горизонталі Вгору і Вниз відповідно до руху, і чим більше відхилення, тим більша швидкість.
  • Лікоть управляється відхиленням долоні щодо горизонталі праворуч і ліворуч відповідно. Чим більше відхилення, тим більша швидкість.
  • Плечо контролюється обертанням долоні Праворуч і Ліворуч відносно витягнутої долоні лицьовою стороною вгору. Обертання долоні щодо осі ліктя, викликає помахування робо-рукою.
  • Основа контролюється як і Плечо, але з положенням долоні лицьовою стороною вниз.

Крок 9: Що ще можна доопрацювати?

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

Градієнтне збільшення швидкості: кожен рух двигуна починається на мінімальній швидкості, яка потім поступово збільшується з кожною секундою, доки не досягне необхідного максимуму. Це дозволить точніше керувати кожним двигуном, особливо двигунами Захоплення та Зап'ястя.
Швидше гальмування: при отриманні команди зупинки від контролера двигун ще змінює своє становище протягом приблизно 50мс, тому «ламання» руху забезпечить чіткіше керування.
А що ще?

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

Але це у майбутньому, а зараз удачі у вашій творчості і сподіваюся моє мозкове керівництвобуло вам корисно!

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

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

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

У проекті використано 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 секунди

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

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

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

Проект 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-сумісну плату. З іншого боку якось мені нагодилася можливість дешево виготовити плати (про що я теж писав). У результаті все це закінчилося тим, що я використав для управління маніпулятором свою власну Arduino-сумісну плату та спеціалізований шилд.


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


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

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

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

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

Відео роботи

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

Посилання

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

Даний проект є багаторівневим модульним завданням. Перший етап проекту - складання модуля роботизованої руки-маніпулятора, що постачається у вигляді набору деталей. Другим етапом завдання буде складання інтерфейсу IBM PC також із набору деталей. Нарешті, третій етап завдання є створення модуля голосового управління.

Маніпулятором робота можна управляти вручну за допомогою ручного пульта керування, що входить до комплекту набору. Рукою робота можна також керувати через зібраний з набору інтерфейс IBM PC, або використовуючи модуль голосового управління. Набір інтерфейсу IBM PC дозволяє керувати та програмувати дії робота через робочий комп'ютер IBM PC. Пристрій голосового керування дозволить вам керувати рукою робота за допомогою голосових команд.

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

Інтерфейс PC дозволить вам за допомогою персонального комп'ютера запрограмувати руку-маніпулятор на ланцюг автоматизованих дій або оживити її. Існує також опція, в якій можна управляти рукою в інтерактивному режимі, використовуючи або ручний контролер, або програму під Windows 95/98. «Оживлення» руки є «розважальною» частиною ланцюжка запрограмованих автоматизованих дій. Наприклад, якщо ви одягнете на руку-маніпцулятор дитячу ляльку рукавички і запрограмуєте пристрій на показ невеликого шоу, то ви запрограмуєте «оживання» електронної ляльки. Програмування автоматизованих процесів знаходить широке застосування у промисловості та промисловості розваг.

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

Отже, як бачимо, рука-маніпулятор робота виконує багато корисних функцій і може бути ідеальним інструментом вивчення різних процесів. Однак створення роботизованої руки-маніпулятора з «нуля» є складним завданням. Набагато простіше зібрати руку з деталей готового набору. Компанія OWI продає досить хороші набори руки-маніпулятора, які можна придбати у багатьох дистриб'юторів електронних пристроїв (див. список деталей наприкінці цього розділу). За допомогою інтерфейсу можна підключити зібрану руку-маніпулятор до порту принтера робочого комп'ютера. Як робочий комп'ютер можна використовувати машину серії IBM PC або сумісну, яка підтримує DOS або Windows 95/98.

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

Програмування ланцюжка автоматизованих дій також не становить особливих труднощів. Спершу натисніть клавішу Program, щоб перейти в програмну моду. У цій моді рука функціонує точно так, як це було описано вище, але при цьому на додаток кожна функція і час її дії фіксуються в script-файлі. Script-файл може містити до 99 різних функцій, включаючи паузи. Сам файл script може бути повторно відтворений 99 разів. Запис різних script-файлів дозволяє проводити експерименти з керованою комп'ютером послідовністю автоматизованих дій та «пожвавлення» руки. p align="justify"> Робота з програмою під Windows 95/98 більш детально описана нижче. Програма під Windows включена в набір інтерфейсу роботизованої руки-маніпулятора або може бути безкоштовно завантажена з Інтернету http://www.imagesco.com.

На додаток до програми Windows можна керувати рукою, використовуючи BASIC або QBASIC. Програма рівня DOS міститься на дискетах, які у комплект набору інтерфейсу. Однак DOS програма дозволяє здійснювати керування лише в інтерактивному режимі з використанням клавіатури (див. роздрук BASIC програми на одній з дискет). Програма рівня DOS не дозволяє створювати файли script. Однак якщо є досвід програмування на BASIC, то послідовність рухів руки-маніпулятора може бути запрограмована аналогічно роботі файлу script, що використовується в програмі під Windows. Послідовність рухів може повторюватися, як це зроблено у багатьох «живих» роботах.

Роботизована рука-маніпулятор

Рука-маніпулятор (див. рис. 15.1) має три ступені свободи руху. Ліктове зчленування може переміщатися вертикально вгору-вниз дугою приблизно 135°. Плечовий «суглоб» переміщує захоплення вперед і назад дугою приблизно 120°. Рука може повертатися на підставі годинникової стрілки або проти годинникової стрілки на кут приблизно 350°. Захоплення руки робота може брати та утримувати об'єкти до 5 см у діаметрі та повертатися навколо у кистьовому зчленуванні приблизно на 340°.

Мал. 15.1. Кінематична схема рухів та поворотів руки-робота


Для приведення руки в рух OWI Robotic Arm Trainer використовувала п'ять мініатюрних двигунів постійного струму. Двигуни забезпечують керування рукою за допомогою дротів. Таке «провідне» управління означає, що кожна функція руху робота (тобто робота відповідного двигуна) керується окремими проводами (подачею напруги). Кожен із п'яти двигунів постійного струму керує своїм рухом руки-маніпулятора. Управління проводами дозволяє зробити блок контролера руки, що безпосередньо реагує на електричні сигнали. Це полегшує схему інтерфейсу руки робота, який підключається до порту принтера.

Рука виготовлена ​​із легкого пластику. Більшість деталей, що несуть основне навантаження, також виконані із пластику. Двигуни постійного струму, використані в конструкції руки, являють собою мініатюрні високооборотні двигуни з низьким моментом, що крутить. Для збільшення крутного моменту кожен двигун з'єднаний з редуктором. Двигуни разом із редукторами встановлені всередині конструкції руки-маніпулятора. Хоча редуктор збільшує момент, що крутить, рука робота не може підняти або нести досить важкі предмети. Рекомендована максимально допустима вага при піднятті становить 130 г.

Набір для виготовлення руки робота та його компоненти представлені на рисунках 15.2 та 15.3.


Мал. 15.2. Набір для виготовлення руки-робота



Мал. 15.3. Редуктор перед збиранням

Принцип керування двигунами

Для того щоб зрозуміти принцип роботи керування по дротах, подивимося, як цифровий сигнал керує роботою окремого двигуна постійного струму. Для керування двигуном потрібні два комплементарні транзистори. Один транзистор має провідність типу PNP, інший – відповідно провідність типу NPN. Кожен транзистор працює як електронний ключ, керуючи рухом струму, що протікає через двигун постійного струму. Напрями руху струму, керовані кожним із транзисторів, протилежні. Напрямок струму визначає напрямок обертання двигуна відповідно за годинниковою стрілкою або проти годинникової стрілки. На рис. 15.4 наведено тестову схему, яку ви можете зібрати перед виготовленням інтерфейсу. Зверніть увагу, що коли обидва транзистори замкнені, двигун вимкнений. У кожний момент часу має бути включений лише один транзистор. Якщо в якийсь момент обидва транзистори випадково виявляться відкритими, це призведе до короткого замикання. Кожен двигун управляється двома транзисторами інтерфейсу, що працюють аналогічним чином.


Мал. 15.4. Схема пристрою перевірки

Конструкція інтерфейсу для PC

Схема PC інтерфейсу наведено на рис. 15.5. У набір деталей інтерфейсу PC входить друкована плата, розташування деталей на якій показано на рис. 15.6.


Мал. 15.5. Принципова схема інтерфейсу PC



Мал. 15.6. Схема розташування деталей РС інтерфейсу


Насамперед потрібно визначити бік монтажу друкованої плати. На боці монтажу прокреслено білі лінії, що позначають резистори, транзистори, діоди, ІС та роз'єм DB25. Усі деталі вставляють у плату з монтажного боку.

Загальна вказівка: після паяння деталі до провідників друкованої плати необхідно видалити надмірно довгі висновки з боку друку. Дуже зручно дотримуватись певної послідовності при монтажі деталей. Спершу змонтуйте резистори 100 кОм (кольорове маркування кілець: коричневе, чорне, жовте, золоте або срібне), які позначені R1-R10. Потім змонтуйте 5 діодів D1-D5, переконавшись, що чорна смужка на діодах знаходиться навпроти гнізда DB25, як показано білими лініями, нанесеними на монтажну сторону друкованої плати. Потім змонтуйте резистори 15 кОм (кольорове маркування, коричневий, зелений, помаранчевий, золотий або срібний), позначені R11 та R13. У позиції R12 припаяйте до плати червоний світлодіод. Анод світлодіода відповідає отвору під R12, позначеним знаком +. Потім змонтуйте 14- та 20-контактні панельки під ІС U1 та U2. Змонтуйте та впаяйте роз'єм DB25 кутового типу. Не намагайтеся вставляти ніжки роз'єму в плату із зайвим зусиллям, тут потрібна виключно точність. За потреби обережно похитайте роз'єм, намагаючись не погнути ніжки висновків. Закріпіть перемикач двигуна і регулятор напруги типу 7805. Відріжте чотири шматки дроту необхідної довжини і припаяйте до верхньої частини перемикача. Дотримуйтесь розташування проводів, як показано на малюнку. Вставте та впаяйте транзистори TIP 120 та TIP 125. Нарешті, впаяйте восьмиконтактний цокольний роз'єм та з'єднувальний 75 міліметровий кабель. Цоколь монтується так, що найдовші висновки дивляться нагору. Вставте дві ІС – 74LS373 та 74LS164 – у відповідні панелі. Переконайтеся, що положення ключа ІС на кришці збігається з ключем, позначеним білими лініями на друкованій платі. Ви могли побачити, що на платі залишилися місця під додаткові деталі. Це місце призначене для адаптера змінного струму. На рис. 15.7 показано фотографію готового інтерфейсу з боку монтажу.


Мал. 15.7. PC інтерфейс в зборі. Вид зверху

Принцип роботи інтерфейсу

Рука-маніпулятор має п'ять двигунів постійного струму. Відповідно нам знадобляться 10 шин входу/виходу для керування кожним двигуном, включаючи напрямок обертання. Паралельний (принтерний) порт IBM PC та сумісних машин містить лише вісім шин вводу/виводу. Для збільшення числа шин управління в інтерфейсі руки робота використовується ІС 74LS164, яка є перетворювачем послідовного коду на паралельний (SIPO). При використанні всього двох шин паралельного порту D0 і D1, якими надсилається послідовний код в ІС, ми можемо отримати вісім додаткових шин вводу/виводу. Як мовилося раніше, можна створити вісім шин ввода/вывода, але у цьому інтерфейсі використовуються п'ять із них.

Коли послідовний код надходить на вхід ІВ 74LS164, на виході ІВ з'являється відповідний паралельний код. Якби виходи ІС 74LS164 були безпосередньо підключені до входів транзисторів, що управляють, то окремі функції руки-маніпулятора включалися і вимикалися б в такт посилці послідовного коду. Очевидно, що така ситуація є неприпустимою. Щоб уникнути цього, у схему інтерфейсу введено другу ІС 74LS373 – керований восьмиканальний електронний ключ.

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

Після передачі послідовного пакета інформації в ІВ 74LS164 з виведення D2 паралельного порту подається сигнал на ІС 74LS373. Це дозволяє передати інформацію вже в паралельному коді з входу ІС 74LS174 на вихідні шини. Станом вихідних шин управляються відповідно транзистори TIP 120, які, своєю чергою, керують функціями руки-маніпулятора. Процес повторюється під час подачі кожної нової команди на руку-маніпулятор. Шини паралельного порту D3-D7 керують безпосередньо транзисторами TIP 125.

Підключення інтерфейсу до руки-маніпулятора

Живлення роботизованої руки-маніпулятора здійснюється від джерела живлення 6, що складається з чотирьох D-елементів, розташованих в основі конструкції. Інтерфейс PC живиться також від цього джерела 6 В. Джерело живлення є біполярним і видає напруги ±3 В. Живлення на інтерфейс подається через восьмиконтактний роз'єм Molex, приєднаний до основи маніпулятора.

Приєднайте інтерфейс до руки-маніпулятора за допомогою восьмижильного кабелю Molex довжиною 75 мм. Кабель Molex приєднується до роз'єму, розташованого в основі маніпулятора (див. рис. 15.8). Перевірте, чи правильно вставлено гніздо. Для з'єднання плати інтерфейсу з комп'ютером використовується кабель типу DB25 довжиною 180 см, що є у наборі. Один кінець кабелю приєднується до порту принтера. Інший кінець з'єднується з гніздом DB25 на платі інтерфейсу.


Мал. 15.8. З'єднання РС інтерфейсу з рукою-роботом


У більшості випадків до порту принтера штатно підключено принтер. Щоб не займатися приєднанням та відключенням роз'ємів кожного разу, коли ви хочете використовувати маніпулятор, корисно придбати двопозиційний блок перемикача шин принтерів A/B (DB25). Приєднайте роз'єм інтерфейсу маніпулятора до входу А, а принтер – до входу В. Тепер можна використовувати перемикач для з'єднання комп'ютера або з принтером, або з інтерфейсом.

Встановлення програми під Windows 95

Вставте дискету 3,5" з позначкою "Disc 1" у дисковод для флоппі-дисків і запустіть програму установки (setup.exe). Програма установки створить директорію з ім'ям "Images" на жорсткому диску і скопіює необхідні файли в цю директорію. У Start меню з'явиться піктограма Images Для запуску програми клацніть на іконці Images у стартовому меню.

Робота з програмою під Windows 95

З'єднайте інтерфейс із портом принтера комп'ютера за допомогою кабелю DB 25 довжиною 180 см. З'єднайте інтерфейс з основою руки-маніпулятора. До певного часу тримайте інтерфейс у вимкненому стані. Якщо в цей час увімкнути інтерфейс, інформація, що збереглася в порту принтера, може викликати рухи руки-маніпулятора.

Клацнувши двічі по іконці Images у стартовому меню, запустіть програму. Вікно програми показано на рис. 15.9. Під час роботи програми червоний світлодіод на платі інтерфейсу має блимати. Примітка:щоб світлодіод почав блимати, включення живлення інтерфейсу не потрібно. Швидкість миготіння світлодіода визначається швидкістю роботи процесора комп'ютера. Мерехтіння світлодіода може виявитися дуже тьмяним; для того, щоб це помітити, вам, можливо, доведеться зменшити освітленість у кімнаті і скласти долоні «кільцем» для спостереження за світлодіодом. Якщо світлодіод не блимає, можливо, програма звертається за помилковою адресою порту (порт LPT). Щоб переключити інтерфейс на іншу адресу порту (LPT порт), зайдіть у вікно меню установки адреси порту принтера (Printer Port Options box), розташованого у правому верхньому куті екрана. Виберіть іншу опцію. Правильне встановлення адреси порту викликає блимання світлодіода.


Мал. 15.9. Скріншот програми PC інтерфейсу під Windows


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

Створення файлу script

Для програмування рухів та автоматизованих послідовностей дій руки-маніпулятора використовуються файли script. Script-файл містить список тимчасових команд, які керують рухами руки-маніпулятора. Створити файл script дуже просто. Для створення файлу натисніть функціональну клавішу program. Ця операція дозволить увійти в моду програмування script-файлу. Натискаючи на функціональні клавіші, ми керуватимемо рухами руки, як ми вже робили, але при цьому інформація команд записуватиметься в жовту script-таблицю, розташовану в нижньому лівому кутку екрана. Номер кроку, починаючи з одиниці, буде вказано в лівій колонці, а для кожної нової команди він збільшуватиметься на одиницю. Тип руху (функції) вказано у середній колонці. Після повторного клацання функціональної клавіші виконання руху припиняється, а третьої колонці з'являється значення часу виконання руху від початку до закінчення. Час виконання руху вказується з точністю до чверті секунди. Продовжуючи так само, користувач може запрограмувати в script-файл до 99 рухів, включаючи паузи в часі. Потім файл script можна зберегти, а надалі завантажити з будь-якої директорії. Виконання команд файлу script можна циклічно повторити до 99 разів, для чого необхідно ввести кількість повторів у вікно Repeat і натиснути Start. Для закінчення запису в файл script натисніть клавішу Interactive. Ця команда переведе комп'ютер назад до інтерактивного режиму.

«Оживлення» предметів

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

Обмеження галузі застосування

Якщо ви хочете досягти професійного рівня виконання автоматизованих дій або «пожвавлення» предметів, то, так би мовити, для підтримки марки, точність позиціонування під час виконання рухів у кожний момент часу має наближатися до 100%.

Однак ви можете помітити, що в міру повторення послідовності дій, записаних у файлі script, положення руки-маніпулятора (патерн-руху) буде відрізнятися від початкового. Це відбувається з кількох причин. У міру розряду батарей джерела живлення руки-маніпулятора зменшення потужності, що підводиться до двигунів постійного струму, призводить до зниження моменту, що крутить, і швидкості обертання двигунів. Таким чином, довжина переміщення маніпулятора і висота піднятого вантажу за той самий проміжок часу буде відрізнятися для свіжих і «свіжих» батарей. Але причина не лише у цьому. Навіть при стабілізованому джерелі живлення частота обертання валу двигуна змінюватиметься, оскільки відсутня регулятор частоти обертання двигуна. Для кожного фіксованого відрізка часу кількість обертів щоразу трохи відрізнятиметься. Це призведе до того, що кожного разу буде відрізнятися і положення руки-маніпулятора. На додачу до всього, в шестернях редуктора є певний люфт, який також не береться до уваги. Під впливом всіх цих факторів, які ми тут докладно розглянули, при виконанні циклу повторюваних команд файлу script-файлу положення руки-маніпулятора буде щоразу трохи відрізнятися.

Пошук вихідного положення

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

Для цього є багато можливостей. В одному з основних методів позиційний контроль у кожній точці не передбачено. Натомість використовується набір кінцевих вимикачів, які відповідають вихідній «стартовій» позиції. Кінцеві вимикачі визначають лише одну позицію – коли маніпулятор доходить до положення «старт». Щоб це зробити, необхідно встановити послідовність кінцевих вимикачів (кнопок) таким чином, щоб вони замикалися, коли маніпулятор досягає крайнього положення у тому чи іншому напрямку. Наприклад, один кінцевий вимикач можна встановити на підставі маніпулятора. Вимикач повинен спрацьовувати лише тоді, коли рука-маніпулятор досягне крайнього положення при обертанні за годинниковою стрілкою. Інші кінцеві вимикачі потрібно встановити на плечовому та ліктьовому зчленуванні. Вони повинні спрацьовувати за повного розгинання відповідного зчленування. Ще один вимикач встановлюється на пензлі та спрацьовує, коли пензель повертається до упору за годинниковою стрілкою. Останній кінцевий вимикач встановлюється на захопленні та замикається при його повному відкриванні. Щоб поставити маніпулятор у вихідне положення, кожен можливий рух маніпулятора здійснюється у бік, необхідний для замикання відповідного кінцевого вимикача, доки цей вимикач не замкнеться. Після того як досягнуто початкове положення для кожного руху, комп'ютер буде точно знати справжнє положення руки-маніпулятора.

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

У деяких послідовностях знання тільки вихідного положення виявляється недостатнім, наприклад, при піднятті яйця без ризику роздавити його шкаралупу. У таких випадках необхідна складніша і точніша система позиційного зворотного зв'язку. Сигнали датчиків можуть бути оброблені за допомогою АЦП. Отримані сигнали можуть бути використані для визначення значень таких параметрів, як положення, тиск, швидкість і момент, що обертає. Як ілюстрацію можна навести такий простий приклад. Уявіть, що ви прикріпили невеликий лінійний резистор змінний до вузла захоплення. Змінний резистор встановлений таким чином, що переміщення його двигуна вперед і назад пов'язане з відкриттям та закриттям захоплення. Таким чином, залежно від ступеня відкриття захоплення змінюється опір змінного резистора. Після калібрування, за допомогою вимірювання поточного опору змінного резистора можна точно встановити кут розкриття затискачів захоплення.

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

Система ручного керування інтерфейсом

Після того, як ви переконаєтеся, що інтерфейс працює правильним чином, можна за допомогою 8-контактного плоского роз'єму підключити до нього блок ручного керування. Перевірте положення підключення 8-контактного роз'єму Molex до головки роз'єму на платі інтерфейсу, як показано на рис. 15.10. Акуратно вставте гніздо до його надійного з'єднання. Після цього рукою-маніпулятором можна керувати з ручного пульта будь-якої миті часу. Не має значення, чи інтерфейс з'єднаний з комп'ютером чи ні.


Мал. 15.10. Підключення ручного керування

Програма DOS керування з клавіатури

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

В голосовому управлінні рукою-маніпулятором використовується набір розпізнавання мовлення (УРР), описаний в гол. 7. У цьому розділі ми виготовимо інтерфейс, який зв'язує УРР з рукою-маніпулятором. Цей інтерфейс також пропонується у вигляді набору компанією Images SI, Inc.

Схема інтерфейсу для УРР показано на рис. 15.11. В інтерфейсі використаний мікроконтролер 16F84. Програма для мікроконтролера виглядає так:


'Програма інтерфейсу УРР

Symbol PortA = 5

Symbol TRISA = 133

Symbol PortB = 6

Symbol TRISB = 134

If bit4 = 0 then trigger 'Якщо запис у тригер дозволено, читати схе

Goto start ‘Повторення

pause 500 'Чекання 0,5 с

Peek PortB, B0 ‘Читання коду BCD

If bit5 = 1 then send “Вихідний код

goto start ‘Повторення

peek PortA, b0 ‘Читання порту А

if bit4 = 1 then eleven 'Число є 11?

poke PortB, b0 ‘Вихідний код

goto start ‘Повторення

if bit0 = 0 then ten

goto start ‘Повторення

goto start ‘Повторення



Мал. 15.11. Схема контролера УРР для руки-робота


Оновлення програми під 16F84 можна безкоштовно завантажити з http://www.imagesco.com

Програмування інтерфейсу УРР

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

Таблиця 15.1

Список деталей для інтерфейсу PC

(5) Транзистор NPN TIP120

(5) Транзистор PNP TIP 125

(1) ІС 74164 перетворювач коду

(1) ІС 74LS373 вісім ключів

(1) Світлодіод червоний

(5) Діод 1N914

(1) Гніздо роз'єму Molex на 8 контактів

(1) Кабель Molex 8-жильний довжиною 75 мм

(1) Двопозиційний перемикач

(1) Роз'єм кутовий типу DB25

(1) Кабель DB 25 1,8 м із двома роз'ємами М – типу.

(1) Друкована плата

(3) Резистор 15 кОм, 0,25 Вт


Усі перелічені деталі входять у комплект набору.

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

(5) Транзистор NPN TIP 120

(5) Транзистор PNP TIP 125

(1) ІС 4011 логічний елемент АБО-НЕ

(1) ІС 4049 – 6 буферів

(1) ІС 741 операційний підсилювач

(1) Резистор 5,6 кОм, 0,25 Вт

(1) Резистор 15 кОм, 0,25 Вт

(1) Головна частина роз'єму Molex 8 контактів

(1) Кабель Molex 8 жил, довжина 75 мм

(10) Резистор 100 кОм, 0,25 Вт

(1) Резистор 4,7 кОм, 0,25 Вт

(1) ІС регулятор напруги 7805

(1) ІС PIC 16F84 мікроконтролер

(1) Кварцовий резонатор 4,0 МГц

Набір інтерфейсу руки-маніпулятор

Набір для виготовлення руки маніпулятора компанії OWI

Інтерфейс розпізнавання мови для руки-маніпулятора

Набір пристрою розпізнавання мовлення


Деталі можна замовити у:

Images, SI, Inc.