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

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

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

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

L298N распиновка

L298N power

 

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

Вместо одного мотора будем подключать светодиод на 12В (см. видео ниже). Можете также использовать светодиодную ленту, только учтите что модуль при токе более более 2 ампер будет сильно греться.

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

 

Скетч

int IN1 = 7;
int IN2 = 6;
int IN3 = 5;
int IN4 = 4;
int ENA = 9;  //ШИМ выход 1
int ENB = 3;  //ШИМ выход 2
int i;
int spd = 10;  //задержка при изменении скорости, чем меньше тем быстрее 

void setup() {
  pinMode (ENA, OUTPUT);  //ШИМ выход 1
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (ENB, OUTPUT);  //ШИМ выход 2
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
  digitalWrite (IN3, LOW);  //полярность для светодиода "-"
  digitalWrite (IN4, HIGH);  //полярность для светодиода "+"
}

void loop() {
  digitalWrite (IN2, HIGH);  //полярность для мотора "-"
  digitalWrite (IN1, LOW);  //полярность для мотора "+"
  for (i = 0; i < 250; i++)  {  //цикл разгона
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  delay(2000);  //ждем 2 сек
  for (i = 250; i > 0; i--)  {  //цикл торможения
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  analogWrite (ENA, 0);
  analogWrite (ENB, 0);
  delay(500);
  digitalWrite (IN1, HIGH);
  digitalWrite (IN2, LOW);
  for (i = 0; i < 250; i++) {
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  delay(2000);
  for (i = 250; i > 0; i--) {
    analogWrite(ENA, i);
    analogWrite(ENB, i);
    delay(spd);
  }
  analogWrite (ENA, 0);
  analogWrite (ENB, 0);
  delay(3000);
}

 

Видео

Добавить комментарий


Защитный код
Обновить