Работу выполнил: Гапонов Игорь Александрович ученик 10 класса.
Руководитель: Игнатьев Павел Алексеевич
Скачать работу (174 кб,.doc)
Цель – создать мобильного робота на колесной платформе
Задачи:
1. Выбрать компонентную базу и собрать робота;
2. Написать простую программу для движения робота по заданной траектории;
3. Произвести отладку программы.
Роботы используются во всех сферах
Военное дело, промышленность, быт
Понятие «мобильный робот» подразумевает электромеханическое устройство способное
самостоятельно передвигаться по заданной программе.
Мобильный робот с ультразвуковым датчиком препятствий
Программа: самостоятельное движение по помещению с огибанием препятствий
Посмотреть видео:
1. Робот - крокодил видео в формате
.3gp
2. Робот с ультразвуковым датчиком, осуществляет
повороты на основе генератора случайных чисел
видео в формате
.3gp
3. Робот который следует по черной линии тестового
поля используя датчик освещенности
видео в формате
.3gp
Основные части мобильного робота:
Алгоритм подачи напряжения
Мотор |
Время (мс) |
Напряжение
(условие в программе) |
1
2
|
2000 |
0
0
|
1
2
|
200 |
+120
50 |
1
2 |
1000 |
+120
+200 |
1
2
|
1000 |
+200
+200 |
1
2
|
200 |
0
0
|
1
2
|
1000 |
+120
-200* |
1
2
|
1000 |
+200
-200 |
1
2
|
200 |
+200
0
|
1
2
|
2000 |
0
0
|
1
2
3
|
1500
|
-200
0
+100 |
1
2
3
|
2000
|
-120
0
+100 |
* от
начального значения на выходе
Программа для движения
робота по траектории внутри круга:
#include <AFMotor.h>
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
void setup() {
}
void loop() {
motor1.run(RELEASE);
motor2.run(RELEASE);
motor1.setSpeed(0);
motor2.setSpeed(0);
delay (2000);
motor1.run(FORWARD);
motor2.run(RELEASE);
motor1.setSpeed(120);
motor2.setSpeed(50);
delay (200);
motor1.run(FORWARD);
motor2.run(FORWARD);
motor1.setSpeed(120);
motor2.setSpeed(200);
delay (1000);
motor1.run(FORWARD);
motor2.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
delay (1000);
motor1.run(RELEASE);
motor2.run(RELEASE);
motor1.setSpeed(0);
motor2.setSpeed(0);
delay (200);
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor1.setSpeed(120);
motor2.setSpeed(200);
delay (1000);
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
delay (1000);
motor1.run(FORWARD);
motor2.run(RELEASE);
motor1.setSpeed(120);
motor2.setSpeed(0);
delay (200);
motor1.run(RELEASE);
motor2.run(RELEASE);
motor1.setSpeed(0);
motor2.setSpeed(0);
delay (2000);
motor1.run(BACKWARD);
motor2.run(RELEASE);
motor3.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(0);
motor3.setSpeed(100);
delay (1500);
motor1.run(BACKWARD);
motor2.run(RELEASE);
motor3.run(FORWARD);
motor1.setSpeed(120);
motor2.setSpeed(0);
motor3.setSpeed(100);
delay (2000);
}
Пояснение к программе:
Для подключения библиотеки силового модуля вводится строка #include <AFMotor.h> в заголовке программы.
В программе создаём объект для двигателя
на 1 канале (M1)
и объект для двигателя на 2 канале (M2)
с помощью строк:
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
В программе создаём объект для двигателя на 1 канале (M1)
и объект для двигателя на 2 канале (M2)
с помощью строк:
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
Для сигнала заднего хода группой светодиодов
создадим объект с помощью строки
AF_DCMotor motor3(3);
Любая программа на С+ должна иметь строки
void setup() { }
void loop() {
Для управления движением применяются команды библиотеки силового модуля:
FORWARD (движение вперед), BACKWARD (движение назад) и RELEASE (остановка).
Также необходимо осуществлять управление напряжением двигателей.
Для этого применяется команда motorX.setSpeed(Y),
где X-номер объекта для двигателей,Y-уровень напряжения в пределах от 0 до 200.
Время выполнения команд определяется строкой delay (X),
где X-время в миллисекундах.
Поворот управляющего двигателя осуществляется подачей напряжения и сменой полярности командами FORWARD и BACKWARD.
На поворотах вначале подаётся неполное напряжение на двигатели командой:
motor1.setSpeed(120)
с плавным разгоном - командой: motor1.setSpeed(200).
Перед началом выполнения программы и возвращением
назад
дается задержка в 2 секунды командой delay (2000).
Для
плавного вхождения в поворот также используется
задержка в 200 миллисекунд командой delay (200).
При
заднем ходе включаются светодиоды на третьем канале.
|