На сегодняшний день, самым популярным H-мостом, является микросхема L298P. Motor Shield — плата расширения для Arduino на базе чипа L298P, позволяющая управлять моторами с напряжением 7–24 В.
Плата имеет 2 независимых канала. Используя их, можно подключить на выбор:
Выходы под каждый из двигателей выполнены в виде клеммника с винтом, поэтому пайка не требуется.
При разгоне и торможении двигатели сами индуцируют кратковременный обратный ток большой величины, который может выжечь контакты микроконтроллера. На Motor Shield установлены возвратные диоды, которые это предотвращают.
На плате предусмотрена возможность выбора источника питания: от платы Arduino или от внешнего источника, подключаемого к клеммам «+» и «−». По умолчанию выбран раздельный режим, но переставив джампер, вы связываете контуры питания Arduino и Motor Shield и вам достаточно питать только одну из плат.
На плате расположены светодиоды-индикаторы, показывающие направление и скорость по каждому из каналов и подачу питания.
Так как USB-разъём компьютера может обеспечить током не более 500 мА, рекомендуется использовать внешний источник питания, либо моторы, потребление которых не превышает данный порог.
При больших нагрузках микросхема-драйвер может сильно нагреться. Не прикасайтесь к ней, это может привести к ожогу.
Плата совместима со всеми Arduino, работающими на уровне 5 В и не совместима с Arduino Due, работающей с 3,3 В.
Для управления шасси с 4 моторами не нужно иметь два Motor Shield’а: вы можете подключить левую пару к одному каналу, а правую — ко второму. Ведь моторы на одной стороне должны работать синхронно.
Шилд имеет следующие пины подключения:
Vcc - подключение внешнего питания двигателей
+5 - питание логики
GND - общий
IN1, IN2, IN3, IN4 (разъем P4 на схеме) - входы управления двигателями
OUT1, OUT2 (разъем P2 на схеме) - выход первого двигателя
OUT3, OUT4 (разъем P3 на схеме) - выход второго двигателя
Выключатель S1 служит для переключения питания логической части микросхемы. Т.е. при включенном S1 питание логической части берется от внутреннего преобразователя модуля. При выключенном S1 питание берется от внешнего источника.
На модулях также присутствуют перемычки ENA и ENB для разрешения включения двигателей. Если необходимо, их можно также подключить к Arduino и задействовать, но это лишние 2 провода и в этих входах нет особого смысла.
ШИМ управление позволяет плавно изменять скорость вращение двигателя. Если нам не нужно ШИМ управление, то на соответствующий вход нужно просто подать логическую 1. На какой именно вход IN1 или IN2 вы подадите сигнал ШИМ, либо направление вращения - разницы не имеет. Тоже самое справедливо и для входов IN3, IN4.
Схема подключения шилда L298N к контроллеру Arduino:
Для питания логической части схемы необходимо нажать кнопку или вставить перемычку (зависит от типа модуля). Если же на вашем модуле не предусмотрен преобразователь 5В, то дополнительно, необходимо соединить вывод 5V от Arduino к входу +5 шилда.
Как видно из схемы выше, 2 и 4 вывод используются для установки направления движения, а 3 и 5 для ШИМ управления выводами.
Напишем тестовую программу, в которой мы будем в цикле изменять скорость вращения, а также направление вращения двигателей:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#define D1 2 // Направление вращение двигателя 1 #define M1 3 // ШИМ вывод для управления двигателем 1 #define D2 4 // Направление вращение двигателя 2 #define M2 5 // ШИМ вывод для управления двигателем 2 bool direction = 0; // Текущее направление вращения int value; // Текущее значение ШИМ void setup () { pinMode (D1, OUTPUT ); pinMode (D2, OUTPUT ); } void loop () { for (value = 0; value <= 255; value+=1) { digitalWrite (D1, direction); // Задаем направление вращения digitalWrite (D2, direction); analogWrite (M1, value); // Задаем скорость вращения analogWrite (M2, value); delay (20); } direction = direction ^ 1; // Инвертируем значение, чтобы в след. цикле вращаться в другую сторону } |