§ 56. Плата контроллера R-5, Arduino Nano.
348 напряжений или токов, управляемый малым напряжением или то- ком; такой драйвер применяется для управления электромотором (драйвер мотора), крупной светодиодной сборкой (драйвер свето- диода) и т. д.
? Вопросы и задания 1. Что такое драйвер? 2. Почему нельзя Arduino UNO просто поставить на платформу с моторами, которые вращают колёса? 3. Чем различаются и что общего у контроллеров Arduino UNO и Arduino Nano?
Задание Установите контроллер R-5 на платформу с колёсами, управляемыми мо- торами.
§ 56. Плата контроллера R-5, Arduino Nano. Управляем моторами
Для начала стоит научить машинку просто ездить. Познакомимся с программным управлением для самых простых движений: вперёд-назад и повороты. Напомним, что программа для контроллера Arduino обычно состо- ит из трёх частей: • в первой части, как в обычной математической задаче, описываются исходные данные. Мы присваиваем названия, назначение, функцио- нал контактов контроллера. Записываем, какие библиотеки мы будем использовать в ходе выполнения программы;
• во второй части с названием Setup пишем уже непосредственно код программы. Но этот код исполняется только один раз за время работы программы. Это необходимо для того, чтобы запрограм мировать выходы, входы контроллера на всё время действия про граммы; • третья часть программы loop представляет собой команды, которые исполняются процессором в течение всего периода работы. В первой части кода следует определить, какими контактами платы Arduino вы будете управлять драйвером и соответственно электромото рами, придумать такие название команд, чтобы было понятно их назна чение. В блоке R5 контакты Arduino жёстко подключены к входам драйвера.
• Цифровые и аналоговые контакты платы Arduino Nano выведены на соответствующие разъёмы J2, J3. • Цифровые контакты D2, D3, D4, D5 с контроллера идут на разъём J8. В разъёме J8 джамперами выходы контроллера подключаются или к разъёму J2, или к драйверу электромоторов. • Если блок управления R5 используется для управления роботом, то джамперы необходимо установить в нижнее положение, чтобы выходы Arduino соединились со входами драйвера. • Если блок R5 используется для других экспериментов, то джампе ры необходимо установить в верхнее положение. • Когда вы подключаете мотор и даёте команду на вращение мотора, то, чтобы закрутить его в другую сторону, вам, скорее всего, придёт ся изменить полярность подключения. Помните, у батареек есть плюс и минус? А вот для управления скоростью вращения мотора, как правило, используется широтноим пульсная модуляция (ШИМ). Давайте посмотрим на рисунок 9. 35: M_R_IN — вход драйвера, управляю щий направлением вращения правого элек тромотора. Высокий уровень (HIGHT) — вращение вперёд; M_R_EN — вход драйвера, разрешаю щий вращение правого электромотора. Вы сокий уровень (HIGHT) разрешает враще Рис. 9. 35. Схема управления скоростью вращения мотора ние. При подаче на вход сигнала с широтно импульсной модуляцией вход управляет скоростью вращения; 350
M_L_IN — вход драйвера, управляющий направлением враще- ния левого электромотора. Высокий уровень (HIGHT) — вращение вперёд; M_L_EN — вход драйвера, разрешающий вращение левого элек- тромотора. Высокий уровень (HIGHT) разрешает вращение. При пода- че на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения. То есть для того чтобы мы могли управлять моторами робота, необ- ходимо соединить джамперами средние и нижние контакты разъёма J8.
В итоге получается следующее: контакт Arduino 2 (D2) — направление вращения правого мотора; контакт Arduino 3 (D3) — разрешение вращения правого мотора. При работе ШИМ — регулировка скорости вращения; контакт Arduino 4 (D4) — направление вращения левого мотора; контакт Arduino 5 (D5) — разрешение вращения левого мотора. При работе ШИМ — регулировка скорости вращения. Код управления моторами будет выглядеть следующим образом: #define DIR_R 2 // управлять направлением вращения правого мо- тора будем с контакта 2 #define SPEED_R 3 // управлять разрешением вращения и скоро- стью вращения правого мотора будем с контакта 3 #define DIR_L 4 //управлять направлением вращения левого мото- ра будем с контакта 4 #define SPEED_L 5 // управлять разрешением вращения и скоро- стью вращения левого мотора будем с контакта 5 В этой части кода больше не надо задавать никаких параметров. Приступаем ко второй части программы. Вы знаете, что в этой ча- сти кода команды исполняются только один раз. void setup() { pinMode (DIR_R, OUTPUT); // Драйвер управляется выходными сиг- налами с Arduino. //Поэтому мы определяем все контакты как OUTPUT pinMode (SPEED_R, OUTPUT); pinMode (DIR_L, OUTPUT); pinMode (SPEED_L, OUTPUT); }
И в третьей части пишется алгоритм работы, т. е. то, что робот дол- жен выполнять: void loop() { digitalWrite (DIR_R, HIGH); // Команда digitalWrite устанавливает на контакте 2 высокий уровень. Для драйвера моторов это означает то, что мотор будет вращаться вперёд digitalWrite (SPEED_R, HIGH); // высокий уровень на контакте 3 раз- решает драйверу вращать электромотор digitalWrite (DIR_L, HIGH); digitalWrite (SPEED_L, HIGH); delay(1000); // Вращаем 1 с digitalWrite (DIR_R, HIGH); digitalWrite (SPEED_R, LOW); // Низкий уровень запрещает враще- ние моторов digitalWrite (DIR_L, HIGH); digitalWrite (SPEED_L, LOW); delay(1000); //останов 1 с }
Практическая работа № 44
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|