🛒
0 товар.
0 руб.
Логотип

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

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

🪟 Проект: автоматические шторы на шаговом двигателе 28BYJ-48

Драйвер 28BYJ-48 и две кнопки

28BYJ-48 с ULN2003 сматывает или разматывает штору на фиксированное число шагов по нажатию одной из двух кнопок.

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

Шаговый двигатель 28BYJ-48 вращается не произвольно, а строго дискретными шагами — зная количество шагов на полный оборот (2048 в режиме библиотеки Stepper), можно точно рассчитать, на сколько шагов повернуть вал, чтобы смотать или размотать штору на нужную длину шнура.

Драйвер ULN2003 усиливает управляющие сигналы Arduino до тока, достаточного для обмоток двигателя. Логика проекта простая: двигатель не знает абсолютное положение шторы, он просто крутится заданное число шагов в одну сторону по кнопке «открыть» и столько же в обратную по кнопке «закрыть» — если штора изначально была полностью закрыта, этого достаточно для точного хода между крайними положениями.

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

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

  1. Драйвер ULN2003: IN1-IN4 → D8, D9, D10, D11.
  2. Кнопка «открыть»: сигнал → D2, кнопка «закрыть»: сигнал → D3.
  3. Соберите механизм намотки шнура на вал двигателя.
  4. Проверьте направление вращения на малом числе шагов перед финальной установкой.
  5. Подберите `travelSteps` опытным путём под длину карниза.

Скетч

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

#include <Stepper.h>

const int stepsPerRevolution = 2048; // стандартное значение для 28BYJ-48
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
const int openPin = 2;
const int closePin = 3;
const int travelSteps = 2048 * 3; // подберите под длину карниза

void setup() {
  pinMode(openPin, INPUT);
  pinMode(closePin, INPUT);
  myStepper.setSpeed(12); // медленнее — чтобы штора не дёргалась резко
}

void loop() {
  if (digitalRead(openPin) == HIGH) {
    myStepper.step(travelSteps);
  }
  if (digitalRead(closePin) == HIGH) {
    myStepper.step(-travelSteps);
  }
}
                

`travelSteps` подбирается под длину карниза и диаметр вала намотки — начните с малого значения и увеличивайте.

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

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

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

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

← 🔄 поворотный стол на шаговом дви…⚙️ тахометр оборотов на фотопреры… →

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

Все 2 товара сразу: 272 ₽ 245 ₽ (экономия 27 ₽)

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

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

Корзина

Поиск


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