Вы находитесь на странице: 1из 14

Урок 2

Манипулятор
на Arduino

Материалы урока прикреплены к данному PDF-файлу. Для досту-


па к материалам, урок необходимо открыть в программе Adobe
Acrobat Reader.

2
Манипулятор на Arduino

Манипулятор на Arduino
Манипулятор — это механизм для перемещения раз-
личных объектов и грузов. Проще говоря, это роботизи-
рованная рука, которая может выполнять сложные про-
цессы. Такой механизм необходим при работе в средах,
опасных для человека. К примеру, манипуляторы могут
выполнять задачи в вакуумной и радиоактивной среде,
или помогать в исследованиях подводных глубин (рис. 1).

Рисунок 1
Роботизированная рука — это программируемая
механическая рука, которая выполняет примерно те же
функции, что и руки человека. Это может быть как пол-
ноценный самостоятельный механизм, так и часть слож-
нейшего робота. Части манипулятора соединены между
собой таким образом, что допускают как вращательное
движение, так и поступательное линейное движение.
Благодаря этому он может поворачиваться, захватывать
предметы, поднимать и перемещать их.

3
Урок 2

Приступим к созданию манипулятора (рис. 2).

Рисунок 2
Для роботизированной руки нам понадобятся 4 сер-
вопривода, чтобы обеспечить полное управление меха-
низмом (рис. 3).

Рисунок 3

4
Манипулятор на Arduino

Управлять углами поворота сервопривода будем с по-


мощью потенциометров (рис. 4).

Рисунок 4
Для корпуса будем использовать механические ча-
сти робота. Это может быть набор из любого материала,
например, из дерева. Очень важно, чтобы детали были
прочными, иначе конструкция может не выдержать даже
малейшей нагрузки (рис. 5).

Рисунок 5

5
Урок 2

Переходим к составлению схемы проекта. Добавим


все необходимые компоненты на схему. Нам понадобят-
ся 4 сервопривода и 4 потенциометра (рис. 6).

Рисунок 6

Рисунок 7
Перейдем к написанию скетча. Переходим в Arduino
IDE и создаем новый файл. Сначала импортируем библи-

6
Манипулятор на Arduino

отеку Servo для работы с сервомотором. Для этого откры-


ваем Sketch — Include Library — Servo (рис. 7).
Теперь можем запрограммировать манипулятор. Опре-
деляем пины, к которым подключены сервоприводы и по-
тенциометры:
// Pin Definitions
#define POT_PIN_1 A3
#define POT_PIN_2 A4
#define POT_PIN_3 A1
#define POT_PIN_4 A5

#define SERVO_PIN_1 2
#define SERVO_PIN_2 3
#define SERVO_PIN_3 4
#define SERVO_PIN_4 5

Затем указываем стартовую позицию для каждого па-


раметра. Для готового механизма эти значения следует
подобрать самостоятельно. Причем они могут отличать-
ся для каждого сервопривода:
// Global variables and defines
const int servo9g1_1RestPosition = 20; //Starting position
const int servo9g2_2RestPosition = 20; //Starting position
const int servo9g3_3RestPosition = 20; //Starting position
const int servo9g4_4RestPosition = 20; //Starting position

Зададим переменную, в которую будем передавать


значение потенциометра. Достаточно будет лишь одной
переменной, в которую каждый раз будем передавать но-
вое значение:
int val;

7
Урок 2

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


Servo servo9g1_1;
Servo servo9g2_2;
Servo servo9g3_3;
Servo servo9g4_4;

Теперь напишем функцию, в которой зададим все


параметры:
void setup() {
// put your setup code here, to run once:
servo9g1_1.attach(SERVO_PIN_1);
servo9g1_1.write(servo9g1_1RestPosition);
servo9g2_2.attach(SERVO_PIN_2);
servo9g2_2.write(servo9g2_2RestPosition);
servo9g3_3.attach(SERVO_PIN_3);
servo9g3_3.write(servo9g3_3RestPosition);
servo9g4_4.attach(SERVO_PIN_4);
servo9g4_4.write(servo9g4_4RestPosition);
delay(100);
}

В этом коде мы соединили переменную с конкрет-


ным пином с помощью функции attach(). Затем с помо-
щью функции write() повернули каждый сервопривод
в заданную позицию на определенный угол.
Затем в цикле будем менять угол поворота сервопри-
водов в зависимости от положения потенциометров:
void loop() {
// put your main code here, to run repeatedly:
val = analogRead(POT_PIN_1);
val = map(val, 0, 1023, 0, 179);
servo9g1_1.write(val);
delay(15);

8
Манипулятор на Arduino

val = analogRead(POT_PIN_2);
val = map(val, 0, 1023, 0, 179);
servo9g2_2.write(val);
delay(15);

val = analogRead(POT_PIN_3);
val = map(val, 0, 1023, 0, 179);
servo9g3_3.write(val);
delay(15);

val = analogRead(POT_PIN_4);
val = map(val, 0, 1023, 0, 179);
servo9g4_4.write(val);
delay(15);

Обратите внимание, что функция map() преобразует


значения с потенциометра в значения от 0 до 179, то есть
180 допустимых значений. Однако не во всех случаях
следует выбирать такой большой угол. Если это необ-
ходимо, то уменьшите значение, например, до 90 граду-
сов. Тогда функция будет записана следующим образом
map(val, 0, 1023, 0, 90).
Обязательно проверьте код программы перед тем,
как загружать его на плату. Для этого нажмите Verify.
Если в нижней части окна нет сообщения об ошибках,
значит все сделано правильно (рис. 8).
Если же вы увидели сообщение об ошибке, внима-
тельно прочитайте его. Строка, в которой была обнару-
жена ошибка, будет подсвечена красным цветом. Так вы
сможете сразу все исправить.

9
Урок 2

8.)
Рисунок 8
Наконец, соберите манипулятор и загрузите программу
на плату Arduino. Убедитесь, что все работает правильно.
Попробуйте поднять со стола с помощью манипулятора
легкий небольшой предмет и переложить его (рис. 9-11).

Рисунок 9

10
Манипулятор на Arduino

Рисунок 10

Рисунок 11
Отлично, наш робот готов, но его все еще можно ав-
томатизировать или усовершенствовать. Манипуляторы
могут быть самых разных форм и размеров. Сделать более
совершенный механизм можно, например, добавив джой-
стик. Так управление станет проще и удобнее (рис. 12).
11
Урок 2

Рисунок 12
Кроме того, можно было бы собрать машинку с ма-
нипулятором и дополнить ее разнообразными датчика-
ми, а затем запрограммировать (рис. 13).

Рисунок 13
12
Манипулятор на Arduino

Манипуляторы также активно используют в промыш-


ленности и на крупных производствах (рис. 14).

Рисунок 14

13
Урок 2
Манипулятор на Arduino

© Компьютерная Академия «Шаг»


www.itstep.org

Все права на охраняемые авторским правом фото-, аудио- и видеопро-


изведения, фрагменты которых использованы в материале, принадле-
жат их законным владельцам. Фрагменты произведений используются
в иллюстративных целях в объёме, оправданном поставленной задачей,
в рамках учебного процесса и в учебных целях, в соответствии со ст. 1274
ч. 4 ГК РФ и ст. 21 и 23 Закона Украины «Про авторське право і суміжні
права». Объём и способ цитируемых произведений соответствует
принятым нормам, не наносит ущерба нормальному использованию
объектов авторского права и не ущемляет законные интересы автора
и правообладателей. Цитируемые фрагменты произведений на момент
использования не могут быть заменены альтернативными, не охраня-
емыми авторским правом аналогами, и как таковые соответствуют
критериям добросовестного использования и честного использования.
Все права защищены. Полное или частичное копирование материалов
запрещено. Согласование использования произведений или их фраг-
ментов производится с авторами и правообладателями. Согласованное
использование материалов возможно только при указании источника.
Ответственность за несанкционированное копирование и коммерческое
использование материалов определяется действующим законодатель-
ством Украины.

Вам также может понравиться