переход к определенной позиции с постоянной скоростью с использованием accelStepper в arduino

Я пытался сделать простой двухосевой ЧПУ. Я только на начальном этапе, я просто хотел проверить библиотеку accelStepper. С помощью примера скетча ConstantSpeed ​​и Bounce я получил некоторую идею и написал следующий код.

    #include <AccelStepper.h>
    AccelStepper stepperX(4, 4, 5, 6, 7);
    AccelStepper stepperY(4, 8, 9, 10, 11);
    unsigned int X = 800;
    unsigned int Y = 600;

    void setup(){
      stepperX.setMaxSpeed(200);
      stepperX.setSpeed(10);
      stepperY.setMaxSpeed(200);
      stepperY.setSpeed(10);
      stepperX.move(200);
      stepperY.move(200);
   }

   void loop(){
      stepperX.runSpeed();
      stepperY.runSpeed();
   }

Когда я загружаю этот скетч, двигатель не работает. Но когда я меняю runSpeed() на run() и добавляю setAcceleration(), двигатель начинает работать, но с ускорением. Я не хочу разгона. Итак, есть ли способ сделать это без ускорения.


person Diwakar    schedule 29.06.2014    source источник


Ответы (1)


Из документов (единственная разница между move и moveTo заключается в том, что первый делает относительное перемещение):

void AccelStepper::moveTo (длинный абсолютный)

Установите целевое положение. Функция run() попытается переместить двигатель (максимум на один шаг за вызов) из текущей позиции в целевую позицию, установленную последним вызовом этой функции. Внимание: moveTo() также пересчитывает скорость для следующего шага. Если вы пытаетесь использовать движения с постоянной скоростью, вы должны вызвать setSpeed() после вызова moveTo().

Ключевая строка (как в круговой диаграмме): Если вы пытаетесь использовать движения с постоянной скоростью, вы должны вызвать setSpeed() после вызова moveTo().

Но побывав там (изготовив плоттер XY, 2-осевой ЧПУ), избавьте себя от многих проблем и просто используйте grbl . Он обрабатывает все координированные оси управления, анализ gcode и т. д.

person spring    schedule 29.06.2014
comment
Спасибо, понял, попробую. И если это сработает, я дам вам знать, если это не сработает, я задам больше вопросов. - person Diwakar; 30.06.2014