Управление шаговым двигателем с помощью Arduino и кнопки (обучение работе с Proteus)

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

Управление шаговым двигателем с кнопки

В качестве примера используется стандартная библиотека Stepper.h, которая входит в состав Arduino IDE, а также простая кнопка, подключённая к цифровому входу с внутренней подтяжкой.

Проект подходит для начинающих и хорошо демонстрирует:

  • работу с шаговыми двигателями;
  • использование цифрового входа с INPUT_PULLUP;
  • управление направлением вращения;
  • запуск и тестирование проектов в Proteus.

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

Основная задача проекта — показать, как Arduino может управлять шаговым двигателем, изменяя направление его вращения в зависимости от нажатия кнопки.

В симуляции Proteus:

  • шаговый двигатель вращается по или против часовой стрелки;
  • кнопка используется как управляющий элемент;
  • вся логика отрабатывается в виртуальной среде;
  • Arduino не требуется подключать к компьютеру.

Необходимые компоненты

  • Arduino UNO;
  • Шаговый двигатель (4-фазный, например 28BYJ-48 или аналог);
  • Кнопка (Push Button);
  • Proteus 8 или Proteus 9 с Arduino-библиотекой;
  • HEX-файл, скомпилированный из Arduino-скетча.

Подключение шагового двигателя

В данном проекте используется шаговый двигатель с четырьмя управляющими обмотками. Они подключаются к Arduino следующим образом:

  • IN1 → пин 8;
  • IN2 → пин 9;
  • IN3 → пин 10;
  • IN4 → пин 11.

Количество шагов на оборот задаётся в переменной stepsPerRevolution. В примере используется значение 20, что удобно для наглядной симуляции в Proteus.

Подключение кнопки

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

Это упрощает схему:

  • один контакт кнопки подключён к пину 3;
  • второй контакт — к GND;
  • внешний резистор не требуется.

При нажатой кнопке на входе будет логический 0, а при отпущенной — логическая 1.

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

В начале скетча подключается библиотека:

#include <Stepper.h>

Далее создаётся объект шагового двигателя:

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

В функции setup():

  • настраивается кнопка как вход с подтяжкой;
  • задаётся скорость вращения двигателя — 40 об/мин.

В функции loop() постоянно проверяется состояние кнопки:

  • если кнопка нажата — двигатель вращается против часовой стрелки;
  • если кнопка отпущена — двигатель вращается по часовой стрелке.

Изменение направления достигается за счёт передачи положительного или отрицательного значения в функцию step().

Arduino-скетч

#include <Stepper.h>

#define SWITCH 3
const int stepsPerRevolution = 20; 

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);            

void setup() {
  pinMode(SWITCH, INPUT_PULLUP);
  myStepper.setSpeed(40);
}

void loop() {
  if (digitalRead(SWITCH) == 0) {
    myStepper.step(stepsPerRevolution);
    delay(20);
  } else {
    myStepper.step(-stepsPerRevolution);
    delay(20);
  }
}

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

Для запуска симуляции:

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

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

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

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

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

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