Мобильный робот и его программа

04.12.2017, 15:19
Источник: автор: Влад Шалаев


Работу выполнил: Гапонов Игорь Александрович ученик 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).
При заднем ходе включаются светодиоды на третьем канале.


Ключевые слова:
Мобильный робот
setSpeed
motor1
motor2
delay
FORWARD
RELEASE
DCMotor
BACKWARD
motor3
канал
объект
программа
видео
формат
напряжения
помощь
двигатель
датчик
AFMotor
include
Сделай сам механическую руку
которая пишет время на доске
Роботы своими руками
робот


Вернуться в рубрику:

Роботы своими руками

Возможно Вас заинтересует:

Мобильный робот от INEX - MicroCamp v 2.0: сборка
Мобильный робот от INEX - MicroCamp v 2.0: сборка



Хотите видеть на нашем сайте больше статей? Кликните Поделиться в социальных сетях! Спасибо!

Смотрите также:

Обратите внимание полезная информация.

Робототехника для каждого. 2024г.