Сдвоенный мостовой модуль драйвера L298N можно применять для подключения двигателей постоянного тока и шаговых, напряжение питания которых лежит в интервале от 5 до 35 вольт. Кроме того, на многих модулях имеется встроенный 5В регулятор, который позволяет запитывать ваши устройства. В рамках данной теми рассмотрим также подключение драйвера L298N к плате Arduino.
Одна микросхема L298N может управлять двумя двигателями и обеспечивает максимальную токовую нагрузку до 2А на каждый из них, а если задействовать параллельное включение для одного электродвигателя, то можно поднять токовый максимальный до 4 ампер.
Одна из разновидностей модуля драйвера шагового двигателя на микросхеме L298N выглядит следующим образом:
Для двигателя постоянного тока 1 “+” или для шагового A+
Для DC 1 “-” или для шагового A -
Перемычка на 12 вольт. Снимите ее, если напряжение питания больше 12В. Питания вашего электродвигателя обеспечивается с этого выхода. Максимальное напряжение питания постоянным током 35 вольт.
GND - земля.
5 вольт, если перемычка на 12 вольт замкнута. Идеально подходит для подключения платы Arduino и т.п.
Коннектор для электродвигателя постоянного тока (ЭПТ) 1. Можно подключить к ШИМ-выходу для управления скоростью.
IN1
IN2
IN3
IN4
Коннектор для ЭПТ 2. В случае использования шагового двигателя, подключать сюда ничего не требуется.
ЭПТ 2 “+” или шаговый двигатель B+.
ЭПТ 2 “-” или шаговый B-.
Подключение одного двигателя через драйвер L298N к Arduino
Без регулировки скорости вращения
Для этого замыкаем перемычку как показано на рисунке, тем самым подключая вывод EN к +5V. При таком методе подключения драйвера мы способны регулировать скорость вращения, но в этом случае для управления одним каналом L298N будет задействованно два цифровых вывода вместо трех.
Теперь, заставим ЭД вращаться "вправо" 4 секунды, остановиться на одну секунду, вращаться "влево" 4 секунды, остановка 5 секунд и опять цикл стартует с начала.
// Подключение одного двигателя с помощью драйвера
int IN3 = 5; // Input3 подсоединен к выводу 5
int IN4 = 4;
void setup()
{
pinMode (IN4, OUTPUT);
pinMode (IN3, OUTPUT);
}
void loop()
{
// На пины "IN" поданы разноименные сигналы, ЭД вращается вправо (001)
digitalWrite (IN4, HIGH);
digitalWrite (IN3, LOW);
delay(4000);
// На оба вывода "IN" поступают сигналы одинаковой полярности, ЭД останавливается
digitalWrite (IN4, LOW);
delay(1000);
// На пару выводов "IN" поданы разноименные сигналы (но уже противоположные относительно условия 001), ЭД вращается влево
digitalWrite (IN3, HIGH);
delay(4000);
// Опять на обоих выводах "IN" одна полярность, ЭД не крутится
digitalWrite (IN3, LOW);
delay(5000);
}
С регулировкой скорости вращения
В данном примере мы подключим управляющий вывод драйвера L298N ENB к выводу ШИМ (D3) Ардуино. После этого можно управлять скоростью двигателя, изменяя уровень скважности посылаемого ШИМ сигнала. Значения скважности в програмном коде задаются с помощью функцией analogWrite(pin, число), где число изменяется в диапазоне от 0 до 255, прямо пропорционально скважности. Для наглядности в рассматриваемом примере, подобраны четыре произвольных значения при которых ЭД стартует с низких оборотов, затем набирает средние, а только потом разгоняется на максимальные, а после этого останавливается.
А теперь немного программы:
// Подключение одного двигателя с регулировкой скорости через L298N
int IN3 = 5; // Input3 подсоединен к выводу 5
int IN4 = 4;
int ENB = 3;
void setup()
{
pinMode (ENB, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop()
{
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
// подаем на управляющий контакт ENB ШИМ сигнал
analogWrite(ENB,55);
delay(2000);
analogWrite(ENB,105);
delay(2000);
analogWrite(ENB,255);
delay(2000);
// Останавливаем ЭД на ENB - низкий уровень.
// Состояние на "IN" не имеет значения
analogWrite(ENB,0);
delay(5000);
}
Подключение двух двигателей к Arduino с модулем L298N
Схема соединения, модуля, ардуино и ЭД
В приведенном ниже программном коде два электродвигателя будут крутится в обе стороны с плавным нарастанием скорости вращения.
int IN1 = 5;
int IN2 = 4;
int IN3 = 3;
int IN4 = 2;
int ENA = 9;
int ENB = 3;
int i;
void setup()
{
pinMode (EN1, OUTPUT);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (EN2, OUTPUT);
pinMode (IN4, OUTPUT);
pinMode (IN3, OUTPUT);
}
void loop()
{
digitalWrite (IN2, HIGH);
digitalWrite (IN1, LOW);
digitalWrite (IN4, HIGH);
digitalWrite (IN3, LOW);
for (i = 50; i <= 180; ++i)
{
analogWrite(EN1, i);
analogWrite(EN2, i);
delay(30);
}
analogWrite (EN1, 0);
analogWrite (EN2, 0);
delay(500);
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
for (i = 50; i <= 180; ++i)
{
analogWrite(EN1, i);
analogWrite(EN2, i);
delay(30);
}
analogWrite (EN1, 0);
analogWrite (EN2, 0);
delay(8000);
Управляем шаговым двигателем с помощью Arduino + L298N
Ниже показана типовая схема подключения биполярного шагового двигателя на 12 В к драйверу L298N и этого драйвера к плате Arduino UNO. В первую очередь соединяем пары проводов A и B шагового двигателя с выводами MA+, MA-, MB+ и MB- модуля L298N. Внимательно ознакомьтесь с документацией к шаговому двигателю, чтобы правильно вычислить пары A+, A-, B+ и B-. Пины IN1, IN2, IN3 и IN4 подключите к цифровым портам Arduino D8, D9, D10 и D11. Далее соедините GND Arduino и модуля друг с другом, а вывод питания Vin Ардуино с +5V OUT. Иподключите внешний блок питания 12В/1А к линиям +5V OUT и GND драйвера.
Для проверки работоспособности схемы загрузите код stepper_oneRevolution, из библиотеки в Arduino IDE, он находится в меню: File > Examples > Stepper.
Небольшие пояснения к коду для управления шаговым двигателем в Ардуино:
const int stepsPerRevolution = 200; // измените это значение на ваше количество шагов за один поворот шагового двигателя вала
myStepper.setSpeed(60); // скорость вращения
myStepper.step(stepsPerRevolution); // вращение по часовой стрелке
myStepper.step(-stepsPerRevolution); // вращение против часовой стрелки
Работу схемы подключения шагового двигателя можете посмотреть в видео ниже: