Как изменить направление шагового двигателя с помощью библиотеки AccelStepper?
Я использую шаговый двигатель Nema 17 (200 шагов) и двигатель DRV8825. Водитель. Это конфигурация, которую я использую:
Я использую источник питания 9 В. DirPin подключен к контакту 3 на плате Arduino, а мой StepPin — к контакту 2.
Я пытаюсь переместить двигатель на 100 шагов по часовой стрелке, а затем на 100 шагов против часовой стрелки, чтобы он вернулся в исходное положение. Это код, который я использую:
#include <AccelStepper.h>
#define dirPin 3
#define stepPin 2
#define motorInterfaceType 1
int SPR = 200;
AccelStepper stepper(motorInterfaceType, stepPin, dirPin);
void setup() {
pinMode(dirPin,OUTPUT);
pinMode(stepPin,OUTPUT);
// поместите сюда свой код установки для однократного запуска:
stepper.setMaxSpeed(200);
stepper.setAcceleration(30);
}
void loop() {
// поместите сюда свой основной код для многократного запуска:
stepper.moveTo(100);
stepper.runToPosition();
delay(1000);
stepper.moveTo(-100);
stepper.runToPosition();
delay(1000);
}
У меня две проблемы:
Прежде чем переместить мотор на 100 шагов, он делает пару шагов (например, 15°), а затем начинает двигаться, сначала 100 шагов, а затем 200 шагов. Это будет первая итерация, и я не понимаю, почему она перемещает эти 200 шагов. А затем, в следующих итерациях, мотор делает всего 200 шагов.
Он движется только в одном направлении. Я не могу заставить его двигаться против часовой стрелки.
@Michael Junior, 👍2
Обсуждение1 ответ
Функция moveTo()
принимает абсолютные позиции, поэтому, если вы хотите двигаться в обоих направлениях, вам следует соответствующим образом настроить целевые позиции.
Вы можете изменить функцию loop()
следующим образом:
void loop() {
stepper.moveTo(100);
stepper.runToPosition();
delay(1000);
stepper.moveTo(0); // Возвращаемся в исходную позицию
stepper.runToPosition();
delay(1000);
}
- Как правильно использовать микрошаговый драйвер с шаговым двигателем более низкого напряжения
- Проблемы с библиотекой AccelStepper/Multistepper
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Запустить два степпера одновременно
- Могу ли я запретить библиотеке Stepper удерживать двигатель?
- Шаговый двигатель не работает с платой A4988
- Справка по библиотеке AccelStepper - Одновременное управление двигателем
- Как позволить шаговому двигателю вращаться постоянно?
на схеме подключения показаны соединения, отличные от кода, @jsotola