Как заставить шаговый двигатель вращаться по часовой стрелке и против часовой стрелки
Я новичок в Arduino, поэтому мне нужна ваша помощь, чтобы понять, почему мой шаговый двигатель не вращается по часовой стрелке и против часовой стрелки. Все, что я мог сделать, это заставить его вращаться только в одном направлении.
Я использую библиотеку AccelStepper
Вот мой код:
#include <AccelStepper.h>
//Определяем подключения шагового двигателя
#define dirPin 4
#define stepPin 14
//Создаем шаговый объект
AccelStepper stepper(1,stepPin,dirPin); //тип моторного интерфейса должен быть установлен на 1 при использовании драйвера.
void setup()
{
stepper.setMaxSpeed(1200); //максимальное количество шагов в секунду
}
void loop()
{
stepper.setSpeed(1200); // шагов в секунду
stepper.runSpeed(); // двигаем двигатель с постоянной скоростью, заданной setSpeed()
}
Я пытался добавить задержку и код против часовой стрелки, но это не работает.
#include <AccelStepper.h>
//Определяем подключения шагового двигателя
#define dirPin 4
#define stepPin 14
//Создаем шаговый объект
AccelStepper stepper(1,stepPin,dirPin); //тип моторного интерфейса должен быть установлен на 1 при использовании драйвера.
void setup()
{
stepper.setMaxSpeed(1200); //максимальное количество шагов в секунду
}
void loop()
{
Serial.println("clockwise");
stepper.setSpeed(1200); // шагов в секунду
stepper.runSpeed(); // двигаем двигатель с постоянной скоростью, заданной setSpeed()
delay(1000);
Serial.println("counterclockwise");
stepper.setSpeed(-1200); // шагов в секунду
stepper.runSpeed(); // двигаем двигатель с постоянной скоростью, заданной setSpeed()
delay(1000);
}
@Hardy, 👍0
Обсуждение2 ответа
С веб-сайта AccelStepper: ссылка
Скорость более 1000 шагов в секунду ненадежна
Попробуйте изменить скорость на более низкое значение и сообщите нам, каков результат.
спасибо за указание, но все равно такое же поведение, @Hardy
Здравствуйте, это ссылка на библиотечные функции, доступные в библиотеке accelstepper.
Перейдите по ссылке, она предоставит вам проблемы с вашим кодом и пример для вашего приложения, например, @smajli сказал, что шаги более 1000 ненадежны, здесь вы можете увидеть setSpeed(float )
функция, где установка отрицательного или положительного знака выбирает направление, а значение устанавливает скорость вращения.
чем вы за ваш вклад, но я все еще пытаюсь понять функции :( я изменил скорость на 1000 и поведение все еще такое же, @Hardy
Вы пробовали -500 и 500?, @Vaibhav
да, приятель, кажется, я не могу использовать функцию задержки в цикле, но я не понимаю, как использовать другую функцию этой библиотеки или использовать функцию миллиса, @Hardy
- Accelstepper запустить степпер назад
- Управление направлением шагового двигателя с помощью кнопок.
- Разгон шагового двигателя
- Использование кнопки для поворота шагового двигателя на 90 градусов.
- Изменение ШИМ на Arduino Mega, контакты 9 и 10 на 20–25 кГц
- Установить низкий уровень мощности или включить контакт драйвера шагового двигателя, чтобы шаговый двигатель не нагревался.
- Шаговый двигатель не работает с платой A4988
- Как запустить шаговый двигатель через последовательную связь
Попробуйте использовать более низкие значения для вращения, скажем, 150. Некоторые драйверы легко перегреваются при использовании более высоких скоростей., @smajli
он вращается только в одном направлении
... в каком направлении?, @jsotolaНет, дело не в нагреве или более высокой скорости. Если я поставлю 1200, он будет двигаться точно по часовой стрелке, если я поставлю значение -1200, он будет двигаться идеально против часовой стрелки. Но если я попытаюсь использовать оба, это создаст проблему, @Hardy
Какое оборудование вы используете? Я имею в виду, что такое драйвер шагового двигателя? Есть драйверы, которые легко перегреваются и (из-за встроенной защиты от перегрева) перестают работать., @smajli
@smajli дело не в нагреве я что-то пропустил с кодом если я вращаю в 1 направлении только с кодом по умолчанию, он работает нормально. Двигатель — шаговый двигатель NEMA17 5,5 кг/см, @Hardy