Звоните нам!
Звоните нам!
Связаться с нами
zakaz@robot-kit.ru
Москва, Жулебинский бульвар д.36 корп.1
Пн-Пт 11:00–19:00
Сб-Вс 11:00–17:00
0Избранное0Сравнить
0Корзина пуста

Корзина

Ваша корзина пуста

Каталог товаров
0Избранное0Сравнить
0Корзина пуста

Корзина

Ваша корзина пуста

Драйвер RKP-MDL298-01A-V2 двухканальный на L298N

Статья о двухканальном драйвере моторов RKP-MDL298-01A-V2 на микросхеме L298N. Подключение к Ардуино, подключение DC-моторов, примеры программного кода.

Драйвер моторов на базе микросхемы L298N позволяет управлять двумя моторами постоянного тока либо шаговым двигателем с потребляемым током до 2 Ампер.

Драйвер моторов RKP-01A-V2 двухканальный L298N


В отличии от микросхемы L293D, в микросхеме L298N не встроены защитные диоды, их необходимо устанавливать в обвязку микросхемы дополнительно (8 штук по бокам).

По функционалу микросхема L298N полностью идентична микросхеме L293D. Мы видим те же управляющие выводы. Чередование разноименных сигналов (высокий логический уровень или низкий) на парах выводов IN1, IN2 и IN3, IN4 задают направление вращения моторов.

Выводы ENABLE A, B (ENA привязан к IN1, IN2. ENB к IN3, IN4) отвечают за раздельное управление каналами. 

Могут использоваться в двух режимах:

Условно "активном" режиме, когда ими будет управлять контроллер (рис. 1) - высокий логический уровень разрешает вращение моторов, низкий запрещает вне зависимости от состояния выводов "IN". Для регулировки скорости моторов, на "EN" выводы подается ШИМ (PWM) сигнал.

Условно "пассивном" режиме, просто притянув выводы "EN" к высокому уровню (+5V). Для этого на плате, рядом с выводами ENA и ENB находятся штырьки, соединенные с +5V. Замыкаем выводы с помощью джамперов (рис. 2). В данном режиме мы не сможем регулировать скорость двигателей, они будут всегда вращаться в полную скорость (за то для управления экономится 2 вывода контроллера). Направление вращения будет задаваться по-прежнему, а вот для остановки в данном варианте, состояние выводов будет уже играть роль. Для остановки нужно будет подавать одноименные сигналы на выводы "IN".

В программных кодах в продолжении статьи все будет прокомментировано.

Драйвер моторов RKP-01A-V2 на L298N распиновка

Клеммник подачи питания и работа стабилизатора.

Подача питания драйвер RKP-01A-V2 на L298N

Разъем “+12V” предназначен для подачи питания на моторы и одновременно, при одетом джампере, подает питание на стабилизатор, который выдает +5V для питания логики драйвера.

Выходит, при таком варианте, не нужно тянуть лишний провод на разъем +5V.

Маркировка именно “+12V” связана с тем, что напряжение питания моторов может лежать в диапазоне от 5V до 35V, в то время как максимальное входное напряжение стабилизатора 12V. То есть, при одетом джампере, подача свыше 12V может спалить стабилизатор.

Подача питания драйвер RKP-01A-V2 на L298N

Как мы уже поняли, маркировка “+12V” носит предупредительно-информативный характер.

При напряжении питания свыше 12V, без опаски подвеем нужное напряжение на данный вывод, но не забываем снять джампер.

Теперь напряжение не поступает на стабилизатор и не сможет повредить его, но теперь необходимо подать внешнее +5V.


Подключение моторов к модулю драйвера моторов на L298N

Начнем с подключения одного мотора, с притянутым к +5V выводом ENB.

Драйвер RKP-01A-V2 на L298N подключение DC мотора

Заставим моторчик вращаться "вправо" 4 секунды, остановиться на 0.5 секунды, вращаться "влево" 4 секунды, остановка 5 секунд и снова цикл повторяется.

Пример программного кода

int IN3 = 5; // Input3 подключен к выводу 5 
int IN4 = 4;

void setup()
{
  pinMode (IN4, OUTPUT);
  pinMode (IN3, OUTPUT);
}
void loop()
{
  // На пару выводов "IN" поданы разноименные сигналы, мотор вращается   
  digitalWrite (IN4, HIGH);
  digitalWrite (IN3, LOW); 
  delay(4000);
  // На пару выводов "IN" поданы одноименные сигналы, мотор не вращается 
  digitalWrite (IN4, LOW); 
  delay(500);
  // На пару выводов "IN" поданы разноименные 
  // (и уже противоположные относительно первого случая) сигналы, мотор вращается  
  // относительно первого случая) сигналы, мотор вращается в другую сторону
  digitalWrite (IN3, HIGH);
  delay(4000);
  // Снова на выводах "IN" появились одноименные сигналы, мотор не вращается 
  digitalWrite (IN3, LOW); 
  delay(5000);
  
Драйвер RKP-01A-V2 на L298N подключение DC мотора

В данном примере мы подсоединили ENB к выводу ШИМ (D3), и задействуем возможность драйвера управлять скоростью, меняя скважность посылаемого ШИМ сигнала. Значения скважности задаются функцией analogWrite (pin, число) , где число изменяется от 0 до 255, прямо пропорционально скважности сигнала. Для наглядности, подобраны четыре значения, при которых двигатель стартует с низких оборотов, набирает средние, выходит на максимальные и не вращается.

Пример программного кода

int IN3 = 5; // Input3 подключен к выводу 5 
int IN4 = 4;
int ENB = 3;
void setup()
{
 pinMode (ENB, OUTPUT); 
 pinMode (IN3, OUTPUT);
 pinMode (IN4, OUTPUT);
}
void loop()
{
  // На пару выводов "IN" поданы разноименные сигналы, мотор готов к вращению
  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);
}

Ну и напоследок подключим два двигателя с регулировкой скорости.

Драйвер RKP-01A-V2 на L298N подключение DC моторов

В приведенном ниже скетче два мотора будут вращаться в обе стороны с плавным нарастанием скорости.

Пример программного кода

int IN1 = 5; // Input1 подключен к выводу 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);
}
Рекомендуемые товары
0Избранное
Товар в избранных
0Сравнение
Товар в сравнении
0Просмотренные
0Корзина
Товар в корзине