Программирование шагового двигателя перемещает фиксированный шаг, пока не достигнет цели

У меня есть шаговый двигатель, и я пытаюсь запрограммировать его вот так, но я застрял, так как я новичок в Arduino. 1. Целевое значение установлено на 2048, что означает, что двигатель должен совершить 2048 шагов. 2. Я программирую двигатель на выполнение 200 шагов каждый раз, каждые 200 шагов останавливаются на секунду, пока не достигнет 2048.

Я использовал библиотеку AccelStepper для программирования своего двигателя и обнаружил, что мне очень сложно программировать таким образом. Я не прошу делать домашнее задание, но я не знаю, с чего начать. Просто хотел спросить, какой метод можно использовать, чтобы запрограммировать двигатель на такую работу. Спасибо.

, 👍0

Обсуждение

Пробовали ли вы изменить один из примеров, прилагаемых к библиотеке?, @Rudy


1 ответ


Лучший ответ:

1

Я бы начал с примера блокировки, поставляемого с библиотекой. Добавьте нужные вам задержки, нужные шаги/расстояние. Нижеследующее просто, но грубо. Это код блокировки вызовов. Он может выполнить только следующую последовательность, но иногда этого достаточно.

Лучше было бы использовать условный цикл для достижения конечной цели. Цикл переместится на 200, затем задержится на 1 секунду и вычтет перемещенную сумму. Повторяйте цикл, пока не израсходуете все необходимое расстояние. Но сначала я предлагаю сохранить его простым и просто заставить его работать со встроенными последовательностями.

#include <AccelStepper.h>
// Определить шаговый двигатель и контакты, которые он будет использовать
AccelStepper stepper; // По умолчанию AccelStepper::FULL4WIRE (4 контакта) на 2, 3, 4, 5
void setup()
{  
    stepper.setMaxSpeed(200.0);
    stepper.setAcceleration(100.0);
}
void loop()
{    
    stepper.runToNewPosition(0);
    delay(1000);
    stepper.runToNewPosition(200);
    delay(1000);
    stepper.runToNewPosition(200);
    delay(1000);
    stepper.runToNewPosition(200);
}
,

Спасибо! Я прочитаю первым. Ценить это!, @Geddoe