Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Занятие 3 Драйверы двигателей, управление моторами роботов.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
209.92 Кб
Скачать

Практическое занятие 5. Развороты робота

Для разворота направо левый мотор должен ехать вперед, правый назад:

digitalWrite(LF, HIGH);

digitalWrite(LB, LOW);

digitalWrite(RF, LOW);

digitalWrite(RB, HIGH);

Для разворота налево левый мотор должен ехать назад, правый вперед:

digitalWrite(LF, LOW);

digitalWrite(LB, HIGH);

digitalWrite(RG, HIGH);

digitalWrite(RB, LOW);

  1. На основе приведенного выше кода напишите программу, реализующую следующий алгоритм:

    1. Включение езды робота вперед

    2. Ожидание 1 секунда

    3. Включение разворота направо

    4. Ожидание 0,5 секунды

    5. Включение езды робота назад

    6. Ожидание 1 секунда

    7. Включение разворота налево

    8. Ожидание 0,5 секунды

Примечание: для облегчения отладки программы можно задать задержки в виде переменных в начале программы:

int drive_time = 1000; // время задержки при езде вперед или назад - 1 секунда

int turn_time = 500; // время задержки при поворотах - 0,5 секунды

delay (drive_time); // пример использования в программе

На будущее, рекомендуется, если значение повторяется в программе, задавать его в виде переменной. Чтобы при необходимости изменения этого значения изменять его только в одном месте

  1. Загрузите программу в робота, поставьте его на пол, включите его и убедитесь, что он выполняет заданный алгоритм

Практическое занятие 7. Задание скорости робота

Как можно было убедиться при испытаниях робота, управляемого командами digitalWrite, робот едет слишком быстро, что затрудняет управление и на гладкой поверхности колеса проскальзывают. Для обеспечения медленной езды проведите в Вашей программе следующие замены:

Исходная программа

Конечная программа

int speed = 150; // переменная скорости робота

digitalWrite(LF, HIGH);

analogWrite(LF, speed);

digitalWrite(LF, LOW);

analogWrite(LF, 0);

digitalWrite(RF, HIGH);

analogWrite(RF, speed);

digitalWrite(RF, LOW);

analogWrite(RF, 0);

Примечание: для быстроты замены можно воспользоваться автоматической заменой – команда Правка / Найти (сочетание клавиш Ctrl+F), в поле Найти – исходный вариант, в поле Заменить – конечный вариант, Заменить все.

Загрузите получившуюся программу в робота и убедитесь, что скорость его уменьшилась. Попробуйте изменить значение speed и убедиться в изменении скорости движения

Примечание 1: максимальная скорость робота 255, при этом команда analogWrite(LF, 255) действует аналогично команде digitalWrite(LF, HIGH)

Примечание 2: если подать на драйвер слишком малое число, например, analogWrite(LF, 20) – скорее всего, робот не поедет, так как напряжения на моторе не хватит для его вращения

Практическое занятие 8. Выравнивание скоростей моторов для движения по прямой

Из-за разных параметров моторов при одном и том же напряжении моторы крутятся с разной скоростью. Это проявляется тем, что робот не едет по прямой, что затрудняет управление. Подбором значений, подаваемых на моторы в программе командой analogWrite, можно выровнять скорости моторов на реальном роботе. Например, если робот забирает вправо – значит, левый мотор едет быстрее правого и на него нужно подавать в программе меньшую скорость

  1. Создайте новую программу и сохраните ее, например, под именем Calibration_motor (она может понадобиться позже)

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

  3. Добавьте две переменные – speed_left и speed_right – скорости на левом и правом моторе. Пусть робот едет только вперед:

int speed_left = 150;

int speed_right= 150;

analogWrite(LF, speed_left);

analogWrite(LB, 0);

analogWrite(RF, speed_right);

analogWrite(RB, 0);

  1. Загрузите программу в робота, поставьте его на пол, включите и понаблюдайте за его движением. Рекомендуется ставить робота вдоль какой-то прямой линии на полу, чтобы было легче определять, прямо ли едет робот

  2. Если робот при езде забирает влево – уменьшите значение speed_right и увеличьте speed_left. Если забирает вправо – наоборот

  3. Повторяйте пункты 2, 3 до тех пор, пока робот не будет ехать прямо

Примечание: рекомендуется записать найденные значения для своего робота. Например, на бумажку и положить ее в коробку для хранения робота

Практические занятия ниже можно проводить с установленным на робота маркером, карандашом или ручкой, если собран держатель для них и есть на чем рисовать