В данный набор входят необходимые детали для самостоятельной сборки каркаса роботизированной руки-манипулятора. Все детали выполнены из акрила и рассчитаны для сборки компактной и оптимальной по своей конструкции руки-манипулятора с раздвижной клешней.
СЕРВОДВИГАТЕЛИ В КОМПЛЕКТ КОНСТРУКТОРА НЕ ВХОДЯТ
Для полной сборки и «оживления» руки вам также понадобится, как минимум, 4 серводвигателя SG-90 или MG-90, плата управляющего контроллера, например, Arduino и плата расширения Sensor Shield для простого и надежного подключения серводвигателей к портам Arduino и источнику питания. Вы также можете собрать схему без платы расширения, используя соединительные провода папа-папа и беспаечную макетную плату.
Инструкция по сборке
Нажмите на картинку для просмотра изображения в полном размере.
При сборке следите за положением валов серводвигателей
Код для установки двигателей в нужное положение перед сборкой
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
int servo1=A1; // двигатель базы int servo2=A0; // двигатель руки 1 int servo3=6; // двигатель руки 2 int servo4=9; // двигатель клешни int myangle; int pulsewidth; void setup() { pinMode(servo1,OUTPUT); pinMode(servo2,OUTPUT); pinMode(servo3,OUTPUT); pinMode(servo4,OUTPUT); } void servopulse(int servopin,int myangle) // функция для установки вала двигателя в нужное положение { pulsewidth=(myangle*11)+500; digitalWrite(servopin,HIGH); delayMicroseconds(pulsewidth); digitalWrite(servopin,LOW); delay(20-pulsewidth/1000); } void loop() { servopulse(servo1,90); // Установка двигателя на 90 градусов delay(1000); servopulse(servo2,0); // Утановка двигателя на 0 градусов delay(1000); servopulse(servo3,180); // Утановка двигателя на 180 градусов delay(1000); servopulse(servo4,0); // Утановка двигателя на 0 градусов delay(1000); } |
Проверка работы руки с помощью заданных движений
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
#include <Servo.h> Servo myservo1; // Создание четырех объектов Servo для управления двигателями Servo myservo2; Servo myservo3; Servo myservo4; int pos1=90, pos2=70, pos3=120, pos4=0, d=10; // исходное положение для двигателей и задержка для управления скоростью void setup() { // указание номеров портов, к котороым подключены двигатели: A1, A0, 6, 9 myservo1.attach(A1); // база myservo2.attach(A0); // рейка смещения по горизонтали myservo3.attach(6); // рейка смещения по вертикали myservo4.attach(9); // клешня myservo1.write(pos1); // установка исходных положений для двигателей myservo4.write(pos4); delay(1000); myservo2.write(pos2); myservo3.write(pos3); delay(1500); } void loop() { // повернуть направо for(pos1;pos1>10;pos1--) { myservo1.write(pos1); delay(d); } delay(1000); // повернуть налево for(pos1;pos1<170;pos1++) { myservo1.write(pos1); delay(d); } delay(1000); // установить по центру for(pos1;pos1>90;pos1--) { myservo1.write(pos1); delay(d); } delay(1000); // смещения по горизонтали for(pos2;pos2<120;pos2++) { myservo2.write(pos2); delay(d); } delay(1000); for(pos2;pos2>40;pos2--) { myservo2.write(pos2); delay(d); } delay(1000); for(pos2;pos2<70;pos2++) { myservo2.write(pos2); delay(d); } delay(1000); // смещния по вертикали for(pos3;pos3<170;pos3++) { myservo3.write(pos3); delay(d); } delay(1000); for(pos3;pos3>100;pos3--) { myservo3.write(pos3); delay(d); } delay(1000); for(pos3;pos3<120;pos3++) { myservo3.write(pos3); delay(d); } delay(1000); // раскрыть клешню for(pos4;pos4<20;pos4++) { myservo4.write(pos4); delay(d); } delay(1000); // схватить for(pos4;pos4>0;pos4--) { myservo4.write(pos4); delay(d); } delay(1000); } |