Оформи код соответствующим тэгом
Добрый день.
Подскажите, в чем может быть проблема некорректной работы шагового двигателя
Есть:
пытаюсь простым скетчем (ниже) задать скорость 60 об/мин
В результате двигатель дребезжит, нужной скорости вращения не выдает, иногда не вращается в нужную сторону. Опытным путем установлено, что стабильная работа начинается только если задать steps = 1100
#include <Stepper.h> // подключение стандартной библиотеки Stepper
const int steps = 200; // переменной с именем «steps» указываем количество шагов на оборот, это 200, т.к. 1,8 градуса за шаг.
Stepper ShVP(steps, 8, 9, 10, 11); // указываем к выводам подключен шаговый двигатель
// В void setup устанавливаем скорость шагового двигателя, вызывая функцию «setSpeed()»
void setup()
{
ShVP.setSpeed(60);
}
// В void loop вызываем функцию «step()», которая вращает двигатель на определенное количество шагов со скоростью, определяемой в функцией setSpeed().
void loop()
{
ShVP.step(2000); // (2000 шагов) по часовой стрелке
delay(1000);
ShVP.step(-2000); // (2000 шагов) против часовой стрелке
delay(1000);
}
Подскажите, в чем может быть проблема некорректной работы шагового двигателя
Есть:
- шаговый двигатель 57HS56-3004A08-D21 (Nema 23), угловой шаг 1,8,
- драйвер шагового двигателя TB4240, протокол Step-Dir-Enable, деление шага от 1 до 1/16, выставлен шаг 1/1
- arduino uno
пытаюсь простым скетчем (ниже) задать скорость 60 об/мин
В результате двигатель дребезжит, нужной скорости вращения не выдает, иногда не вращается в нужную сторону. Опытным путем установлено, что стабильная работа начинается только если задать steps = 1100
#include <Stepper.h> // подключение стандартной библиотеки Stepper
const int steps = 200; // переменной с именем «steps» указываем количество шагов на оборот, это 200, т.к. 1,8 градуса за шаг.
Stepper ShVP(steps, 8, 9, 10, 11); // указываем к выводам подключен шаговый двигатель
// В void setup устанавливаем скорость шагового двигателя, вызывая функцию «setSpeed()»
void setup()
{
ShVP.setSpeed(60);
}
// В void loop вызываем функцию «step()», которая вращает двигатель на определенное количество шагов со скоростью, определяемой в функцией setSpeed().
void loop()
{
ShVP.step(2000); // (2000 шагов) по часовой стрелке
delay(1000);
ShVP.step(-2000); // (2000 шагов) против часовой стрелке
delay(1000);
}