Роботизирана ръка манипулатор на arduino. Свързване и управление на манипулатора

Роботизираната ръка MeArm е джобна версия на индустриална ръка. MeArm е лесен за сглобяване и управление робот, механична ръка. Манипулаторът има четири степени на свобода, което улеснява хващането и преместването на различни малки предмети.

Този продукт се предлага като комплект за сглобяване. Включва следните части:

  • комплект прозрачни акрилни части за сглобяване на механичен манипулатор;
  • 4 серва;
  • контролна платка, на която са разположени микро микроконтролер Arduino Pro и графичен дисплей Nokia 5110;
  • джойстикова дъска, съдържаща два двуосни аналогови джойстика;
  • USB захранващ кабел.


Преди сглобяването на механичния манипулатор е необходимо да се калибрират сервосистемите. За калибриране ще използваме контролера Arduino. Свързваме сервосистемите към платката Arduino (необходимо е външно захранване от 5-6V 2A).

Серво средно, ляво, дясно, нокът; // създаване на 4 серво обекта

Празна настройка()
{
Serial.begin(9600);
middle.attach(11); // прикрепя серво към щифт 11, за да завърти платформата
left.attach(10); // прикрепя серво към щифт 10 на лявото рамо
right.attach(9); // прикрепя серво към щифт 11 на дясното рамо
claw.attach(6); // прикрепя серво към щифт 6 нокът (улавяне)
}

void loop()
{
// задава позицията на сервото по големина (в градуси)
middle.write(90);
left.write(90);
right.write(90);
claw.write(25);
забавяне (300);
}
С помощта на маркер направете линия през тялото на серво мотора и шпиндела. Свържете пластмасовата кобилица, включена в комплекта, към сервото, както е показано по-долу, като използвате малкия винт, включен в комплекта за монтаж на серво. Ще ги използваме в тази позиция, когато сглобяваме механичната част на MeArm. Внимавайте да не преместите позицията на шпиндела.


Сега можете да сглобите механичния манипулатор.
Вземете основата и прикрепете краката към нейните ъгли. След това монтирайте четири 20 mm болта и завийте гайките върху тях (половината от общата дължина).

Сега прикрепяме централното серво с два 8 мм болта към малка плоча и прикрепяме получената структура към основата с помощта на 20 мм болтове.

Сглобяваме лявата част на конструкцията.

Сглобяваме дясната част на конструкцията.

Сега трябва да свържете лявата и дясната секции. Първо отивам на адаптерната плоча

След това надясно и получаваме

Свързване на конструкцията към платформата

И ние събираме „ноктите“

Прикрепяме „нокътя“

За сглобяване можете да използвате следното ръководство (на английски) или ръководство за сглобяване на подобен манипулатор (на руски).

Диаграма на щифта

Сега можете да започнете да пишете код на Arduino. За да управлявате манипулатора, заедно с възможността за управление на контрола с помощта на джойстик, би било хубаво да насочите манипулатора към определена точка в декартови координати (x, y, z). Има съответната библиотека, която може да бъде изтеглена от github - https://github.com/mimeindustries/MeArm/tree/master/Code/Arduino/BobStonesArduinoCode.
Координатите се измерват в mm от центъра на въртене. Началната позиция е в точката (0, 100, 50), тоест 100 mm напред от основата и 50 mm от земята.
Пример за използване на библиотеката за инсталиране на манипулатор в определена точка в декартови координати:

#include "meArm.h"
#включи

Void setup() (
arm.begin(11, 10, 9, 6);
arm.openGripper();
}

Void loop() (
// нагоре и наляво
arm.gotoPoint(-80,100,140);
// хванете
arm.closeGripper();
// надолу, вреда и надясно
arm.gotoPoint(70,200,10);
// отпуснете хватката
arm.openGripper();
// връщане към началната точка
arm.gotoPoint(0,100,50);
}

Методи на класа meArm:

невалиден започвам(вътр pinBase, вътр pinShoulder, вътр щифтЛъкът, вътр pinGripper) - стартиране на meArm, посочване на свързващи щифтове за средни, леви, десни сервосистеми. Трябва да се извика в setup();
невалиден openGripper() - отворете хватката;
невалиден closeGripper() - улавяне;
невалиден gotoPoint(плавам х, плавам г, плавам z) - преместете манипулатора в позиция на декартови координати (x, y, z);
плавам getX() - текуща X координата;
плавам getY() - текуща Y координата;
плавам getZ() - текуща Z координата.

Ръководство за сглобяване (английски)

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

Видеото показва демонстрация на моя робот.

Стъпка 1: Списък с материали



Ще ни трябва:

  1. Ардуино платка. Използвах Uno, но всяко разнообразие ще свърши еднакво добре работата за проекта.
  2. Сервомашини, 4 от най-евтините, които ще намерите.
  3. Материали за корпуса по ваш вкус. Подходящи са дърво, пластмаса, метал, картон. Моят проект е направен от стар тефтер.
  4. Ако не искате да се занимавате с печатна платка, тогава ще ви трябва макет. Малка платка ще свърши работа; потърсете опции с джъмпери и захранване - те могат да бъдат доста евтини.
  5. Нещо за основата на ръката - използвах кутия за кафе, не е най-добрият вариант, но това е всичко, което намерих в апартамента.
  6. Тънък конец за раменния механизъм и игла за дупки.
  7. Лепило и лента, за да държите всичко заедно. Няма нищо, което да не може да се закрепи с тиксо и горещо лепило.
  8. Три резистора 10K. Ако нямате резистори, в кода има заобиколно решение за такива случаи най-добрият вариантще купи резистори.

Стъпка 2: Как работи



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

Стъпка 3: Модифициране на джойстика

Ако приемем, че вече сте приключили със сглобяването на механизма на рамото, ще премина към частта с джойстика.

За този проект е използван стар джойстик, но по принцип всяко устройство с бутони ще свърши работа. Аналоговите бутони (гъби) се използват за управление на сервомеханизми, тъй като по същество те са само потенциометри. Ако нямате джойстик, можете да използвате три обикновени потенциометъра, но ако сте като мен и си правите сам стар джойстик, ето какво трябва да направите.

Свързах потенциометри към макет, всеки от тях има по три терминала. Единият от тях трябва да бъде свързан към GND, вторият към +5V на Arduino, а средният към входа, който ще определим по-късно. Няма да използваме оста Y на левия потенциометър, така че имаме нужда само от потенциометъра над джойстика.

Що се отнася до превключвателите, свържете +5V към единия край и проводника, който отива към другия вход на Arduino към другия край. Моят джойстик има обща +5V линия за всички превключватели. Свързах само 2 бутона, но след това свързах още един, защото беше необходим.

Също така е важно да отрежете кабелите, които отиват към чипа (черен кръг на джойстика). След като завършите всичко по-горе, можете да започнете окабеляването.

Стъпка 4: Окабеляване на нашето устройство

Снимката показва електрическото окабеляване на устройството. Потенциометрите са лостчета на джойстика. Коляното е дясната ос Y, основата е дясната ос X, рамото е лявата ос X. Ако искате да промените посоката на сервомеханизмите, просто променете позицията на +5V и GND проводниците на съответния потенциометър.

Стъпка 5: Качване на код

В този момент трябва да изтеглим прикачения код на вашия компютър и след това да го качим на Arduino.

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

  1. Отворете Arduino IDE и поставете кода в него
  2. В Инструменти/Дъска изберете вашата дъска
  3. В Инструменти/Сериен порт изберете порта, към който е свързана вашата платка. Най-вероятно изборът ще се състои от един елемент.
  4. Щракнете върху бутона Качване.

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

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

файлове

Стъпка 6: Стартиране на проекта

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

Ето начин за програмиране на ръката:

  1. Отворете сериен монитор в Arduino IDE, това ще улесни наблюдението на процеса.
  2. Запазване начална позиция, като щракнете върху Запазване.
  3. Преместете само едно серво наведнъж, например Shoulder Up и натиснете Save.
  4. Активирайте ръката също само по време на нейната стъпка и след това запазете, като натиснете Save. Деактивирането също се извършва в отделна стъпка, последвано от натискане на запис.
  5. Когато завършите последователността от команди, натиснете бутона за възпроизвеждане, роботът ще се премести в начална позиция и след това ще започне да се движи.
  6. Ако искате да го спрете, изключете кабела или натиснете бутона за нулиране на платката Arduino.

Ако сте направили всичко правилно, резултатът ще бъде подобен на този!

Надявам се урокът да ви е бил полезен!

Изглед от вътрешната страна на дланта на хуманоидния робот RKP-RH101-3D. Дланта на ръката на хуманоидния робот е притисната на 50%. (виж Фиг. 2).

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

Така е в общ контурманипулаторно устройство RKP-RH101-3D. Що се отнася до сложността на задачите, които може да реши даден робот, оборудван с различни манипулатори, които заместват ръцете му, те до голяма степен зависят от сложността и съвършенството на устройството за управление.
Прието е да се говори за три поколения роботи: индустриални, адаптивни и с изкуствен интелект. Но без значение какъв вид робот е проектиран, той не може без ръце на манипулатор, за да изпълнява различни задачи. Връзките на манипулатора са подвижни една спрямо друга и могат да извършват ротационни и транслационни движения. Понякога, вместо просто да грабне обект от индустриални роботи, последната връзка на манипулатора (ръката му) е някакъв работен инструмент, например бормашина, гаечен ключ, пръскачка за боя или заваръчна горелка. Хуманоидните роботи могат също така да имат различни допълнителни миниатюрни устройства на върха на пръстите на своите манипулатори с форма на ръка, например за пробиване, гравиране или рисуване.

Общ изглед на хуманоиден боен робот на сервоприводи с ръце RKP-RH101-3D (виж фиг. 3).


връзка:

Ако сте сглобили частите на манипулатора в съответствие с инструкциите, можете да започнете да сглобявате електронната схема. Предлагаме да свържете сервосистемите на манипулатора към Arduino UNO чрез Trerma-Power Shield и да контролирате сервосистемите с помощта на потенциометри Trema.

  • Завъртането на копчето на първия потенциометър Trema ще завърти основата.
  • Завъртането на копчето на втория потенциометър Trema ще завърти лявото рамо.
  • Завъртането на третото копче на потенциометъра Trema ще завърти дясното рамо.
  • Завъртането на четвъртото копче на потенциометъра Trema ще премести ръкохватката.

Програмният код (скицата) осигурява защита на сервосистемите, която се състои в това, че диапазонът на тяхното въртене е ограничен от интервала (два ъгъла) на свободна игра. Минималните и максималните ъгли на въртене са посочени като последните два аргумента на функцията map() за всяко серво. И стойността на тези ъгли се определя по време на процеса на калибриране, който трябва да се извърши преди започване на работа с манипулатора.

Програмен код:

Ако подадете захранване преди калибриране, манипулаторът може да започне да се движи неправилно! Първо изпълнете всички стъпки за калибриране.

#включи // Свържете библиотеката Servo за работа със серво серво Servo servo1; //Деклариране на обект servo1 за работа с базовото серво задвижване Servo servo2; //Деклариране на обект servo2 за работа със серво на лявото рамо Servo servo3; //Деклариране на обект servo3 за работа със серво на дясната ръка Servo servo4; //Деклариране на обект servo4 за работа със сервото за улавяне int valR1, valR2, valR3, valR4; //Деклариране на променливи за съхраняване на стойностите на потенциометъра //Присвояване на щифтове: const uint8_t pinR1 = A2; // Определете константата от изходния номер на контролния потенциометър. основа const uint8_t pinR2 = A3; // Определете константата от изходния номер на контролния потенциометър. ляво рамо const uint8_t pinR3 = A4; // Определете константата от изходния номер на контролния потенциометър. дясно рамо const uint8_t pinR4 = A5; // Определете константата от изходния номер на контролния потенциометър. улавяне const uint8_t pinS1 = 10; // Дефиниране на константата с номера на щифта на базовото серво задвижване const uint8_t pinS2 = 9; // Дефиниране на константата с номера на щифта на серво задвижването на лявото рамо const uint8_t pinS3 = 8; // Дефиниране на константата с номера на щифта на серво задвижването на дясното рамо const uint8_t pinS4 = 7; // Дефиниране на константа с пин номера на серво устройството за улавяне void setup())( // Кодът на функцията за настройка се изпълнява веднъж: Serial.begin(9600); // Иницииране на трансфер на данни към монитора на серийния порт servo1.attach (pinS1); // Присвояване на серво задвижване 1 на серво задвижване 1 servo2.attach (pinS2); // Присвояване на управлението на серво задвижване 2 на серво задвижване 2 servo3.attach (pinS3); // Присвояване на управлението на серво задвижване 2 задвижване 3 към обекта servo4.attach(pinS4); // Присвояване на управлението на серво задвижване 4 към обекта servo4 loop())( // Функционалният код на цикъла се изпълнява непрекъснато: valR1=map(analogRead(pinR1)). , 0, 1024, 10, 170); servo1.write(valR1); // Завъртане с основата. 0, 1024, 80, 170); // Контролирайте лявото рамо. Ъглите, посочени в този ред: 80 и 170, може да се наложи да бъдат променени (калибрирани) ) valR3=map(analogRead(pinR3), 0, 1024, 60, 170 ); // Контролирайте дясното рамо Ъглите, посочени в този ред: 60 и 170 може да се наложи да бъдат променени (калибрирани) valR4=map(analogRead(pinR4), 0, 1024, 40, 70); servo4.write(valR4); // Контрол на заснемането Ъглите, посочени в този ред: 40 и 70 може да се наложи да бъдат променени (калибрирани) Serial.println((String) "A1 = "+valR1+",\t A2 = "+valR2+",\t A3 = "+valR3+ ", \t A4 = "+valR4); // Показване на ъглите на монитора)

Калибриране:

Преди да започнете работа с манипулатора е необходимо да го калибрирате!

    Калибрирането се състои в определяне на крайните стойности на ъгъла на въртене за всяко серво, така че частите да не пречат на техните движения.
  • Изключете всички сервосистеми от Trema-Power Shield, качете скицата и свържете захранването.
  • Отворете монитора на серийния порт.
  • Мониторът ще покаже ъглите на въртене на всяко серво (в градуси).
  • Свържете първото серво (което контролира въртенето на основата) към щифт D10.
  • Завъртането на копчето на първия потенциометър Trema (щифт A2) ще завърти първото серво (щифт D10) и мониторът ще промени текущия ъгъл на това серво (стойност: A1 = ...). Крайните позиции на първото серво ще бъдат в диапазона от 10 до 170 градуса (както е написано в първия ред на кода на цикъла). Този диапазон може да бъде променен чрез замяна на стойностите на последните два аргумента на функцията map() в първия ред на кода на цикъла с нови. Например, замяната на 170 със 180 ще увеличи крайната позиция на сервото в дадена посока. И като замените 10 с 20, ще намалите другата крайна позиция на същото серво.
  • Ако сте заменили стойностите, трябва да качите отново скицата. Сега сервото ще се върти в новите граници, посочени от вас.
  • Свържете второто серво (което контролира въртенето на лявото рамо) към щифт D9.
  • Завъртането на копчето на втория потенциометър Trema (щифт A3) ще доведе до завъртане на второто серво (щифт D9), а мониторът ще промени стойността на текущия ъгъл на това серво (стойност: A2 = ...). Крайните позиции на второто серво ще бъдат в диапазона от 80 до 170 градуса (както е написано във втория ред на скицата на цикъла). Този диапазон се променя по същия начин, както при първото серво.
  • Ако сте заменили стойностите, трябва да качите отново скицата.
  • Свържете третото серво (което контролира въртенето на дясното рамо) към щифт D8. и го калибрирайте по същия начин.
  • Свържете четвъртото серво (контролиращо захващащото устройство) към щифт D7. и го калибрирайте по същия начин.

Достатъчно е да извършите калибриране веднъж, след сглобяване на манипулатора. Промените, които правите (стойности на граничните ъгли) ще бъдат запазени във файла със скицата.

Създаваме роботизиран манипулатор с помощта на далекомер и внедряваме подсветка.

Ще изрежем основата от акрил. Ние използваме серво задвижвания като двигатели.

Общо описание на проекта за роботизиран манипулатор

Проектът използва 6 серво мотора. За механичната част е използван акрил с дебелина 2 мм. Основата от диско топка беше полезна като статив (единият двигател е монтиран вътре). Използват се също ултразвуков сензор за разстояние и 10 мм светодиод.

За управление на робота се използва захранваща платка Arduino. Самият източник на захранване е компютърното захранване.

Проектът предоставя изчерпателни обяснения за разработването на роботизирана ръка. Отделно се разглеждат въпросите за захранването на разработения дизайн.

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

Да започнем разработката. Ще ви трябва:

  • 6 сервомотора (използвах 2 модела mg946, 2 mg995, 2 futuba s3003 (mg995/mg946 имат по-добри характеристики от futuba s3003, но последните са много по-евтини);
  • акрил с дебелина 2 мм (и малко парче с дебелина 4 мм);
  • ултразвуков сензор за разстояние hc-sr04;
  • Светодиоди 10 мм (цвят - по Ваша преценка);
  • статив (използван като основа);
  • алуминиева дръжка (струва около 10-15 долара).

За контрол:

  • Плащане Ардуино Уно(проектът използва домашна платка, която е напълно подобна на Arduino);
  • захранваща платка (ще трябва да я направите сами, ще се върнем към този въпрос по-късно, изисква специално внимание);
  • захранване (в този случай се използва компютърно захранване);
  • компютър за програмиране на вашия манипулатор (ако използвате Arduino за програмиране, тогава Arduino IDE)

Разбира се, ще ви трябват кабели и някои основни инструменти като отвертки и други подобни. Сега можем да преминем към дизайна.

Механичен монтаж

Преди да започна да разработвам механичната част на манипулатора, заслужава да се отбележи, че нямам чертежи. Всички възли бяха направени "на коляното". Но принципът е много прост. Имате две акрилни връзки, между които трябва да инсталирате серво мотори. И другите два линка. Също така за монтаж на двигатели. Е, самият грайфер. Най-лесният начин да закупите такъв захват е в интернет. Почти всичко е монтирано с винтове.

Дължината на първата част е около 19 см; вторият - около 17,5; Дължината на предната връзка е около 5,5 см. Изберете останалите размери в съответствие с размерите на вашия проект. По принцип размерите на останалите възли не са толкова важни.

Механичното рамо трябва да осигурява ъгъл на въртене от 180 градуса в основата. Така че трябва да инсталираме серво мотор отдолу. В този случай той е инсталиран в същата диско топка. Във вашия случай това може да е всяка подходяща кутия. Роботът е монтиран на този серво мотор. Можете, както е показано на фигурата, да инсталирате допълнителен метален фланец пръстен. Можете и без него.

За монтиране на ултразвуков сензор се използва акрил с дебелина 2 мм. Можете да инсталирате светодиод точно отдолу.

Трудно е да се обясни подробно как точно се конструира такъв манипулатор. Много зависи от компонентите и частите, които имате на склад или закупите. Например, ако размерите на вашите сервомеханизми са различни, връзките на акрилната арматура също ще се променят. Ако размерите се променят, калибрирането на манипулатора също ще бъде различно.

Определено ще трябва да удължите кабелите на сервомотора след завършване на разработката на механичната част на манипулатора. За тези цели този проект използва кабели от интернет кабел. За да изглежда всичко това, не бъдете мързеливи и инсталирайте адаптери на свободните краища на удължените кабели - женски или мъжки, в зависимост от изходите на вашата Arduino платка, щит или източник на захранване.

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

Манипулаторна хватка

За да инсталирате дръжката, ще ви трябва серво мотор и няколко винта.

И така, какво точно трябва да се направи.

Вземете кобилицата от сервото и я скъсете, докато пасне на хватката ви. След това затегнете двата малки винта.

След като монтирате сервото, завъртете го в крайно ляво положение и стиснете челюстите на захвата.

Сега можете да инсталирате сервото с 4 болта. В същото време се уверете, че двигателят е все още в най-лявата позиция и челюстите на захващащото устройство са затворени.

Можете да свържете серво задвижването към платката Arduino и да проверите функционалността на грайфера.

Моля, имайте предвид, че може да има проблеми с работата на грайфера, ако болтовете/винтовете са твърде стегнати.

Добавяне на осветление към показалеца

Можете да озарите проекта си, като добавите осветление към него. За това бяха използвани светодиоди. Прави се лесно и изглежда много ефектно на тъмно.

Местата за инсталиране на светодиоди зависят от вашата креативност и въображение.

Електрическа схема

Можете да използвате потенциометър от 100 kOhm вместо резистор R1, за да регулирате яркостта ръчно. Като съпротивление R2 са използвани резистори 118 Ohm.

Списък на основните компоненти, които са използвани:

  • R1 - резистор 100 kOhm
  • R2 - резистор 118 ома
  • Транзистор bc547
  • Фоторезистор
  • 7 светодиода
  • Превключване
  • Връзка към Arduino платка

Като микроконтролер е използвана платка Arduino. За захранване е използвано захранване от персонален компютър. Като свържете мултиметъра към червения и черния кабел, ще видите 5 волта (които се използват за серво моторите и ултразвуковия сензор за разстояние). Жълто и черно ще ви дадат 12 волта (за Arduino). Правим 5 конектора за сервомоторите, паралелно свързваме положителните към 5 V, а отрицателните към земята. Същото и със сензора за разстояние.

След това свържете останалите конектори (по един от всяко серво и два от далекомера) към платката, която запоихме, и Arduino. В същото време не забравяйте да посочите правилно щифтовете, които сте използвали в програмата в бъдеще.

Освен това на захранващата платка беше инсталиран светодиоден индикатор за захранване. Това е лесно за изпълнение. Освен това е използван резистор от 100 ома между 5 V и земята.

10-милиметровият светодиод на робота също е свързан към Arduino. Резистор от 100 ома преминава от щифт 13 към положителния крак на светодиода. Отрицателно - до земята. Можете да го деактивирате в програмата.

За 6 серво мотора се използват 6 конектора, тъй като двата серво мотора в долната част използват един и същ управляващ сигнал. Съответните проводници са свързани и свързани към един щифт.

Повтарям, че захранването от персонален компютър се използва като захранване. Или, разбира се, можете да закупите отделно захранване. Но като се има предвид факта, че имаме 6 диска, всеки от които може да консумира около 2 A, такова мощно захранване няма да бъде евтино.

Моля, обърнете внимание, че конекторите от сервосистемите са свързани към изходите на ШИМ на 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);

(//серво 1 аналогов пин 0

val = analogRead(potpin); // чете стойността на потенциометъра (стойност между 0 и 1023)

// мащабира получената стойност за използване със серво (получаване на стойност в диапазона от 0 до 180)

myservo1.write(val); // привежда сервото в позиция в съответствие с изчислената стойност

забавяне (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); //serva 5 на аналогов пин 4

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

myservo5.write(val);

Скицирайте с помощта на ултразвуков сензор за разстояние

Това е може би една от най-впечатляващите части на проекта. На манипулатора е монтиран сензор за разстояние, който реагира на препятствия наоколо.

Основните обяснения на кода са представени по-долу

#define trigPin 7

Следната част от кода:

Присвоихме имена на всички 5 сигнала (за 6 устройства) (може да бъде всичко)

Следва:

Serial.begin(9600);

pinMode(trigPin, ИЗХОД);

pinMode(echoPin, INPUT);

pinMode(led, OUTPUT);

myservo1.attach(3);

myservo2.attach(5);

myservo3.attach(9);

myservo4.attach(10);

myservo5.attach(11);

Казваме на платката Arduino към кои щифтове са свързани светодиодите, серво моторите и сензорът за разстояние. Тук няма нужда да променяте нищо.

празна позиция1())(

digitalWrite(led, HIGH);

myservo2.writeMicroseconds(1300);

myservo4.writeMicroseconds(800);

myservo5.writeMicroseconds(1000);

Има някои неща, които можете да промените тук. Зададох позиция и я нарекох позиция1. Ще се използва в бъдещата програма. Ако искате да осигурите различно движение, променете стойностите в скоби от 0 до 3000.

След това:

празна позиция2())(

digitalWrite(led,LOW);

myservo2.writeMicroseconds(1200);

myservo3.writeMicroseconds(1300);

myservo4.writeMicroseconds(1400);

myservo5.writeMicroseconds(2200);

Подобно на предишното парче, само че в този случай е позиция2. По същия принцип можете да добавяте нови позиции за движение.

голяма продължителност, разстояние;

digitalWrite(trigPin, LOW);

забавяне Микросекунди (2);

digitalWrite(trigPin, HIGH);

забавяне Микросекунди (10);

digitalWrite(trigPin, LOW);

продължителност = pulseIn(echoPin, HIGH);

разстояние = (продължителност/2) / 29.1;

Сега основният код на програмата започва да работи. Не трябва да го променяте. Основната задача на горните редове е да конфигурирате сензора за разстояние.

След това:

ако (разстояние<= 30) {

ако (разстояние< 10) {

myservo5.writeMicroseconds(2200); //отворен грабер

myservo5.writeMicroseconds(1000); //затваряне на грайфера

Вече можете да добавяте нови движения въз основа на разстоянието, измерено от ултразвуковия сензор.

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

позиция1(); //по същество ръката ще работи каквото посочите между скобите ( )

else( // ако разстоянието е по-голямо от 30 cm, отидете на позиция2

position()2 // подобно на предишния ред

Можете да промените разстоянието в кода и да правите каквото искате.

Последни редове код

ако (разстояние > 30 || разстояние<= 0){

Serial.println("Извън диапазона"); // изведе съобщение в серийния монитор, че сме излезли извън посочения диапазон

Serial.print(разстояние);

Serial.println("cm"); //разстояние в сантиметри

забавяне (500); //закъснение 0,5 секунди

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

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



Споделете