Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

 § 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 вы будете управлять драйвером и соответственно электромото­ рами, придумать такие название команд, чтобы было понятно их назна­ чение. В блоке R­5 контакты Arduino жёстко подключены к входам драйвера.

• Цифровые и аналоговые контакты платы Arduino Nano выведены на

соответствующие разъёмы J2, J3.

• Цифровые контакты D2, D3, D4, D5 с контроллера идут на разъём J8. В разъёме J8 джамперами выходы контроллера подключаются или к разъёму J2, или к драйверу электромоторов.

• Если блок управления R­5 используется для управления роботом, то джамперы необходимо установить в нижнее положение, чтобы выходы Arduino соединились со входами драйвера.

• Если блок R­5 используется для других экспериментов, то джампе­ ры необходимо установить в верхнее положение.

• Когда вы подключаете мотор и даёте команду на вращение мотора, то, чтобы закрутить его в другую сторону, вам, скорее всего, придёт­ ся изменить полярность подключения. Помните, у батареек есть плюс и минус? А вот для управления скоростью вращения мотора,

как правило, используется широтно­им­ пульсная модуляция (ШИМ).

Давайте посмотрим на рисунок 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...