
Интернет-магазин «Неглупый Дом»
Комплект 28BYJ-48 с драйвером ULN2003 точно поворачивает стол на заданный угол, а энкодер KY-040 задаёт этот угол вращением — удобно для фотосъёмки предметов на 360° или демонстрационных подставок.
28BYJ-48 — это редукторный шаговый двигатель: внутри корпуса стоит маленький шаговый мотор и понижающий редуктор, поэтому для полного оборота выходного вала требуется около 2048 шагов (а не несколько сотен, как у "голых" шаговых моторов без редуктора). Драйвер ULN2003 — это просто набор транзисторных ключей, которые по сигналам Arduino включают нужные обмотки в правильной последовательности.
Энкодер KY-040 работает по-другому: это не датчик абсолютного угла, а генератор импульсов при вращении — каждый "щелчок" даёт короткий сигнал на выводах CLK и DT, а их взаимный сдвиг по фазе определяет направление вращения. Код накапливает эти щелчки в переменную `targetSteps`, а затем стол "догоняет" её, шагая до совпадения `currentSteps` с `targetSteps`.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, я языковая
// модель, а не специализированный кодер, могу что-то упустить.
#include <Stepper.h>
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
const int clkPin = 2;
const int dtPin = 3;
int lastClk;
long targetSteps = 0;
long currentSteps = 0;
void setup() {
Serial.begin(9600);
pinMode(clkPin, INPUT);
pinMode(dtPin, INPUT);
lastClk = digitalRead(clkPin);
myStepper.setSpeed(10);
}
void loop() {
int clk = digitalRead(clkPin);
if (clk != lastClk) {
int stepsPerClick = stepsPerRevolution / 100; // примерно 1% оборота за щелчок
if (digitalRead(dtPin) != clk) {
targetSteps += stepsPerClick;
} else {
targetSteps -= stepsPerClick;
}
Serial.print("Целевой угол (шагов): ");
Serial.println(targetSteps);
}
lastClk = clk;
long diff = targetSteps - currentSteps;
if (diff != 0) {
myStepper.step(diff > 0 ? 1 : -1);
currentSteps += (diff > 0 ? 1 : -1);
}
}
`stepsPerRevolution = 2048` — стандартное значение для 28BYJ-48 в полушаговом режиме через библиотеку Stepper. Порядок пинов IN1/IN3/IN2/IN4 в конструкторе важен для правильного направления вращения.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 308 ₽ 277 ₽ (экономия 31 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.