Здравствуйте! Не знаю, была ли такая тема ранее, но вроде не нашел. Если была, заранее извиняюсь! В общем, подключил шаговый двигатель через драйвер типа step/dir к Arduino Uno. Работает нормально. скетч прилагаю. #include <Stepper.h> const int IN5 = 2; const int IN6 = 3; const int IN7 = 4; const int IN8 = 5; const int stepsPerRevolution1 = 200; // шагов за один оборот Stepper myStepper1(stepsPerRevolution1, IN5, IN6, IN7, IN8); void setup() { myStepper1.setSpeed(1000); // скорость об/минуту } void loop() { myStepper1.step(stepsPerRevolution1); // шаг в одном направлении } Как только подключаю второй ШД, начинаются рывки на двух двигателях. #include <Stepper.h> const int IN1 = 2; const int IN2 = 3; const int IN3 = 4; const int IN4 = 5; const int IN5 = 8; const int IN6 = 9; const int IN7 = 10; const int IN8 = 11; const int stepsPerRevolution1 = 200; // шагов за один оборот const int stepsPerRevolution2 = 200; // шагов за один оборот Stepper myStepper1(stepsPerRevolution1, IN1, IN2, IN3, IN4); Stepper myStepper2(stepsPerRevolution2, IN5, IN6, IN7, IN8); void setup() { myStepper1.setSpeed(1000); // скорость об/минуту myStepper2.setSpeed(1000); // скорость об/минуту } void loop() { myStepper1.step(stepsPerRevolution1); // шаг в одном направлении { myStepper2.step(-stepsPerRevolution2); // шаг в одном направлении } }
На мой взгляд, библиотека Stepper может быть использована только для демонстрации и проверки работы двигателей. В практических приложениях применение этой библиотеки крайне ограничено из-за ряда недостатков: при управлении двигателем функции Stepper подвешивают программу, забирают все вычислительные ресурсы микроконтроллера; в один момент времени может работать только один двигатель; не поддерживаются все основные режимы коммутации обмоток; ограничены функциональные возможности.