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

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


🔄 Проект: переключение направления DC-мотора кнопкой через драйвер L9110S

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

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

L9110S содержит два независимых H-моста на одной маленькой плате — простые электронные схемы, каждая из которых может подать на мотор напряжение в одной из двух полярностей (или ничего), управляясь парой логических сигналов. Для вращения в одну сторону подаётся HIGH на один управляющий вход и LOW на другой, для вращения в обратную сторону — наоборот; одновременный HIGH или одновременный LOW на обоих входах останавливает мотор (короткое замыкание через мотор в режиме торможения или свободного вращения, в зависимости от конкретной комбинации).

В отличие от уже разобранного на сайте L298N (который может управлять более мощными моторами, но физически крупнее и имеет отдельный вход ШИМ для скорости), L9110S проще и компактнее, но рассчитан на заметно меньший ток — для небольших моторчиков в хобби-проектах (мини-вентиляторы, маленькие модели) этого более чем достаточно.

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

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

  1. L9110S: A-IA → D2, A-IB → D3 Arduino (управление одним из двух каналов — для одного мотора используется только один канал), VCC → питание мотора (обычно 5V, проверьте характеристики своего мотора), GND → GND.
  2. Мотор подключите к выходным клеммам канала A (A-OA, A-OB).
  3. Кнопка: один вывод → D4, второй → GND (используется внутренняя подтяжка INPUT_PULLUP).

Скетч

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

const int IA = 2;
const int IB = 3;
const int BUTTON_PIN = 4;

bool forward = true;
bool lastButtonState = HIGH;

void setMotorDirection(bool goForward) {
  digitalWrite(IA, goForward ? HIGH : LOW);
  digitalWrite(IB, goForward ? LOW : HIGH);
}

void setup() {
  Serial.begin(9600);
  pinMode(IA, OUTPUT);
  pinMode(IB, OUTPUT);
  pinMode(BUTTON_PIN, INPUT_PULLUP);

  setMotorDirection(forward);
}

void loop() {
  bool buttonState = digitalRead(BUTTON_PIN);

  if (lastButtonState == HIGH && buttonState == LOW) { // поймали момент нажатия
    forward = !forward;
    setMotorDirection(forward);
    Serial.println(forward ? "Вперёд" : "Назад");
    delay(50); // простая защита от дребезга контактов кнопки
  }

  lastButtonState = buttonState;
}

Дополнительных библиотек не требуется — только `digitalWrite()` и `digitalRead()`. Код реагирует именно на момент нажатия (переход HIGH→LOW), а не на удержание кнопки — направление меняется один раз за одно нажатие, а не постоянно пока кнопка зажата.

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

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

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

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

← ↕️ безопасное подключение "голого" ESP-01 к 5…🔌 автономный сетевой узел управления DC-мото… →

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

Все 2 товара сразу в корзину: 137 ₽ 123 ₽ (экономия 14 ₽)

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

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

Корзина


Поиск



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