Управление шаговым двигателем с помощью 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 — мигание светодиода