Перейти к содержимому


Фотография
- - - - -

Самоходная платформа. От простого к сложному.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Smham

Smham

    Пользователь

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 05 Июль 2015 - 09:20

Степени модернизации платформы:

  • Дистанционно управляемая платформа.
  • Дистанционно управляемая платформа с дополнительными сенсорами.
  • Самоходная (самостоятельно блуждающая) платформа.

Комплектующие:

 

КОЛЕСО 65 ММ – ЖЕЛТОЕ 2 штуки.

 

Скрытый текст

 

МОТОР-РЕДУКТОР "D" (1:288) 2 штуки.

 

Скрытый текст

 

ОПОРНОЕ КОЛЕСО

 

Скрытый текст

 

ARDUINO UNO R3

 

Скрытый текст

 

BLUETOOTH МОДУЛЬ для управления платформой

 

Скрытый текст

 

ИНФРАКРАСНЫЙ ДАТЧИК 2 - 20 СМ - 3 штуки

 

Скрытый текст

 

ДРАЙВЕР 800 МА для управления двигателями.

 

Скрытый текст



#2 Smham

Smham

    Пользователь

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 05 Июль 2015 - 09:57

Фото собранной платформы. Источник питания отсутствует.

 

Скрытый текст



#3 Smham

Smham

    Пользователь

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 06 Июль 2015 - 09:14

Подключает электромоторы к драйверу. На драйвере для этого выделены винтовые разъемы зеленого цвета. Левый мотор к контактам Motor A, правый мотор к контактам Motor B.  Контакт VCC драйвера к контакту 5V Arduino, контакт GND драйвера к контакту GND Arduino. Драйвер  использует четыре контакта Arduino-  4,5,6,7, для управления моторами.

  • Вывод 4 Arduino - вывод B-1A драйвера
  • Вывод 5 Arduino - вывод B-1B драйвера
  • Вывод 6 Arduino - вывод A-1A драйвера
  • Вывод 7 Arduino - вывод A-1B драйвера

Датчики расстояния на этом этапе задействовать не будем. Отправим платформу в путь с "закрытыми глазами"  :) .

Движение вперед осуществим с помощью одновременного вращения двух моторов в одну сторону. Поворот влево - методом остановки левого мотора и вращением вперед правого мотора. Поворот вправо - методом остановки правого мотора и вращением вперед левого мотора. Движение назад осуществим с помощью одновременного вращения двух моторов в обратную сторону. Вот такой нехитрый алгоритм.

Программа для  первого запуска платформы:

// вывод драйвера "левый мотор вперед" на вывод 6 Arduino
#define Forward_Motor_Left    6

// вывод драйвера "правый мотор вперед" на вывод 5 Arduino
#define Forward_Motor_Right   5 

// вывод драйвера "левый мотор назад" на вывод 7 Arduino
#define Back_Motor_Left       7

// вывод драйвера "правый мотор назад" на вывод 4 Arduino
#define Back_Motor_Right      4

// небольшая функция для облегчения написания алгоритма движения
void motion  (bool Forward, bool BackLeft, bool BackRight, int interval)
{
  digitalWrite  (6, Forward);
  digitalWrite  (5, Forward);
  digitalWrite  (7, BackLeft ); 
  digitalWrite  (4, BackRight ); 
  delay         (interval); 
}

void setup  () 
{
  // Устанавливаем выводы платы 4,5,6,7 на вывод сигналов управления 
  pinMode  (4, OUTPUT);
  pinMode  (5, OUTPUT); 
  pinMode  (6, OUTPUT); 
  pinMode  (7, OUTPUT);  
} 

void loop  () 
{ 
  // Подождем 3 секунды после включения питания.  
  delay  (3000); 

  // два мотора вращаем,1 секунду едем вперед 
  motion  (true, false, false, 1000);

  // Разворот в обратном направлении. Время для разворота подбирается экспериментально
  // Один мотор вращаем обратно
  motion  (false, true, false, 550);

  // Два мотора вращаем. Две секунды едем вперед
  motion  (true, false, false, 2000);

  // Разворот на 180 градусов в другую сторону. Время для разворота подбирается экспериментально.
  motion  (false, false, true, 550);

  // Две секунды едем вперед 
  motion  (true, false, false, 2000);

  // Поворот на 90 градусов. Время для поворота подбирается экспериментально. 
  motion  (false, true, false, 380); 

  // Три секунды едем назад 
  motion  (false, true, true, 3000);

  // Хватит ездить, пора писать новый маршрут :)))
  motion  (false, false, false, 0);
  
  while   (1)
    ; 
}


#4 Smham

Smham

    Пользователь

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 06 Июль 2015 - 09:34

Расшифровка функции

void motion  (bool Forward, bool BackLeft, bool BackRight, int interval) 

Конечно, для каждого маневра платформы мы могли бы писать такие команды:

{
  digitalWrite  (6, NIGH);
  digitalWrite  (5, NIGH);
  digitalWrite  (7, LOW); 
  digitalWrite  (4, LOW); 
  delay         (1000); 
} 

Вместо этого мы пишем команду одной строкой:

motion  (true, false, false, 1000);

Согласитесь,  довольно удобно



#5 Smham

Smham

    Пользователь

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 06 Июль 2015 - 09:55

Промежуточный алгоритм движения платформы.

 

 

Продолжение следует...


  • admin это нравится

#6 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 06 Июль 2015 - 14:55

Спасибо,очень интересно!

Ждем продолжения. :)






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных