Управление двумя двигателями модулем L298N с Arduino (обучение работе с Proteus)

В этой статье показан способ управления двумя моторами с использованием Arduino и драйвера L298N.
Проект создан специально для обучения работе с симулятором Proteus и демонстрирует управление двигателями в трёх режимах: вперёд, назад и стоп с использованием трёх кнопок.

Arduino с L298N и кнопками

Скетч реализует управление скоростью и направлением вращения двух моторов через модуль L298N и три кнопки. Проект помогает понять, как Arduino взаимодействует с внешними исполнительными устройствами, реализуя базовые алгоритмы движения.

Назначение проекта

Цель проекта — показать, как можно управлять двигателями постоянного тока через драйвер L298N, используя простые элементы управления:

  • три кнопки для выбора режима работы (вперёд, назад, стоп);
  • правильное использование цифровых выходов для управления направлением вращения;
  • создание безопасной логики остановки моторов при необходимости.

Такой подход используется в робототехнике, автоматике и учебных стендах для изучения управления двигателями постоянного тока через Arduino.

Используемые компоненты

  • Arduino UNO;
  • Драйвер моторов L298N;
  • Два двигателя постоянного тока;
  • Три кнопки;
  • Proteus 8 или 9 с поддержкой Arduino.

Принцип работы программы

В проекте три кнопки подключены к цифровым входам Arduino с использованием INPUT_PULLUP, что упрощает схему и исключает необходимость внешних подтягивающих резисторов.

Алгоритм работы прост и эффективен:

  • Нажатие кнопки «вперёд» включает оба мотора на заданной скорости и направлении;
  • Нажатие кнопки «назад» меняет направление вращения моторов;
  • Нажатие кнопки «стоп» останавливает оба мотора мгновенно;

Организация кода

Программа разделена на три отдельные функции:

  • motor_maju() — движение вперёд;
  • motor_mundur() — движение назад;
  • motor_stop() — остановка двигателей.

Главный цикл loop() проверяет состояние кнопок и вызывает соответствующую функцию. Использование отдельной функции для каждого режима облегчает чтение кода и его модификацию.

Arduino-скетч

//pin arduino ke module L298N
#define enA 10
#define in1 9
#define in2 8
#define in3 7
#define in4 6
#define enB 5

//tombol kontrol
#define btn_fwd     4
#define btn_bkwd    3
#define btn_stop    2

//nilai pwm (kecepatan putar)
int kecepatan=255;

void setup() {
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(enB, OUTPUT);
  
  pinMode(btn_fwd, INPUT_PULLUP);
  pinMode(btn_bkwd, INPUT_PULLUP);
  pinMode(btn_stop, INPUT_PULLUP);
  motor_stop();
  delay(500);
}

void loop() {
  //tombol maju ditekan
  if(!digitalRead(btn_fwd)){
    motor_maju();
  }

  //tombol mundur ditekan
  if(!digitalRead(btn_bkwd)) {
    motor_mundur();
  }

  //tombol stop ditekan
  if (!digitalRead(btn_stop)) {
    motor_stop();
  }
}

void motor_maju(){
  analogWrite (enA, kecepatan);
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  analogWrite (enB, kecepatan);
}
void motor_mundur(){
  analogWrite (enA, kecepatan);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  analogWrite (enB, kecepatan);
}
void motor_stop(){
  //kecepatan=0
  analogWrite (enA, 0);
  analogWrite (enB, 0);
}

Работа проекта в Proteus

В симуляции Proteus нажатие кнопок приводит к мгновенному изменению направления или остановке моторов. Проект позволяет визуально наблюдать работу драйвера L298N и динамику изменения состояния моторов. Arduino подключать к компьютеру не требуется — вся работа выполняется внутри симулятора.

Запуск проекта в Proteus

  • распакуйте архив с проектом;
  • откройте файл .pdsprj;
  • проверьте путь к файлу .hex в свойствах Arduino;
  • нажмите Run Simulation;
  • нажимайте кнопки и наблюдайте работу двигателей в трёх режимах.

Если что-то не работает

Если возникают проблемы с запуском проекта или непонятен принцип работы, рекомендуется пройти базовый урок по Proteus.

Подробно разобран первый проект в Proteus:
Первый проект в Proteus — мигание светодиода

📁 Скачать примеры