🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


⚙️ Проект: регулятор скорости и направления DC-мотора на L298N с потенциометром

L298N — классический двухканальный драйвер для коллекторных DC-моторов, а обычный потенциометр в этом проекте превращается в плавную "ручку газа": поворот влево-вправо меняет скорость мотора, а отдельная кнопка переключает направление вращения.

Как это работает

Коллекторному DC-мотору для вращения достаточно просто подать на него постоянное напряжение — но Arduino не может напрямую дать мотору нужный ток, да и не умеет быстро менять полярность. L298N решает обе задачи: внутри него H-мост из силовых транзисторов, который по сигналам IN1/IN2 определяет полярность на выходе (а значит, направление вращения), а вход ENA через ШИМ (PWM) управляет средней мощностью, подаваемой на мотор — чем выше процент времени, когда ШИМ-сигнал "включён", тем быстрее крутится мотор.

Потенциометр — это просто делитель напряжения: его средний вывод выдаёт напряжение от 0 до опорного (5V), пропорциональное углу поворота ручки. Функция `analogRead()` переводит это напряжение в число от 0 до 1023, а `map()` пересчитывает это число в диапазон 0-255, понятный для `analogWrite()` на пине ENA.

Пошаговая сборка

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

  1. L298N: IN1 → D8, IN2 → D7, ENA → D9 (должен поддерживать ШИМ, на Uno/Nano это пины с значком ~), 12V и GND модуля → отдельный источник питания мотора (не питайте мотор от 5V-пина Arduino), OUT1/OUT2 → выводы DC-мотора.
  2. Логическое питание L298N (5V) можно взять с Arduino, если на плате драйвера снят или оставлен джампер 5V-REG согласно инструкции конкретной платы.
  3. Потенциометр: средний вывод → A0, два крайних вывода → 5V и GND (в любом порядке — от этого зависит только то, в какую сторону будет расти значение при повороте).
  4. Кнопка переключения направления: один вывод → D2, второй вывод → GND (используется внутренняя подтяжка INPUT_PULLUP).
  5. Обязательно соедините GND Arduino, GND источника питания мотора и GND модуля L298N в одной общей точке — без этого ШИМ и направление могут работать нестабильно.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

const int IN1 = 8;
const int IN2 = 7;
const int ENA = 9;
const int POT_PIN = A0;
const int DIR_BTN = 2;

bool forward = true;
bool lastBtnState = HIGH;

void setup() {
  Serial.begin(9600);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(DIR_BTN, INPUT_PULLUP);
}

void applyDirection() {
  digitalWrite(IN1, forward ? HIGH : LOW);
  digitalWrite(IN2, forward ? LOW : HIGH);
}

void loop() {
  bool btnState = digitalRead(DIR_BTN);
  if (btnState == LOW && lastBtnState == HIGH) {
    forward = !forward;       // переключаем направление только в момент нажатия, а не всё время, пока кнопка держится
    applyDirection();
    Serial.println(forward ? "Направление: вперёд" : "Направление: назад");
    delay(200);                // защита от дребезга контактов кнопки
  }
  lastBtnState = btnState;

  int potValue = analogRead(POT_PIN);     // 0..1023
  int speed = map(potValue, 0, 1023, 0, 255); // переводим в диапазон ШИМ
  analogWrite(ENA, speed);

  Serial.print("Скорость (0-255): ");
  Serial.println(speed);
  delay(50);
}

Никаких дополнительных библиотек не требуется — всё управление строится на стандартных `digitalWrite`, `analogWrite` и `analogRead`. Если мотор не крутится — сначала проверьте отдельное питание 12V на модуле, а не только логическое 5V.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 📻 FM-радиоприёмник на RDA5807M с выводом час…🔀 опрос нескольких аналоговых датчиков через… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 264 ₽ 238 ₽ (экономия 26 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA