- Драйвер двигателей L298N. Подключение к Arduino и управление двумя двигателями
- Описание драйвера двигателей L298N
- Назначение контактов драйвера
- Схема подключения
- Скетч
- Драйвер шагового двигателя и двигателя постоянного тока L298N и Arduino
- Подключение модуля L298N
- L298N, Arduino и двигатель постоянного тока
- Драйвер двигателя L298N
- Обзор драйвера L298N
- Технические характеристики
- Подключение L298N к плате Arduino
- Пример использования
Драйвер двигателей L298N. Подключение к Arduino и управление двумя двигателями
Всем привет! Сегодня я покажу вам как подключать драйвер двигателей L298N к Arduino.
В этом уроке использованы:
1. Плата Arduino Uno
2. Компьютер с установленной Arduino IDE и драйверами для плат
3. Два двигателя с припаянными проводами
4. Драйвер двигателей L298N
5. Бокс и два литий-ионных аккумулятора на 3.7V(в качестве источника питания). Можно использовать и другой источник питания.
6. Соединительные провода типа папа-мама 6 штук
Описание драйвера двигателей L298N
Эта плата драйвера использует драйвер двигателей L298N. Он позволяет управлять двумя двигателями или шаговым двигателем(Nema-17). Максимальный потребляемый двигателями ток — 2 Ампера. Питать драйвер можно от 5V до 35V. Диапазон рабочих температур от -25 до 135 градусов. Также драйвер имеет контакты ENA и ENB, которые позволяют управлять скоростью двигателей с помощью ШИМ. Их нужно подключать к ШИМ-выходам платы Arduino. На Arduino Uno это пины 3, 5, 6, 9, 10 и 11.
У драйвера L298N есть внутреннее падение напряжения в Н-мосте, поэтому моторы получат на 2V меньше, чем напряжение источника питания .
Назначение контактов драйвера
VCC- контакт положительного питания 5V-35V.
Gnd- контакт отрицательного питания 5V-35V
5V — контакт положительного питания 5V для подключения других устройств
ENA — контакт управления скоростью первого двигателя
ENB — контакт управления скоростью второго двигателя
IN1 и IN2- контакты управления первым двигателем
IN3 и IN4- контакты управления вторым двигателем
OUT1 и OUT2 — разъёмы для первого двигателя
OUT3 и OUT4 — разъёмы для второго двигателя
Схема подключения
Приношу извинения, но на схеме подключения у драйвера L298N отсутствуют контакты ENA и ENB. Куда их подключать сказано ниже.
VCC(L298N) — плюс на источнике питания
Gnd(L298N) — минус на источнике питания
ENA(L298N) — Pin6(плата Arduino Uno)
ENB(L298N) — Pin9(плата Arduino Uno)
IN1(L298N) — Pin2(плата Arduino Uno)
IN2(L298N) — Pin3(плата Arduino Uno)
IN3(L298N) — Pin4(плата Arduino Uno)
IN4(L298N) — Pin5(плата Arduino Uno)
VCC(плата Arduino) — 5V(L298N)
Gnd(плата Arduino) — Gnd(L298N)
Скетч
Архив со схемой подключения и скетчем можно скачать отсюда .
Давайте приступим к написанию скетча. Чтобы двигатель крутился вперёд, нужно подать на один контакт плюс, а на другой минус. А если поменять полярность двигатель будет вращаться в обратную сторону. По этому принципу и пишется программа для L298N.
int motor1 = 2; //пин первого двигателя IN1
int motor2 = 3; //пин первого двигателя IN2
int motor3 = 4; //пин второго двигателя IN3
int motor4 = 5; //пин второго двигателя IN4
int ENA = 6; //пин регулировки скорости первого двигателя
int ENB = 9; //пин регулировки скорости второго двигателя
pinMode(motor1, OUTPUT); //переводим IN1 в режим вывода
pinMode(motor2, OUTPUT); //переводим IN2 в режим вывода
pinMode(motor3, OUTPUT); //переводим IN3 в режим вывода
pinMode(motor4, OUTPUT); //переводим IN4 в режим вывода
pinMode(ENA, OUTPUT); //переводим ENA в режим вывода
pinMode(ENB, OUTPUT); //переводим ENB в режим вывода
//вращаем оба двигателя вперёд с максимальной скоростью
delay(5000); //задержка 5 секунд
//вращаем оба двигателя назад с максимальной скоростью
Источник
Драйвер шагового двигателя и двигателя постоянного тока L298N и Arduino
Модуль L298N H-bridge можно использовать для двигателей, напряжение питания которых находится в диапазоне от 5 до 35 вольт.
Кроме того, на многих подобных платах есть встроенный 5В регулятор, который дает возможность запитывать ваши устройства.
Подключение модуля L298N
Прежде чем перейти к управлению двигателем постоянного тока и шаговым двигателем, разберемся с подключением модуля L298N (даташит, техническая информация от производителя).
Ссылки для заказа необходимого оборудования из Китая
- КУПИТЬ цифровой датчик температуры DS18B20;
- КУПИТЬ Arduino Uno R3;
Ниже приведены разъяснения к рисунку.
- Для двигателя постоянного тока 1 “+” или для шагового двигателя A+
- Для двигателя постоянного тока 1 “-” или для шагового двигателя A-
- Коннектор на 12 вольт. Снимите его, если используете напряжение питания больше 12 вольт.
- Питания вашего двигателя обеспечивается с этого выхода. Максимальное напряжение питания постоянным током 35 вольт. Если напряжение больше 12 вольт, разомкните контакты на 3 коннекторе.
- GND — земля.
- Питание 5 вольт, если коннектор на 12 вольт замкнут. Идеально для питания Arduino и т.п.
- Коннектор для двигателя постоянного тока 1. Можно подключить к ШИМ-выходу для управления скоростью двигателя постоянного тока.
- IN1.
- IN2.
- IN3.
- IN4.
- Коннектор для двигателя постоянного тока 2. В случае использования шагового двигателя, подключать сюда ничего не надо. Можно подключить к ШИМ-выходу для управления скоростью двигателя постоянного тока.
- Двигатель постоянного тока 2 “+” или шаговый двигатель B+.
- Двигатель постоянного тока 2 “-” или шаговый двигатель B-.
L298N, Arduino и двигатель постоянного тока
Данный модуль дает возможность управлять одним или двумя двигателями постоянного тока. Для начала, подключите двигатели к пинам A и B на контроллере L298N.
Если вы используете в проекте несколько двигателей, убедитесь, что у них выдержана одинаковая полярность при подключении. Иначе, при задании движения, например, по часовой стрелке, один из них будет вращаться в противоположном направлении. Поверьте, с точки зрения программирования Arduino это неудобно.
После этого подключите источник питания. Плюс — к четвертому пину на L298N, минус (GND) — к 5 пину. Если ваш источник питания до 12 вольт, коннектор, отмеченный 3 на рисунке выше, можно оставить. При этом будет возможность использовать 5 вольтовый пин 6 с модуля.
Данный пин можно использовать для питания Arduino. При этом не забудьте подключить пин GND с микроконтроллера к 5 пину на L298N для замыкания цепи. Теперь вам понадобится 6 цифровых пинов на Arduino. Причем некоторые пины должны поддерживать ШИМ-модуляцию.
ШИМ-пины обозначены знаком “
” рядом с порядковым номером.
Теперь подключите цифровые пины Arduino к драйверу. В нашем примере два двигателя постоянного тока, так что цифровые пины D9, D8, D7 и D6 будут подключены к пинам IN1, IN2, IN3 и IN4 соответственно. После этого подключите пин D10 к пину 7 на L298N (предварительно убрав коннектор) и D5 к пину 12 (опять таки, убрав коннектор).
Направление вращения ротора двигателя управляется сигналами HIGH или LOW на каждый привод (или канал). Например, для первого мотора, HIGH на IN1 и LOW на IN2 обеспечит вращение в одном направлении, а LOW и HIGH заставит вращаться в противоположную сторону.
При этом двигатели не будут вращаться, пока не будет сигнала HIGH на пине 7 для первого двигателя или на 12 пине для второго. Остановить их вращение можно подачей сигнала LOW на те же указанные выше пины. Для управления скоростью вращения используется ШИМ-сигнал.
Скетч приведенный ниже, отрабатывает в соответствии со схемой подключения, которую мы рассматривали выше. Двигатели постоянного тока и Arduino питаются от внешнего источника питания.
// подключите пины контроллера к цифровым пинам Arduino
Источник
Драйвер двигателя L298N
Товары
Обзор драйвера L298N
Драйвер L298N используется радиолюбителями для многофункционального управления двигателями постоянного тока. Схема модуля, состоящая из двух H-мостов, позволяет подключать к нему один биполярный шаговый двигатель или одновременно два щёточных двигателя постоянного тока. При этом есть возможность изменять скорость и направление вращения моторов. Управление осуществляется путём подачи соответствующих сигналов на командные входы, выполненные в виде штыревых контактов. На рисунке №1 показан внешний вид модуля с кратким описанием всех его составляющих.
Рисунок №1 – внешний вид модуля L298N
- OUT1 и OUT2 – разъёмы для подключения первого щёточного двигателя или первой обмотки шагового двигателя;
- OUT3 и OUT4 – разъёмы для подключения второго щёточного двигателя или второй обмотки шагового двигателя;
- VSS – вход для питания двигателей (максимальный уровень +35V);
- GND – общий провод (не забываем соединить с аналогичным входом Arduino. );
- Vs – вход для питания логики +5V. Через него непосредственно запитывается сама микросхема L298N. Есть ещё второй способ питания, при котором 5V для L298N берётся от встроенного в модуль стабилизатора напряжения. В таком случае на разъём подаётся только питание для двигателей (Vss), контакт Vs остаётся не подключенным, а на плате устанавливается перемычка питания от стабилизатора, который ограничит питающее моторы напряжение до приемлемых 5V.
- IN1, IN2 – контакты управления первым щёточным двигателем или первой обмоткой шагового двигателя.
- IN3, IN4 – контакты управления вторым щёточным двигателем или второй обмоткой шагового двигателя.
- ENA, ENB – контакты для активации/деактивации первого и второго двигателей или соответствующих обмоток ШД. Подача логической единицы на эти контакты разрешает вращение двигателей, а логический ноль – запрещает. Для изменения скорости вращения щёточных моторов на эти контакты подаётся ШИМ-сигнал. Для работы с шаговым двигателям, как правило, на эти контакты ставят перемычки, обеспечивающие постоянную подтяжку к +5V.
На рисунке №2 показана электрическая схема модуля L298N.
Рисунок №2 – электрическая схема модуля L298N
Как видно из вышеприведенной схемы, основным элементом модуля является микросхема L298N, в состав которой входят два полноценных H-моста. Каждый H-мост выполнен в виде сборки из четырёх транзисторных ключей с включённой в центре нагрузкой в виде обмотки двигателя. Такой подход позволяет менять полярность в обмотке и как следствие направление вращения двигателя путём чередования пар открытых и закрытых ключей. Более наглядно этот процесс демонстрирует рисунок №3.
Рисунок №3 – транзисторные мосты Н-типа
На рисунке изображены два транзисторных моста Н-типа. В первом случае на вход IN1 подаётся логическая единица, а на вход IN2 – логический ноль. Так как транзисторы в схеме моста имеют разный тип проводимости, то при таком входном сигнале транзисторы Т1 и Т4 останутся в закрытом состоянии, в то время, как через транзисторы Т2 и Т3 потечёт ток. Ввиду того, что единственный путь протекания тока лежит через обмотку двигателя, то последний окажется подключен правой клеммой к плюсу питания, а левой к минусу. Всё это приведёт к вращению мотора в определённом направлении. Абсолютно противоположная картина показана на нижнем рисунке. Здесь IN3 установлен в логический ноль, а IN4 в логическую единицу. Теперь ток течёт в обратном направлении (левая клемма – плюс, правая – минус), заставляя второй двигатель крутиться в противоположную сторону.
Технические характеристики
- Напряжение питания логики: 5V;
- Потребляемый логикой ток: 36mA;
- Напряжение питания моторов: от 5V до 35V;
- Рабочий ток драйвера: 2 А;
- Пиковый ток драйвера 3 А;
- Максимальная мощность: 20 Вт (при температуре 75оС);
- Диапазон рабочих температур: -25оС…+135оС;
- Размеры модуля: 43.5 х 43.2 х 29.4 мм;
Подключение L298N к плате Arduino
Работать с модулем L298N довольно просто и комфортно. Здесь не придётся изучать тонны литературы с описанием замороченных протоколов. Все сводится к простому переключению логических уровней на выводах Arduino плюс к генерации ШИМ, если требуется управлять скоростью вращения.
Так как драйвер способен управлять двумя типами моторов (щёточным или шаговым), то и работа с ним строится по-разному. Рассмотрим для начала подключение обычных щёточных моторов постоянного тока и управление ими с помощью платы Arduino Nano. На рисунке №4 показана соответствующая схема подключения.
Рисунок №4 – схема подключения двух щёточных двигателей постоянного тока
Следует обратить внимание, что в схеме предусмотрена возможность управления скоростью вращения, поэтому выводы ENA и ENB драйвера подключены к пинам Arduino, способным выдавать ШИМ-сигнал. Arduino питается от отдельного источника 7-12 В. Если напряжение питания моторов лежит в этом же диапазоне, то можно объединить питающие цепи в одну общую. Также необходимо следить за тем, чтобы минусовые провода всех элементов схемы были соединены между собой.
Для демонстрации возможностей модуля, напишем скетч, который будет вращать моторы с различной скоростью и периодически менять направления их вращения. Ниже приведена программа с подробными комментариями, которая реализует задуманный алгоритм.
В самом верху программы задаются макроопределения всех выводов, используемых в проекте. В функции Setup() все выводы Arduino Nano, участвующие в управлении, задаются в качестве выхода. На выводах IN1-IN4 выставляются логические нули, чтобы двигатели гарантированно не вращались в момент старта программы. В главном цикле, программа обеспечивает вращение двигателей в одном направлении, увеличивая их скорость каждые 3 секунды. Когда разгон вырастает до максимального, моторы начинают вращаться в обратном направлении, постепенно замедляя скорость. На пике сбрасывания скорости, алгоритм повторяется заново. Как видим, сложного здесь ничего нет. Теперь разберёмся с шаговым двигателем. На рисунке №5 показана схема его подключения к плате Arduino Nano.
Рисунок №5 — схема подключения шагового двигателя к Arduino Nano
В качестве демонстрационной модели использован популярный шаговый двигатель NEMA17. Он способен вращаться с частотой до 60 оборотов в минуту и имеет разрешающую способность 200 шагов на один оборот. Следует обратить внимание, что выводы ENA и ENB должны быть подтянуты к +5V путём установки перемычек на самом модуле. Таким образом управляющему сигналу будет разрешено проходить на обмотки шагового двигателя. Также, в случае использования двигателя NEMA17, напряжение его питания не должно превышать 12V. Ниже приведён пример кода с комментариями, который заставит двигатель вращаться в разные стороны, меняя своё направление после каждого полного оборота. В программе использована стандартная библиотека Stepper.h, которая значительно упрощает процесс разработки ПО для проектов с шаговыми двигателями.
Как можно заметить, библиотека сокращает код до минимума, так что разобраться в нём не составит никакого труда даже начинающему программисту.
Пример использования
Рисунок №6 — электрическая схема робота-машинки
Для приёма управляющих сигналов с ИК-пульта, в проекте будет использоваться популярная микросхема TSOP-1738. Удобство её заключается в том, что она напрямую подключается к плате Arduino и поддерживает большое разнообразие пультов управления. Цифра 38 в конце маркировки означает несущую частоту (кГц), с которой ваш пульт передаёт сигнал. Существует несколько модификаций данной микросхемы на разные несущие частоты. Ниже приведён список возможных вариантов.
- TSOP-1730 (30 кГц);
- TSOP-1733 (33 кГц);
- TSOP-1736 (36 кГц);
- TSOP-1737 (37.6 кГц);
- TSOP-1738 (38 кГц);
- TSOP-1740 (40 кГц);
- TSOP-1756 (56 кГц);
Следует помнить, что помимо несущей частоты, каждая кнопка пульта дистанционного управления имеет свой уникальный код, который предварительно необходимо считать и вставить в текст основного скетча. В данном проекте будет использоваться всего 4 кнопки: “вперёд”, “назад”, “вправо” и “влево”. Определить коды поможет библиотека IRremote .
Итак, собираем всё по вышеприведенной схеме, устанавливаем библиотеку IRremote, и для начала заливаем в Arduino этот скетч:
После запуска, в мониторе будут отображаться коды клавиш, нажатые на пульте ДУ. Нам необходимо выбрать 4 кнопки для управления движением робота и выписать их коды для дальнейшего использования в основной программе. У меня получилось следующее:
- Кнопка “Вперёд” — 0xB4B4E21D
- Кнопка “Назад” — 0xB4B412ED
- Кнопка “Вправо” — 0xB4B45AA5
- Кнопка “Влево” — 0xB4B49A65
На этом подготовка к реализации проекта завершена, можно приступать к сборке шасси. Здесь можно дать волю своей фантазии. В моём случае получилось следующее (рисунок №7).
Рисунок №7 — пример реализации шасси для робота
В пластиковом корпусе удалось разместить все необходимые элементы схемы, а именно: источник питания, Arduino Nano и модуль L298N. ИК-приемник TSOP-1738 был вынесен на верх корпуса, чтобы обеспечить надёжную связь с пультом ДУ. Ведущие колёса с моторами закреплены снизу при помощи двухстороннего скотча. В качестве переднего колеса используется поворотный ролик от кресла. На рисунке №8 показан итоговый результат сборки.
Рисунок №8 — робот готов к программированию
Ниже приведён исходный код управления роботом-машинкой с подробными комментариями.
Источник