Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Занятие 12 Драйверы двигателей, управление роботами

.doc
Скачиваний:
106
Добавлен:
11.03.2016
Размер:
154.11 Кб
Скачать

Курс «Основы робототехники». Занятие 12 Подключение моторов робота через драйвер двигателя на микросхеме L298N

Довольно часто возникает ситуация, когда нужно управлять не только скоростью, но и направлением вращения двигателя. В этом случае используется схема, называемая H-мост, на четырех транзисторах или реле. Такую схему можно самостоятельно собрать из транзисторов, но есть уже готовые микросхемы, содержащие ее, в частности, L298N, на которой собран используемый в роботах модуль.

Приведена схема для управления одним мотором:

Моторы подключаются к двум клеммникам справа и слева модуля

На контакт +12 В (+UП) подключается напряжение питания моторов (в роботах туда подключены аккумуляторы)

Контакт Gnd подключается к Gnd источника питания и Gnd Arduino

Модуль имеет четыре управляющих входа In1, In2, In3, In4. Каждая пара управляет своим мотором:

При подаче сигнала HIGH (логической 1) на вход In1 мотор М1 движется в одном направлении, при подаче HIGH на In2 мотор вращается в другом направлении:

In1

In2

Результат

0

0

Мотор 1 не вращается

1

0

Мотор 1 вращается в одну сторону

0

1

Мотор 1 вращается в другую сторону

1

1

Мотор 1 в режиме торможения, лучше избегать такого состояния

Аналогично управляется мотор M2 через контакты In3 и In4

Таким образом, можно составить следующую таблицу управляющих сигналов для движений робота:

In1

In2

In3

In4

Результат

0

0

0

0

Робот стоит на месте

1

0

1

0

Робот едет вперед

0

1

0

1

Робот едет назад

1

0

0

1

Робот разворачивается на месте в одну сторону

0

1

0

1

Робот разворачивается на месте в другую сторону

Данные сигналы можно подавать командами digitalWrite или, если нужно управлять скоростью, analogWrite

Роботы клуба на сделанной клубом печатной плате имеют следующую нумерацию контактов:

Контакт

Цифровой пин Arduino

In1

6

In2

9

In3

10

In4

11

Примечание: нумерация может быть другой, в этом случае достаточно просто подать по очереди на каждый пин высокий уровень (например, используя программу Blink, меняя там номер пина), чтобы определить, какой пин каким колесом и направлением управляет

Практическое занятие 1. Управление одним колесом робота

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

  1. Подключение Arduino Nano к компьютеру осуществляется маленьким разъемом USB. Переключите в среде Arduino тип контроллера: Сервис / Плата / Arduino Nano

  2. Откройте программу Файл / Примеры / Basic / Blink

  3. Исправьте номер пина int led = 13; на пин, соответствующий управляющему контакту In1: int In1 = 6;. Соответственно, замените переменную led везде в программе на переменную In1

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

Примечание: иногда контакты робота могут не соответствовать приведенной выше таблице. Чтобы установить соответствие, можно в данной программе попробовать различные номера контактов (In1=9, In1=10, In1=11) и посмотреть, как движутся колеса

Практическое занятие 2. Робот едет вперед

  1. Добавьте в программу еще один контакт – In3, который включает езду второго колеса вперед. Добавьте к включению первого включение и второго мотора:

digitalWrite(In1, HIGH);

digitalWrite(In3, HIGH);

и, соответственно, выключение:

digitalWrite(In1, LOW);

digitalWrite(In3, LOW);

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

Практическое занятие 3. Робот едет вперед и назад

  1. Добавьте в программу еще два контакта – In2 и In4. Напишите программу для реализации следующего алгоритма работы (см. таблицу управляющих сигналов):

  • Робот едет вперед 1 секунду

  • Ожидание 1 секунда

  • Робот едет назад 1 секунду

  • Ожидание 1 секунда

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

    Практическое занятие 3. Робот едет по заданной траектории

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

    • Робот едет вперед 1 секунду

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

    • Робот поворачивается на месте 0,5 секунды

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

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

    Практическое занятие 4. Произвольные движения

    Придумайте и напишите программу движений для робота (например, танец, езда по кругу, езда по спирали и т.д.)

    Практическое занятие 5. Движение по линии

    1. Напишем программу для движения робота по черной линии на белом фоне. Программа использует код из примера AnalogInOutSerial для опроса аналогового датчика и вывода результата в Монитор порта и код из примера Button для управления моторами. Программа приведена в приложении

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

    digitalWrite(In1, HIGH); → analogWrite(In1, 150);

    digitalWrite(In3, HIGH); → analogWrite(In3, 150);

    digitalWrite(In1, LOW); → analogWrite(In1, 0);

    digitalWrite(In3, LOW); → analogWrite(In3, 0);

    В данному случае число в analogWrite – скорость вращения мотора робота, от 0 (мотор стоит) до 255 (максимальная скорость, такая же выдается при команде digitalWrite HIGH). Скорость 150 дана для примера, подбирается оптимум между скоростью и точностью, чтобы с одной стороны, робот не съезжал с линии, с другой стороны, проходил ее как можно быстрее

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

    Практическое занятие 6. Робот, следующий за ладонью

    1. Откройте программу, написанную на занятии 9, практическом занятии 7 «Робот, следующий за ладонью»

    2. Измените номера пинов светодиодов на номера контактов In1 и In3 (запускающих движение робота вперед)

    3. Измените контакты ультразвукового датчика расстояния на контакты платы робота: Echo – 2, Trig – 3

    4. Загрузите программу в робота и убедитесь, что она работает

    Домашнее задание:

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

    2. Начать готовиться к соревнованиям движения по линии (один или два аналоговых датчика освещенности на роботе, черная линия). Искать или писать более совершенную программу. Состязание будет проведено на занятии 15